/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠPro Si eben Sat 1 . Digital ĠGmbH . Ċ Ġ* Ċ Ġ* Ġ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 Ġde . pro si eb ens at 1 digital . oasis js bridge Ċ Ċ open Ġclass ĠJsonObject Wrapper ( val Ġjson String : ĠString ) Ġ{ ĊĊĠĠĠ Ġconstructor ( undefined : ĠUndefined ): Ġthis ("") ĊĠĠĠ Ġconstructor ( var arg Ġpairs : ĠPair < String , ĠAny ?> ): Ġthis ( pairs ToJson String ( pairs )) ĊĠĠĠ Ġconstructor ( map : ĠMap < String , ĠAny ?> ): Ġthis (* map . map Ġ{ Ġit . to Pair () Ġ}. to Typed Array ()) ĊĠĠĠ Ġconstructor ( array : ĠArray < out ĠAny ?> ): Ġthis ( array ToJson String ( array )) ĊĠĠĠ Ġconstructor ( collection : ĠCollection < Any ?> ): Ġthis ( collection ToJson String ( collection )) ĊĊĠĠĠ Ġobject ĠUndefined : ĠJsonObject Wrapper ("") ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmap ToJson String ( map : ĠMap < String , ĠAny ?> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinside Ġ= Ġmap . entries . fold ("") Ġ{ Ġacc , Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . value Ġ== ĠUndefined ) Ġreturn @ fold Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( acc . isEmpty ()) Ġacc Ġelse Ġ"$ acc , Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" $ prefix "${ entry . key } ": Ġ${ value ToString ( entry . value )} """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" {$ inside }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġpairs ToJson String ( pairs : ĠArray < out ĠPair < String , ĠAny ? >> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinside Ġ= Ġpairs . fold ("") Ġ{ Ġacc , Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pair . second Ġ== ĠUndefined ) Ġreturn @ fold Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( acc . isEmpty ()) Ġacc Ġelse Ġ"$ acc , Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" $ prefix "${ pair . first } ": Ġ${ value ToString ( pair . second )} """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" {$ inside }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġarray ToJson String ( array : ĠArray < out ĠAny ?> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinside Ġ= Ġarray . fold ("") Ġ{ Ġacc , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠUndefined ) Ġreturn @ fold Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( acc . isEmpty ()) Ġacc Ġelse Ġ"$ acc , Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" $ prefix ${ value ToString ( item )} """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" [$ inside ]" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcollection ToJson String ( collection : ĠCollection < Any ?> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinside Ġ= Ġcollection . fold ("") Ġ{ Ġacc , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠUndefined ) Ġreturn @ fold Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( acc . isEmpty ()) Ġacc Ġelse Ġ"$ acc , Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" $ prefix ${ value ToString ( item )} """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" [$ inside ]" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġprivate Ġfun < T > Ġvalue ToString ( value : ĠT ) Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ" null " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUndefined Ġ-> Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJsonObject Wrapper Ġ-> Ġvalue . json String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber Ġ-> Ġ"$ value " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġif Ġ( value ) Ġ" true " Ġelse Ġ" false " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ"\" ${ escape ( value )}\ "" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArray < *> Ġ-> ĠJsonObject Wrapper ( value ). json String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCollection < *> Ġ-> ĠJsonObject Wrapper ( value Ġas ĠCollection < Any ?> ). json String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> ĠJsonObject Wrapper ( value Ġas ĠMap < String , ĠAny ?> ). json String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException (" Unsupported Ġvalue Ġin ĠJson String Wrapper Ġ($ value )") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Js String () Ġ= Ġjson String ĊĠĠĠĠĠĠĠ Ġ. replace (" \"", Ġ"\\ \" ") ĊĠĠĠĠĠĠĠ Ġ. replace ("\ n ", Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġif Ġ( it . isEmpty ()) Ġ" undefined " Ġelse Ġ" JSON . parse (\" $ it \") " Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠJsonObject Wrapper ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġjson String Ġ== Ġother . json String ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġjson String . hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġjson String Ċ } Ċ Ċ private Ġfun Ġescape ( s : ĠString ): ĠString Ġ= Ġs . replace (" \"", Ġ"\\ \" ") ĊĠĠĠ Ġ. replace ("\ n ", Ġ"\\ n ") ĊĠĠĠ Ġ. replace ("\ t ", Ġ"\\ t ") ĊĠĠĠ Ġ. replace ("\ r ", Ġ"\\ r ") Ċ