package Ġcom . win dea . plugin . idea . stell aris . script . schema . adapter Ċ Ċ import Ġcom . jetbrains . json Schema . extension . adapters .* Ċ import Ġcom . jetbrains . json Schema . ide .* Ċ import Ġcom . jetbrains . json Schema . impl .* Ċ import Ġcom . win dea . plugin . idea . stell aris . script . psi .* Ċ import Ġcom . win dea . plugin . idea . stell aris . script . schema .* Ċ Ċ class ĠSt ell aris Script Value Adapter ( Ċ ĉ private Ġval Ġelement : ĠSt ell aris Script Value Ċ ) Ġ: ĠJson Value Adapter Ġ{ Ċ ĉ override Ġfun Ġget Delegate () Ġ= Ġelement ĊĊ ĉ override Ġfun Ġis Null () Ġ= Ġfalse ĊĊ ĉ override Ġfun Ġis Boolean Literal () Ġ= Ġelement Ġis ĠSt ell aris Script Boolean ĊĊ ĉ override Ġfun Ġis Number Literal () Ġ= Ġelement Ġis ĠSt ell aris Script Number ĊĊ ĉ override Ġfun Ġis StringLiteral () Ġ= Ġelement Ġis ĠSt ell aris Script StringValue ĊĊ ĉ // isArray åĴĮ isObject ä¸¤ èĢħ åıªèĥ½ æľīä¸Ģä¸ª æĺ¯ true ï¼Į å¦Ĥæŀľ block æĺ¯ ç©º çļĦ ï¼Į éľĢè¦ģ æİ¨ æĸŃ åĪ° åºķ æĺ¯ array è¿ĺæĺ¯ object Ċ ĉ // é¦ĸåħĪ å¾ĹåĪ° root Schema ï¼Į çĦ¶åĲİ å¾ĹåĪ° json Position ï¼Į çĦ¶åĲİ åĨį å¾ĹåĪ° éľĢè¦ģ çļĦ schema ï¼Į æł¹æį® schema . type Variants è¿Ľè¡Į æİ¨ æĸŃ Ċ ĉ // å¦Ĥæŀľ ä¸į æİ¥åıĹ schema ï¼Į é»ĺè®¤ä¸º object ĊĊ ĉ override Ġfun ĠisArray () Ġ= Ġelement Ġis ĠSt ell aris Script Block Ġ&& Ċĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element . isArray Ġ|| Ġelement . isEmpty Ġ&& ĠisArray Or Object When Empty () Ġ== Ġtrue ) ĊĊ ĉ override Ġfun Ġis Object () Ġ= Ġelement Ġis ĠSt ell aris Script Block Ġ&& Ċĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element . isObject Ġ|| Ġelement . isEmpty Ġ&& ĠisArray Or Object When Empty () Ġ!= Ġtrue ) ĊĊ ĉ // TODO ĠæıĲ é«ĺ æĢ§èĥ½ ĊĊ ĉ private Ġfun ĠisArray Or Object When Empty (): ĠBoolean ? Ġ{ Ċĉ ĉ // æľī schema Object åĴĮ position åı¯ä»¥ ç¡®å®ļ result Ċĉ ĉ val Ġjson Schema Service Ġ= ĠJson Schema Service . Impl . get ( element . project ) Ċĉ ĉ val Ġschema Object Ġ= Ġjson Schema Service . getSchema Object ( element . containing File ) Ġ?: Ġreturn Ġnull Ċĉ ĉ val Ġposition Ġ= ĠSt ell aris Script Json Like Psi Walker . find Position ( element , Ġfalse ) Ġ?: Ġreturn Ġnull Ċĉ ĉ val Ġschemas Ġ= ĠJson Schema Resolver ( element . project , Ġschema Object , Ġposition ). resolve () Ċĉ ĉ for ( schema Ġin Ġschemas ) Ġ{ Ċĉĉ ĉ when Ġ{ Ċĉĉĉ ĉ schema . accept ArrayType ( json Schema Service ) Ġ-> Ġreturn Ġtrue Ċĉĉĉ ĉ schema . accept ObjectType ( json Schema Service ) Ġ-> Ġreturn Ġfalse Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ return Ġnull Ċ ĉ } ĊĊ ĉ private Ġfun ĠJson Schema Object . accept ArrayType ( service : ĠJson Schema Service ): ĠBoolean Ġ{ Ċĉ ĉ if ( type Ġ== ĠJson Schema Type ._ array ) Ġreturn Ġtrue Ċĉ ĉ if ( type Variants ?. contains ( Json Schema Type ._ array ) Ġ== Ġtrue ) Ġreturn Ġtrue Ċĉ ĉ if ( has Array Checks ()) Ġreturn Ġtrue Ċĉ ĉ // åħģè®¸ åıªæľī $ ref ï¼Į ä½Ĩ ä¸į åħģè®¸ åıªæľī any Of çŃī Ċĉ ĉ if (! ref . isNull Or Blank () Ġ&& Ġresolve Ref Schema ( service )?. accept ArrayType ( service ) Ġ== Ġtrue ) Ġreturn Ġtrue Ċĉ ĉ return Ġfalse Ċ ĉ } ĊĊ ĉ private Ġfun ĠJson Schema Object . accept ObjectType ( service : ĠJson Schema Service ): ĠBoolean Ġ{ Ċĉ ĉ if ( type Ġ== ĠJson Schema Type ._ object ) Ġreturn Ġtrue Ċĉ ĉ if ( type Variants ?. contains ( Json Schema Type ._ object ) Ġ== Ġtrue ) Ġreturn Ġtrue Ċĉ ĉ if ( has Array Checks ()) Ġreturn Ġtrue Ċĉ ĉ // åħģè®¸ åıªæľī $ ref ï¼Į ä½Ĩ ä¸į åħģè®¸ åıªæľī any Of çŃī Ċĉ ĉ if (! ref . isNull Or Blank () Ġ&& Ġresolve Ref Schema ( service )?. accept ObjectType ( service ) Ġ== Ġtrue ) Ġreturn Ġtrue Ċĉ ĉ return Ġfalse Ċ ĉ } ĊĊ ĉ override Ġfun Ġget As Array () Ġ= Ġif ( isArray ) ĠSt ell aris Script Array Adapter ( element Ġas ĠSt ell aris Script Block ) Ġelse Ġnull ĊĊ ĉ override Ġfun Ġget As Object () Ġ= Ġif ( isObject ) ĠSt ell aris Script Object Adapter ( element Ġas ĠSt ell aris Script Block ) Ġelse Ġnull Ċ } Ċ