package Ġs ios io . repository . converter Ċ Ċ import Ġcom . intellij . code Insight . lookup .* Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . util .* Ċ import Ġcom . intellij . psi . xml .* Ċ import Ġcom . intellij . util . xml .* Ċ import Ġs ios io . repository . xml .* Ċ Ċ /** Ċ Ġ* Ġproperty ãĤ¿ ãĤ° ãģ® ref å±ŀæĢ§ ãģ® ãĤ³ãĥ³ ãĥĿ ãĥ¼ãĥ į ãĥ³ãĥĪ ãĤĴ è§£ æ±º ãģĻãĤĭ ãĤ³ãĥ³ ãĥĲ ãĥ¼ãĤ¿ Ċ Ġ*/ Ċ class ĠRepository Ref Converter Ġ: ĠRes olving Converter < Xml Tag >() Ġ{ ĊĠĠĊĠ Ġoverride Ġfun Ġget Variants ( context : ĠConvert Context ?): ĠMutable Collection < out ĠXml Tag > Ġ{ ĊĠĠĠ Ġval Ġelement Ġ= Ġcontext ?. reference XmlElement ĊĠĠĠ Ġreturn Ġif Ġ( element Ġis ĠXml AttributeValue ) Ġ{ ĊĠĠĠĠĠ ĠComponent Creator ( element ). findAll ( context ). map Ġ{ ĠĊĠĠĠĠĠĠĠ Ġit . component . xml Tag ĊĠĠĠĠĠ Ġ}. to Mutable List () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġmutable ListOf () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate Lookup Element ( t : ĠXml Tag ): ĠLookup Element ? Ġ{ ĊĠĠĠ Ġreturn ĠLookup Element Builder . create ( t , Ġt . getAttribute Value (" name ") !! ) ĊĠĠĠĠĠĠĠ Ġ. with Icon ( t . get Icon ( 0 )) ĊĠĠĠĠĠĠĠ Ġ. with Type Text ( t . containing File . name ) ĊĠĠĠĠĠĠĠ Ġ. with Auto Completion Policy ( Auto Completion Policy . ALWAYS _ AUTO COMPLETE ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġfrom String ( name : ĠString ?, Ġcontext : ĠConvert Context ?): ĠXml Tag ? Ġ{ ĊĠĠĠ Ġ// Ġtodo Ġ è¤ĩ æķ° ãģĤãĤĭ ãģ® ãģĭ ( Â ´ ãĥ» Ïī ãĥ» `) ĊĠĠĠ Ġreturn ĠXml Helper . find Named Element ( context ). last OrNull Ġ{ ĊĠĠĠĠĠ Ġit . name . value Ġ== Ġname ĊĠĠĠ Ġ} ?. xml Tag ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoString ( component : ĠXml Tag ?, Ġcontext : ĠConvert Context ?): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġcomponent ?. getAttribute Value (" name ") ĊĠ Ġ} ĊĊĠ Ġclass ĠComponent Creator ( private Ġval Ġxml AttributeValue : ĠXml AttributeValue ) Ġ{ ĊĊĠĠĠ Ġfun ĠfindAll ( context : ĠConvert Context ): ĠArray < Named Element Holder > Ġ{ ĊĠĠĠĠĠ Ġval Ġnamed Elements Ġ= ĠXml Helper . find Named Element ( context ) ĊĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance ( Component :: class . java ) ĊĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcomponent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent . component Class . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNamed Element Holder ( component , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}. filter NotNull () ĊĊĠĠĠĠĠ Ġval Ġproperty Tag Ġ= ĠDom Util . get Dom Element ( Psi Tree Util . getParent OfType ( xml AttributeValue , ĠXml Tag :: class . java )) Ġas ? ĠProperty Ġ?: Ġreturn Ġempty Array () ĊĠĠĠĠĠ Ġval Ġparameter List Ġ= Ġproperty Tag . name . value ?. parameter List Ġ?: Ġreturn Ġempty Array () ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġreturn Ġif Ġ( parameter List . parameters Count Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparameter List . parameters . first OrNull ()?. type ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ} ?. let Ġ{ Ġtype Ġ-> ĊĠĠĠĠĠĠĠ Ġnamed Elements . as Sequence (). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠXml Helper . isAssignableFrom ( type , Ġit . component Type ) ĊĠĠĠĠĠĠĠ Ġ}. toList (). to Typed Array () ĊĠĠĠĠĠ Ġ} Ġ?: Ġempty Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠNamed Element Holder ( ĊĠĠĠĠĠĠĠ Ġval Ġcomponent : ĠComponent , ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Class : ĠPsi Class ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġcomponent Type : ĠPsi ClassType Ġ= ĠPsi Types Util . getClass Type ( component Class ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ