package Ġnl . dev ha an . kotlin po et dsl . code block Ċ Ċ import Ġnl . dev ha an . kotlin po et dsl . Code Block Level Ċ import Ġnl . dev ha an . kotlin po et dsl . helpers . Block Wrapper Ċ Ċ private Ġfun Ġ_ create Start Cont roll Block ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġparts : ĠAny , ĊĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script Ċ ) Ġ= Ġcreate Lazy Component ( true ) Ġ{ Ġbuilder Ġ-> ĊĠĠĠ Ġbuilder . begin Control Flow ( condition , Ġ* parts ) ĊĠĠĠ Ġbuilder . add Code ( statements ) ĊĠĠĠ Ġbuilder . end Control Flow () Ċ } Ċ Ċ private Ġfun Ġ_ forEach ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġparts : ĠAny , ĊĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script Ċ ) Ġ= Ġ_ create Start Cont roll Block ( ĊĠĠĠĠĠĠĠ Ġ" for Ġ($ condition )", ĊĠĠĠĠĠĠĠ Ġ* parts , ĊĠĠĠĠĠĠĠ Ġstatements Ġ= Ġstatements Ċ ) Ċ Ċ private Ġfun Ġ_ repeat While ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġparts : ĠAny , ĊĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script Ċ ) Ġ= Ġ_ create Start Cont roll Block ( ĊĠĠĠĠĠĠĠ Ġ" while Ġ($ condition )", ĊĠĠĠĠĠĠĠ Ġ* parts , ĊĠĠĠĠĠĠĠ Ġstatements Ġ= Ġstatements Ċ ) Ċ Ċ private Ġfun Ġ_ repeat ( ĊĠĠĠĠĠĠĠ Ġtimes : ĠInt , ĊĠĠĠĠĠĠĠ Ġarg : ĠString , ĊĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script Ċ ) Ġ= Ġ_ create Start Cont roll Block ( ĊĠĠĠĠĠĠĠ Ġ" repeat ($ times ) Ġ{" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ$ arg Ġ-> ". take Unless Ġ{ Ġarg Ġ== Ġ" it " Ġ}. or Empty (), ĊĠĠĠĠĠĠĠ Ġstatements Ġ= Ġstatements Ċ ) Ċ Ċ class ĠLazy Repeat Condition ( val Ġstatements : ĠCode Block Build Script ) Ġ{ ĊĠĠĠ Ġfun Ġfor E ver () Ġ= Ġas Long As (" true ") ĊĠĠĠ Ġin fix Ġfun Ġas Long As ( condition : ĠString ) Ġ= Ġas Long As ( condition , Ġ* empty Array ()) ĊĠĠĠ Ġfun Ġas Long As ( condition : ĠString , Ġvar arg Ġparts : ĠAny ) Ġ= Ġcreate Lazy Component ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . begin Control Flow (" do ") ĊĠĠĠĠĠĠĠ Ġit . add Code ( statements ) ĊĠĠĠĠĠĠĠ Ġit . end Control Flow (" Ġwhile Ġ($ condition )", Ġ* parts ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠI Repeat Ġ{ ĊĠĠĠ Ġfun ĠforEach ( condition : ĠString , Ġvar arg Ġparts : ĠAny , Ġstatements : ĠCode Block Build Script ) ĊĠĠĠ Ġfun Ġdo Repeat ( statements : ĠCode Block Build Script ): ĠRepeat Start . Condition ĊĠĠĠ Ġfun Ġrepeat While ( condition : ĠString , Ġvar arg Ġparts : ĠAny , Ġstatements : ĠCode Block Build Script ) ĊĠĠĠ Ġfun Ġrepeat ( times : ĠInt , Ġarg : ĠString Ġ= Ġ" it ", Ġstatements : ĠCode Block Build Script ) Ċ } Ċ Ċ fun ĠLazy Component Accept or . do Repeat ( statements : ĠCode Block Build Script ) Ġ= ĠLazy Repeat Condition ( statements ) Ċ Ċ fun ĠLazy Component Accept or . forEach ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġparts : ĠAny , ĊĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script Ċ ) Ġ= Ġ_ forEach ( condition , Ġ* parts , Ġstatements Ġ= Ġstatements ) Ċ Ċ fun ĠLazy Component Accept or . repeat While ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġparts : ĠAny , ĊĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script Ċ ) Ġ= Ġ_ repeat While ( condition , Ġ* parts , Ġstatements Ġ= Ġstatements ) Ċ Ċ fun ĠLazy Component Accept or . repeat ( ĊĠĠĠĠĠĠĠ Ġtimes : ĠInt , Ġarg : ĠString Ġ= Ġ" it ", Ġstatements : ĠCode Block Build Script Ċ ) Ġ= Ġ_ repeat ( times , Ġarg , Ġstatements ) Ċ Ċ @ Code Block Level Ċ class ĠRepeat Start ( private Ġval Ġbuilder : ĠBlock Wrapper < *, Ġ*, Ġ* >) Ġ: ĠI Repeat Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġrepeat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimes : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script ĊĠĠĠ Ġ) Ġ= Ġ_ repeat ( times , Ġarg , Ġstatements ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrapper ( builder ) ĊĊĠĠĠ Ġoverride Ġfun Ġrepeat While ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcondition : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġparts : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script ĊĠĠĠ Ġ) Ġ= Ġ_ repeat While ( condition , Ġ* parts , Ġstatements Ġ= Ġstatements ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrapper ( builder ) ĊĊĠĠĠ Ġoverride Ġfun ĠforEach ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcondition : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġparts : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatements : ĠCode Block Build Script ĊĠĠĠ Ġ) Ġ= Ġ_ forEach ( condition , Ġ* parts , Ġstatements Ġ= Ġstatements ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrapper ( builder ) ĊĊĠĠĠ Ġoverride Ġfun Ġdo Repeat ( statements : ĠCode Block Build Script ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCondition ( Lazy Repeat Condition ( statements )) ĊĊĠĠĠ Ġinner Ġclass ĠCondition ( private Ġval Ġlazy Repeat Condition : ĠLazy Repeat Condition ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfor E ver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlazy Repeat Condition . for E ver () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrapper ( builder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġin fix Ġfun Ġas Long As ( condition : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlazy Repeat Condition . as Long As ( condition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrapper ( builder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġas Long As ( condition : ĠString , Ġvar arg Ġparts : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlazy Repeat Condition . as Long As ( condition , Ġ* parts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrapper ( builder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }