/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 - 2 0 2 1 ĠRe ece ĠH . ĠD un n Ċ Ġ* Ċ Ġ* Ġ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 Ġuk . co . re ec ed un n . intellij . plugin . xsl t . tests . parser Ċ Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . extensions . register Extension Point Bean Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . extensions . register Service Instance Ċ import Ġcom . intellij . lang . Language AST Factory Ċ import Ġcom . intellij . lang . Parser Definition Ċ import Ġcom . intellij . lang . injection . Inject ed Language Manager Ċ import Ġcom . intellij . lang . xml . XML Language Ċ import Ġcom . intellij . lang . xml . Xml AST Factory Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . module . Module Manager Ċ import Ġcom . intellij . openapi . roots . Project Root Manager Ċ import Ġcom . intellij . psi . xml . Start Tag End Token Provider Ċ import Ġcom . intellij . psi . xml . Xml AttributeValue Ċ import Ġcom . intellij . psi . xml . Xml File Ċ import Ġcom . intellij . psi . xml . Xml Tag Ċ import Ġcom . intellij . xml . Xml Extension Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . sequences . walk Tree Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . tests . inject on . Mock Inject ed Language Manager Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . tests . module . Mock Module Manager Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . tests . parser . Parsing TestCase Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . tests . roots . Mock Project Roots Manager Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . vfs . Resource Virtual File Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . vfs . to Psi File Ċ import Ġuk . co . re ec ed un n . intellij . plugin . x pm . psi . shadow . X pm Shadow Psi Element Factory Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xsl t . lang . X SL T Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xsl t . psi . impl . X slt Shadow Psi Element Factory Ċ Ċ @ Suppress (" Member Visibility Can Be Private ", Ġ" Same Parameter Value ") Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ abstract Ġclass ĠParser TestCase ( var arg Ġdefinitions : ĠParser Definition ) Ġ: ĊĠĠĠ ĠParsing TestCase < Xml File >( null , Ġ* definitions ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġregister Services And Extensions () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . register Services And Extensions () ĊĠĠĠĠĠĠĠ Ġadd Explicit Extension ( Language AST Factory . INSTANCE , ĠXML Language . INSTANCE , ĠXml AST Factory ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠApplication Manager . getApplication () ĊĠĠĠĠĠĠĠ Ġapp . register Extension Point Bean ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStart Tag End Token Provider . EP _ NAME , ĠStart Tag End Token Provider :: class . java , Ġplugin Disposable ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġapp . register Extension Point Bean ( Xml Extension . EP _ NAME , ĠXml Extension :: class . java , Ġplugin Disposable ) ĊĊĠĠĠĠĠĠĠ Ġproject . register Service Instance ( Project Root Manager :: class . java , ĠMock Project Roots Manager ()) ĊĠĠĠĠĠĠĠ Ġproject . register Service Instance ( Module Manager :: class . java , ĠMock Module Manager ( project )) ĊĠĠĠĠĠĠĠ Ġproject . register Service Instance ( Inject ed Language Manager :: class . java , ĠMock Inject ed Language Manager ()) ĊĊĠĠĠĠĠĠĠ ĠX pm Shadow Psi Element Factory . register ( this , ĠX slt Shadow Psi Element Factory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse Xml ( resource : ĠString ): ĠXml File Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( resource . endsWith (". xsl ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠResource Virtual File . create ( this :: class . java . class Loader , Ġresource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . to Psi File ( project ) Ġas ĠXml File ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . parse Text ( resource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< T > Ġparse ( resource : ĠString , Ġnamespace Uri : ĠString , Ġlocal Name : ĠString ): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse Xml ( resource ). walk Tree () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Xml Tag >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . namespace Ġ== Ġnamespace Uri Ġ&& Ġit . local Name Ġ== Ġlocal Name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠX pm Shadow Psi Element Factory . create ( it ) Ġas ĠT Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġelement ( resource : ĠString , Ġlocal Name : ĠString ): ĠList < Xml Tag > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse Xml ( resource ). walk Tree (). filter Is Instance < Xml Tag >(). filter Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . namespace Ġ== ĠX SL T . NAMESPACE Ġ&& Ġe . local Name Ġ== Ġlocal Name ĊĠĠĠĠĠĠĠ Ġ}. filter NotNull (). toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattribute ( resource : ĠString , Ġelement Name : ĠString , Ġattribute Name : ĠString ): ĠList < Xml AttributeValue > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement ( resource , Ġelement Name ). map NotNull Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . getAttribute ( attribute Name , Ġ"") ?. value Element ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ