package Ġcom . a em tools . index . search Ċ Ċ import Ġcom . a em tools . common . constant . const Ċ import Ġcom . a em tools . index . H tl Template Index Ċ import Ġcom . a em tools . index . model . Template Definition Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġcom . intellij . util . indexing . File Based Index Ċ Ċ /** Ċ Ġ* ĠSearch Ġmethods Ġfor ĠH tl Ġtemplates . Ċ Ġ* Ċ Ġ* Ġ@ author ĠD my tro ĠPrim sh y ts Ċ Ġ*/ Ċ object ĠH tl Template Search Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFind Ġall Ġtemplate Ġdefinitions Ġavailable Ġin Ġopened Ġproject . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġproject Ġthe Ġproject ĊĠĠ Ġ* Ġ@ return Ġlist Ġof Ġtemplate Ġdefinitions ĊĠĠ Ġ*/ ĊĠ Ġfun Ġall ( project : ĠProject ): ĠList < Template Definition > Ġ{ ĊĠĠĠ Ġval Ġf bi Ġ= ĠFile Based Index . getInstance () ĊĠĠĠ Ġval Ġkeys Ġ= Ġf bi . getAll Keys ( H tl Template Index . HT L _ TEMPLATE _ ID , Ġproject ) ĊĊĠĠĠ Ġval Ġvalues Ġ= Ġkeys . flatMap Ġ{ ĊĠĠĠĠĠ Ġf bi . getValues ( H tl Template Index . HT L _ TEMPLATE _ ID , Ġit , ĠGlobal Search Scope . project Scope ( project )) ĊĠĠĠ Ġ}. filter NotNull () ĊĊĠĠĠ Ġreturn Ġvalues ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠResolve Ġuse Ġtemplate Ġby Ġname , Ġrelative Ġto Ġgiven Ġfile . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġname Ġthe Ġname Ġof Ġtemplate ĊĠĠ Ġ* Ġ@ param Ġfile Ġthe Ġfile Ġwhere Ġthe Ġtemplate Ġis Ġused ĊĠĠ Ġ* Ġ@ return Ġlist Ġof Ġavailable Ġtemplates ĊĠĠ Ġ*/ ĊĠ Ġfun Ġresolve Use Template ( name : ĠString , Ġfile : ĠPsi File ): ĠList < Template Definition > Ġ{ ĊĠĠĠ Ġif Ġ( is Pre defined Template ( name )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġpredefined Template ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtemplates Ġ= Ġall ( file . project ) ĊĠĠĠ Ġreturn Ġif Ġ( name . is AbsolutePath ()) Ġ{ ĊĠĠĠĠĠ Ġtemplates . filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit . normalized Path Ġ== Ġname ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġpath Ġ= Ġfile . original File . containing Directory . virtual File . path ĊĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ"$ path /$ name " ĊĠĠĠĠĠ Ġtemplates . filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit . fullName Ġ== ĠfileName ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠString . is AbsolutePath (): ĠBoolean Ġ= Ġthis . startsWith ("/") ĊĊĠ Ġprivate Ġfun Ġpredefined Template ( name : ĠString ): ĠList < Template Definition > Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( name Ġ== Ġconst . CLIENT LIB _ TEMPLATE ) Ġ{ ĊĠĠĠĠĠ ĠlistOf ( Template Definition ( ĊĠĠĠĠĠĠĠĠĠ Ġconst . CLIENT LIB _ TEMPLATE , ĊĠĠĠĠĠĠĠĠĠ Ġ" js ", ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" categories ") ĊĠĠĠĠĠ Ġ), ĠTemplate Definition ( ĊĠĠĠĠĠĠĠĠĠ Ġconst . CLIENT LIB _ TEMPLATE , ĊĠĠĠĠĠĠĠĠĠ Ġ" all ", ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" categories ") ĊĠĠĠĠĠ Ġ), ĠTemplate Definition ( ĊĠĠĠĠĠĠĠĠĠ Ġconst . CLIENT LIB _ TEMPLATE , ĊĠĠĠĠĠĠĠĠĠ Ġ" css ", ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" categories ") ĊĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġempty List () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġis Pre defined Template ( name : ĠString ) Ġ= Ġname Ġ== Ġconst . CLIENT LIB _ TEMPLATE Ċ Ċ } Ċ