/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . ide . template . postfix Ċ Ċ import Ġcom . intellij . code Insight . template . Template Ċ import Ġcom . intellij . code Insight . template . impl . Text Expression Ċ import Ġcom . intellij . code Insight . template . postfix . templates . String Based Post fix Template Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . rust . lang . core . psi . Rs Binary Expr Ċ import Ġorg . rust . lang . core . psi . Rs Expr Ċ import Ġorg . rust . lang . core . psi . ext . Comparison Op Ċ import Ġorg . rust . lang . core . psi . ext . operator Type Ċ Ċ abstract Ġclass ĠAssert Post fix Template Base ( name : ĠString ) Ġ: ĠString Based Post fix Template ( ĊĠĠĠ Ġname , ĊĠĠĠ Ġ"$ name !( exp ); ", ĊĠĠĠ ĠRs Top Most In Scope Selector ( Rs Expr :: is Bool )) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Template String ( element : ĠPsi Element ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠRs Binary Expr Ġ&& Ġelement . operator Type Ġ== ĠComparison Op . EQ ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ this . present able Name }_ eq ! (${ element . left . text }, Ġ${ element . right ?. text }); \$ END $" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ present able Name ! (${ element . text }); \$ END $" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Element ToRemove ( expr : ĠPsi Element ): ĠPsi Element Ġ= Ġexpr Ċ } Ċ Ċ class ĠAssert Post fix Template Ġ: ĠAssert Post fix Template Base (" assert ") Ċ class ĠDebug Assert Post fix Template Ġ: ĠAssert Post fix Template Base (" debug _ assert ") Ċ Ċ class ĠLambda Post fix Template Ġ: ĠString Based Post fix Template ( ĊĠĠĠ Ġ" lambda ", ĊĠĠĠ Ġ" || Ġexpr ", ĊĠĠĠ ĠRs Top Most In Scope Selector ({ Ġtrue Ġ})) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Template String ( element : ĠPsi Element ): ĠString Ġ= Ġ" || Ġ${ element . text }" ĊĊĠĠĠ Ġoverride Ġfun Ġget Element ToRemove ( expr : ĠPsi Element ): ĠPsi Element Ġ= Ġexpr Ċ } Ċ Ċ class ĠNot Post fix Template Ġ: ĠString Based Post fix Template ( ĊĠĠĠ Ġ" not ", ĊĠĠĠ Ġ"! expr ", ĊĠĠĠ ĠRs Top Most In Scope Selector ({ Ġtrue Ġ})) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Template String ( element : ĠPsi Element ): ĠString Ġ= Ġ"! ${ element . text }" ĊĊĠĠĠ Ġoverride Ġfun Ġget Element ToRemove ( expr : ĠPsi Element ): ĠPsi Element Ġ= Ġexpr Ċ } Ċ Ċ class ĠMatch Post fix Template Ġ: ĠString Based Post fix Template ( ĊĠĠĠ Ġ" match ", ĊĠĠĠ Ġ" match Ġexpr Ġ{... }", ĊĠĠĠ ĠRs Top Most In Scope Selector ({ Ġtrue Ġ}) Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Template String ( element : ĠPsi Element ): ĠString Ġ= Ġ" match Ġ${ element . text } Ġ{\ n \$ PAT \$ Ġ=> Ġ{\ $ END \$ }\ n }" ĊĊĠĠĠ Ġoverride Ġfun Ġget Element ToRemove ( expr : ĠPsi Element ): ĠPsi Element Ġ= Ġexpr ĊĊĠĠĠ Ġoverride Ġfun Ġset Variables ( template : ĠTemplate , Ġelement : ĠPsi Element ): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( template ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Variable (" PAT ", ĠText Expression ("_ "), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ