/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠCent ury Link , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . cent ury link . md w . kotlin Ċ Ċ import Ġorg . jetbrains . kotlin . cli . common . repl . K OT LIN _ SCRIPT _ ENGINE _ BIND INGS _ KEY Ċ import Ġorg . jetbrains . kotlin . cli . common . repl . K OT LIN _ SCRIPT _ STATE _ BIND INGS _ KEY Ċ import Ġjavax . script . Bindings Ċ import Ġjavax . script . Script Engine Ċ import Ġkotlin . script . templates . Script Template Definition Ċ import Ġkotlin . script . templates . standard . Script Template With Bindings Ċ import Ġcom . cent ury link . md w . model . workflow . Activity Runtime Context Ċ Ċ /** Ċ Ġ* ĠFrom Ġorg . jetbrains . kotlin . script . js r 2 2 3 . Kotlin Standard J sr 2 2 3 Script Template Ċ Ġ* ĠConstructor Ġparams Ġ' variables ' Ġand Ġ' runtime Context ' Ġare Ġadditional Ġvalues Ġare Ġpassed Ġfor Ġdirect Ġaccess Ċ Ġ*/ Ċ @ Suppress (" unused ") Ċ @ Script Template Definition Ċ abstract Ġclass ĠKotlin Script Template ( val Ġjsr 2 2 3 Bindings : ĠBind ings , Ġvar Ġvariables : ĠMutable Map < String , Any ? >, Ġval Ġruntime Context : ĠActivity Runtime Context ) ĊĠ Ġ: ĠScript Template With Bindings ( js r 2 2 3 Bindings ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmy Engine : ĠScript Engine ? Ġget () Ġ= Ġbindings [ K OT LIN _ SCRIPT _ ENGINE _ BIND INGS _ KEY ]?. let Ġ{ Ġit Ġas ? ĠScript Engine Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun < T > Ġwith My Engine ( body : Ġ( Script Engine ) Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Engine ?. let ( body ) Ġ?: Ġthrow ĠIllegalStateException (" Script Ġengine Ġfor Ġ` eval ` Ġcall Ġis Ġnot Ġfound ") ĊĠĠĠ Ġ} ĊĠĠĊĠĠĠ Ġfun Ġeval ( script : ĠString , Ġnew Bindings : ĠBind ings ): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith My Engine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsaved State Ġ= Ġnew Bindings [ K OT LIN _ SCRIPT _ STATE _ BIND INGS _ KEY ]?. take If Ġ{ Ġit Ġ=== Ġthis . js r 2 2 3 Bindings [ K OT LIN _ SCRIPT _ STATE _ BIND INGS _ KEY ] Ġ} ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Bindings [ K OT LIN _ SCRIPT _ STATE _ BIND INGS _ KEY ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġit . eval ( script , Ġnew Bindings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Bindings [ K OT LIN _ SCRIPT _ STATE _ BIND INGS _ KEY ] Ġ= Ġsaved State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġeval ( script : ĠString ): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith My Engine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsaved State Ġ= Ġjsr 2 2 3 Bindings . remove ( K OT LIN _ SCRIPT _ STATE _ BIND INGS _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġit . eval ( script , Ġjsr 2 2 3 Bindings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved State ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjsr 2 2 3 Bindings [ K OT LIN _ SCRIPT _ STATE _ BIND INGS _ KEY ] Ġ= Ġsaved State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Bindings (): ĠBind ings Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith My Engine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . create Bindings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ }