import Ġkotlin . js . Js Export Ċ Ċ @ Js Export Ċ data Ġclass ĠColumn ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġexpression : ĠString , ĊĠĠĠ Ġval Ġtype : ĠList Processing Mode ? Ġ= Ġnull , Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( name . replace ("\\ ", Ġ"\\ \ \" ). replace (" :", Ġ"\\ :" )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( expression . replace ("\\ ", Ġ"\\ \ \" ). replace ("@ ", Ġ"\\ @ "). replace (",", Ġ"\\ , ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("@ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Js Export Ċ sealed Ġclass ĠList Processing Mode Ċ Ċ /** Ċ Ġ* Ġjoin Ġstrings Ġinto Ġa Ġsingle Ġcell Ċ Ġ*/ Ċ @ Js Export Ċ data Ġclass ĠJoin ( val Ġdelimiter : ĠString ) Ġ: ĠList Processing Mode () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" join (\" ${ delimiter . replace ("\ n ", Ġ"\\ n ") }\ ")" ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġcreate Ġnew Ġcolumn Ġfor Ġeach Ġentry Ċ Ġ*/ Ċ @ Js Export Ċ data Ġclass ĠExplo de Wide ( val Ġdiscriminator : ĠString , Ġval Ġsub columns : ĠArray < Column >) Ġ: ĠList Processing Mode () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" explode Wide (" Ġ+ ĠColumn ("\ $ disc ", Ġdiscriminator ) Ġ+ Ġ"," Ġ+ Ġsub columns . join ToString (",") Ġ+ Ġ")" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġthis :: class Ġ!= Ġother :: class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠExplo de Wide ĊĊĠĠĠĠĠĠĠ Ġif Ġ( dis criminator Ġ!= Ġother . dis criminator ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! sub columns . content Equals ( other . sub columns )) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġdiscriminator . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġsub columns . content HashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġcreate Ġnew Ġrow Ġfor Ġeach Ġentry Ċ Ġ*/ Ċ @ Js Export Ċ data Ġclass ĠExplo de Long ( val Ġsub columns : ĠArray < Column >) Ġ: ĠList Processing Mode () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" explode Long (" Ġ+ Ġsub columns . join ToString (",") Ġ+ Ġ")" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġthis :: class Ġ!= Ġother :: class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠExplo de Long ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! sub columns . content Equals ( other . sub columns )) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsub columns . content HashCode () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Js Export Ċ object ĠSingleton Ġ: ĠList Processing Mode () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" singleton " ĊĠĠĠ Ġ} Ċ }