package Ġa ode v . blue . r xs andbox . model . operator . observable . transform Ċ Ċ import Ġa ode v . blue . r xs andbox . model . Config Ċ import Ġa ode v . blue . r xs andbox . model . Observable T Ċ import Ġa ode v . blue . r xs andbox . model . functions . Function 2 Ċ import Ġa ode v . blue . r xs andbox . model . operator . Operator ĊĊ Ċ class ĠObservable Scan < T Ġ: ĠAny , Ġout ĠR Ġ: ĠAny >( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinitial Value : ĠR , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġoperation : ĠFunction 2 < R , ĠT , ĠR > Ċ ) Ġ: ĠOperator Ġ{ ĊĊĠĠĠ Ġfun Ġapply ( input : ĠObservable T < T >): ĠObservable T < R > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable T ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . events . fold ( listOf ( Observable T . Event ( 0 f , Ġinitial Value ))) Ġ{ Ġacc , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġoperation . apply ( acc . last (). value , Ġevent . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc Ġ+ ĠObservable T . Event ( event . time , ĠnewValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . termination ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġexpression : ĠString Ġ= Ġ" scan ($ initial Value ) Ġ{ Ġ${ operation . expression } Ġ}" ĊĊĠĠĠ Ġoverride Ġval Ġdoc Url : ĠString ? Ġ= Ġ"${ Config . operator Doc Url Prefix } scan . html " Ċ } Ċ