/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 3 ĠSquare , Ġ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 . squareup . wire . schema . internal . parser Ċ Ċ import Ġcom . squareup . wire . schema . internal . append Indent ed Ċ import Ġcom . squareup . wire . schema . internal . append Options Ċ import Ġcom . squareup . wire . schema . internal . parser . Option Element . Kind . BOOLEAN Ċ import Ġcom . squareup . wire . schema . internal . parser . Option Element . Kind . ENUM Ċ import Ġcom . squareup . wire . schema . internal . parser . Option Element . Kind . LIST Ċ import Ġcom . squareup . wire . schema . internal . parser . Option Element . Kind . MAP Ċ import Ġcom . squareup . wire . schema . internal . parser . Option Element . Kind . NUMBER Ċ import Ġcom . squareup . wire . schema . internal . parser . Option Element . Kind . OPTION Ċ import Ġcom . squareup . wire . schema . internal . parser . Option Element . Kind . STRING Ċ import Ġkotlin . jvm . Jvm Over loads Ċ Ċ data Ġclass ĠOption Element ( ĊĠ Ġval Ġname : ĠString , ĊĠ Ġval Ġkind : ĠKind , ĊĠ Ġval Ġvalue : ĠAny , ĊĠ Ġ/** ĠIf Ġtrue , Ġthis Ġ[ Option Element ] Ġis Ġa Ġcustom Ġoption . Ġ*/ ĊĠ Ġval Ġis Parent hesized : ĠBoolean Ċ ) Ġ{ ĊĠ Ġenum Ġclass ĠKind Ġ{ ĊĠĠĠ ĠSTRING , ĊĠĠĠ ĠBOOLEAN , ĊĠĠĠ ĠNUMBER , ĊĠĠĠ ĠEN UM , ĊĠĠĠ ĠMAP , ĊĠĠĠ ĠLIST , ĊĠĠĠ ĠOPTION ĊĠ Ġ} ĊĠ Ġprivate Ġval Ġformatted Name Ġ= Ġif Ġ( is Parent hesized ) Ġ" ($ name )" Ġelse Ġname ĊĊĠ Ġfun Ġto Schema (): ĠString Ġ= Ġbuild String Ġ{ ĊĠĠĠ Ġwhen Ġ( kind ) Ġ{ ĊĠĠĠĠĠ ĠSTRING Ġ-> Ġappend (""" $ formatted Name Ġ= Ġ"$ value """ ") ĊĠĠĠĠĠ ĠBOOLEAN , ĊĠĠĠĠĠ ĠNUMBER , ĊĠĠĠĠĠ ĠEN UM Ġ-> Ġappend ("$ formatted Name Ġ= Ġ$ value ") ĊĠĠĠĠĠ ĠOPTION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠT reat Ġnested Ġoptions Ġas Ġnon - parent hesized Ġalways , Ġprevents Ġdouble Ġparentheses . ĊĠĠĠĠĠĠĠ Ġval Ġoption Value Ġ= Ġ( value Ġas ĠOption Element ). copy () ĊĠĠĠĠĠĠĠ Ġappend ("$ formatted Name .${ option Value . to Schema () }") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠMAP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ("$ formatted Name Ġ= Ġ{\ n ") ĊĠĠĠĠĠĠĠ Ġformat Option Map ( this , Ġvalue Ġas ĠMap < String , Ġ* >) ĊĠĠĠĠĠĠĠ Ġappend (' }') ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠLIST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ("$ formatted Name Ġ= Ġ") ĊĠĠĠĠĠĠĠ Ġappend Options ( value Ġas ĠList < Option Element >) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġto Schema Declaration () Ġ= Ġ" option Ġ${ to Schema ()}; \ n " ĊĊĠ Ġprivate Ġfun Ġformat Option Map ( ĊĠĠĠ Ġbuilder : ĠStringBuilder , ĊĠĠĠ Ġvalue Map : ĠMap < String , Ġ*> ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġlast Index Ġ= Ġvalue Map . size Ġ- Ġ 1 ĊĠĠĠ Ġvalue Map . entries . forEach Indexed Ġ{ Ġindex , Ġentry Ġ-> ĊĠĠĠĠĠ Ġval Ġendl Ġ= Ġif Ġ( index Ġ!= Ġlast Index ) Ġ"," Ġelse Ġ"" ĊĠĠĠĠĠ Ġbuilder . append Indent ed ("${ entry . key }: Ġ${ format Option Map Value ( entry . value !! )} $ endl ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġformat Option Map Value ( value : ĠAny ): ĠString Ġ= Ġbuild String Ġ{ ĊĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠ Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġappend (" """ $ value """ ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġappend (" {\ n ") ĊĠĠĠĠĠĠĠ Ġformat Option Map ( this , Ġvalue Ġas ĠMap < String , Ġ* >) ĊĠĠĠĠĠĠĠ Ġappend (' }') ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠList < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ("[ \ n ") ĊĠĠĠĠĠĠĠ Ġval Ġlast Index Ġ= Ġvalue . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġvalue . forEach Indexed Ġ{ Ġindex , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġendl Ġ= Ġif Ġ( index Ġ!= Ġlast Index ) Ġ"," Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠ Ġappend Indent ed ("${ format Option Map Value ( item !! )} $ endl ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġappend (" ]") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ( value ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġinternal Ġval ĠPACK ED _ OPTION _ ELEMENT Ġ= ĊĠĠĠĠĠĠĠ ĠOption Element (" packed ", ĠBOOLEAN , Ġvalue Ġ= Ġ" true ", Ġis Parent hesized Ġ= Ġfalse ) ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠ Ġkind : ĠKind , ĊĠĠĠĠĠ Ġvalue : ĠAny , ĊĠĠĠĠĠ Ġis Parent hesized : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ= ĠOption Element ( name , Ġkind , Ġvalue , Ġis Parent hesized ) ĊĠ Ġ} Ċ } Ċ