package Ġcom . intellij . plugin . powershell . ide . editor . formatting Ċ Ċ import Ġcom . intellij . formatting .* Ċ import Ġcom . intellij . formatting . template Languages . Block With Parent Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . plugin . powershell . PowerShell FileType Ċ import Ġcom . intellij . plugin . powershell . lang . PowerShell Language Ċ import Ġcom . intellij . plugin . powershell . psi .* Ċ import Ġcom . intellij . plugin . powershell . psi . PowerShell Types .* Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . TokenType . WHITE _ SPACE Ċ import Ġcom . intellij . psi . code Style . Code Style Settings Ċ import Ġcom . intellij . psi . code Style . Common Code Style Settings Ċ import Ġcom . intellij . psi . code Style . Common Code Style Settings .* Ċ import Ġcom . intellij . psi . formatter . Formatter Util Ċ import Ġcom . intellij . psi . formatter . Wr apping Util Ċ import Ġcom . intellij . psi . formatter . common . Abstract Block Ċ import Ġcom . intellij . psi . impl . source . Source Tree To Psi Map Ċ import Ġcom . intellij . psi . impl . source . tree . Composite Element Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* ĠAnd rey Ġ 0 5 / 0 8 / 1 7 . Ċ Ġ*/ Ċ open Ġclass ĠPowerShell Block Impl ( node : ĠAST Node , Ġwrap : ĠWrap ?, Ġalignment : ĠAlignment ?, Ġindent : ĠInd ent ?, Ġindent Size : ĠInt , Ġcommon Settings : ĠCommon Code Style Settings , Ġps Style Settings : ĠPowerShell Code Style Settings ) ĊĠ Ġ: ĠAbstract Block ( node , Ġwrap , Ġalignment ), ĠPowerShell Code Block Ġ{ ĊĊĠ Ġprivate Ġval Ġmy Common Settings Ġ= Ġcommon Settings ĊĠ Ġprivate Ġval Ġmy PS Settings Ġ= Ġps Style Settings ĊĠ Ġprivate Ġval Ġmy Spacing Processor Ġ= ĠPowerShell Spacing Processor ( my Common Settings , Ġmy PS Settings ) ĊĊĠ Ġprivate Ġvar Ġmy Parent : ĠPowerShell Block Impl ? Ġ= Ġnull ĊĠ Ġprivate Ġval Ġmy Indent : ĠInd ent ? Ġ= Ġindent ĊĠ Ġprivate Ġval Ġmy Indent Size Ġ= Ġindent Size ĊĠ Ġ// Ġ Ġprivate Ġvar Ġmy Current Child Wrap : ĠWrap ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġmy Base Alignment : ĠAlignment Ġ= ĠAlignment . create Alignment () ĊĊĠ Ġconstructor ( file : ĠPsi File , Ġsetting : ĠCode Style Settings ) Ġ: Ġthis ( file . node , ĠWrap . create Wrap ( Wrap Type . NONE , Ġfalse ), ĠAlignment . create Alignment (), ĊĠĠĠĠĠ ĠInd ent . get Absolute None Indent (), ĊĠĠĠĠĠ Ġsetting . get Indent Size ( PowerShell FileType . INSTANCE ), ĊĠĠĠĠĠ Ġsetting . get Common Settings ( PowerShell Language . INSTANCE ), ĊĠĠĠĠĠ Ġsetting . get Custom Settings ( PowerShell Code Style Settings :: class . java )) ĊĊĠ Ġoverride Ġfun Ġis Leaf (): ĠBoolean Ġ= Ġfalse ĊĊĠ Ġoverride Ġfun Ġget Indent (): ĠInd ent ? Ġ= Ġmy Indent ĊĊĠ Ġoverride Ġfun Ġget Child Indent (): ĠInd ent ? Ġ= Ġcreate Child Indent ( my Node ) ĊĊĠ Ġoverride Ġfun Ġget Child Attributes ( new Child Index : ĠInt ): ĠChild Attributes Ġ{ ĊĠĠĠ Ġval Ġchildren Ġ= Ġsub Blocks ĊĠĠĠ Ġif Ġ( new Child Index Ġ< Ġ 1 Ġ|| Ġnew Child Index Ġ>= Ġchildren . size ) Ġreturn Ġsuper . getChild Attributes ( new Child Index ) ĊĊĠĠĠ Ġval Ġnew Child At Ġ= Ġchildren [ new Child Index ] ĊĠĠĠ Ġval Ġprev Child Ġ= Ġchildren [ new Child Index Ġ- Ġ 1 ] ĊĠĠĠ Ġif Ġ( new Child At Ġis ĠAST Block Ġ&& Ġprev Child Ġis ĠAST Block ) Ġ{ ĊĠĠĠĠĠ Ġval Ġnew Type Ġ= Ġnew Child At . node ?. elementType ĊĠĠĠĠĠ Ġval Ġprev Type Ġ= Ġprev Child . node ?. elementType ĊĠĠĠĠĠ Ġif Ġ( prev Type Ġ=== ĠBLOCK _ BODY Ġ&& Ġnew Type Ġ=== ĠRC URL Y ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠChild Attributes . DE LEG ATE _ TO _ PREV _ CHILD ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prev Type Ġ=== ĠLC URL Y Ġ&& Ġnew Type Ġ=== ĠRC URL Y ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠChild Attributes ( Indent . get Normal Indent (), Ġget First Child Alignment ( children )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠChild Attributes ( new Child At . indent , Ġget First Child Alignment ( children )) ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġget First Child Alignment ( children : ĠMutable List < Block >): ĠAlignment ? Ġ{ ĊĠĠĠ Ġreturn Ġchildren . map Ġ{ Ġit . alignment Ġ}. first OrNull Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Child Indent ( parent : ĠAST Node ): ĠInd ent ? Ġ{ ĊĠĠĠ Ġif Ġ( Source Tree To Psi Map . tree Element To Psi ( parent ) Ġis ĠPsi File ) Ġreturn ĠInd ent . get None Indent () ĊĠĠĠ Ġval Ġtype Ġ= Ġparent . elementType ĊĠĠĠ Ġ// statement _ block Ġrule ĊĠĠĠ Ġif Ġ( type Ġ=== ĠSW ITCH _ CLA USE _ BLOCK Ġ|| Ġtype Ġ=== ĠCLASS _ DECL AR ATION _ STATE MENT Ġ|| Ġtype Ġ=== ĠFUNCTION _ STATE MENT Ġ|| Ġtype Ġ=== ĠEN UM _ DECL AR ATION _ STATE MENT ĊĠĠĠĠĠĠĠ Ġ|| Ġtype Ġ=== ĠMETHOD _ DECL AR ATION _ STATE MENT Ġ|| Ġtype Ġ=== ĠCON STRUCTOR _ DECL AR ATION _ STATE MENT Ġ|| Ġtype Ġ=== ĠCATCH _ CLA USE Ġ|| Ġtype Ġ=== ĠTR Y _ STATE MENT ĊĠĠĠĠĠĠĠ Ġ|| Ġtype Ġ=== ĠWH ILE _ STATE MENT Ġ|| Ġtype Ġ=== ĠIF _ STATE MENT Ġ|| Ġtype Ġ=== ĠFIN ALLY _ CLA USE Ġ|| Ġtype Ġ=== ĠELSE _ CLA USE Ġ|| Ġtype Ġ=== ĠELSE IF _ CLA USE ĊĠĠĠĠĠĠĠ Ġ|| Ġtype Ġ=== ĠFOR _ STATE MENT Ġ|| Ġtype Ġ=== ĠFORE ACH _ STATE MENT Ġ|| Ġtype Ġ=== ĠTR AP _ STATE MENT Ġ|| Ġtype Ġ=== ĠDATA _ STATE MENT ĊĠĠĠĠĠĠĠ Ġ|| Ġtype Ġ=== ĠIN LINES CRIPT _ STATE MENT Ġ|| Ġtype Ġ=== ĠPAR ALLEL _ STATE MENT Ġ|| Ġtype Ġ=== ĠSEQUENCE _ STATE MENT Ġ|| Ġtype Ġ=== ĠSW ITCH _ STATE MENT ĊĠĠĠĠĠĠĠ Ġ|| Ġtype Ġ=== ĠDO _ STATE MENT ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠInd ent . get Normal Indent () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( type Ġ=== ĠBLOCK _ BODY ) Ġreturn ĠInd ent . get None Indent () ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Spacing ( child 1 : ĠBlock ?, Ġchild 2 : ĠBlock ): ĠSp acing ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( child 2 Ġis ĠPowerShell Code Block ) Ġmy Spacing Processor . get Spacing ( child 1 Ġas ? ĠPowerShell Code Block ?, Ġchild 2 ) Ġelse Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġbuild Children (): ĠMutable List < Block > Ġ{ ĊĠĠĠ Ġif Ġ( is Leaf ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠAbstract Block . EMPTY ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġtl Children Ġ= ĠArrayList < Block >() ĊĠĠĠ Ġvar Ġchild Node : ĠAST Node ? Ġ= Ġnode . firstChild Node ĊĠĠĠ Ġwhile Ġ( child Node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( child Node . text . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}. isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġchild Node Ġ= Ġchild Node . tree Next ĊĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġchild Block : ĠPowerShell Code Block Ġ= Ġif Ġ( child Node . elementType Ġ=== ĠIN VOC ATION _ EXPRESSION ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Call Expression Block ( child Node , Ġnull Ġ/* create Wrap ( child Node ) */, Ġcreate Alignment ( child Node ), Ġcreate Indent ( child Node )) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠPowerShell Block Impl ( child Node , Ġcreate Wrap ( child Node ), Ġcreate Alignment ( child Node ), Ġcreate Indent ( child Node ), Ġmy Indent Size , Ġmy Common Settings , Ġmy PS Settings ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġchild Block . parent Ġ= Ġthis ĊĠĠĠĠĠ Ġtl Children . add ( child Block ) ĊĠĠĠĠĠ Ġchild Node Ġ= Ġchild Node . tree Next ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtl Children ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Call Expression Block ( node : ĠAST Node , Ġwrap : ĠWrap ?, Ġalignment : ĠAlignment ?, Ġindent : ĠInd ent ?): ĠPowerShell Code Block Ġ{ ĊĠĠĠ Ġval Ġnodes Ġ= ĠArrayList < AST Node >() ĊĠĠĠ Ġif Ġ( node . elementType Ġ=== ĠIN VOC ATION _ EXPRESSION Ġ&& Ġnode . tree Parent ?. elementType Ġ!== ĠIN VOC ATION _ EXPRESSION ) Ġ{ ĊĠĠĠĠĠ Ġcollect Nodes ( nodes , Ġnode ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġcall Chain Block Ġ= ĠChain MethodCall Block Builder ( alignment , Ġwrap , Ġindent , Ġmy Common Settings , Ġmy PS Settings ). build ( nodes ) ĊĠĠĠ Ġcall Chain Block . parent Ġ= Ġthis ĊĠĠĠ Ġreturn Ġcall Chain Block ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcollect Nodes ( nodes : ĠArrayList < AST Node >, Ġnode : ĠAST Node ) Ġ{ ĊĠĠĠ Ġvar Ġchild Ġ= Ġnode . firstChild Node ĊĠĠĠ Ġwhile Ġ( child Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! Formatter Util . contains White Spaces Only ( child )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġchild . elementType ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ=== ĠIN VOC ATION _ EXPRESSION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcollect Nodes ( nodes , Ġchild ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ!== ĠN LS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġnodes . add ( child ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġchild Ġ= Ġchild . tree Next ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Alignment ( node : ĠAST Node ): ĠAlignment ? Ġ{ ĊĊĠĠĠ Ġif Ġ( is Call Argument ( node ) Ġ&& Ġmy Common Settings . ALIGN _ MULT IL INE _ PARAMETERS _ IN _ CALL S ) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( is For Parameter ( node ) Ġ&& Ġmy Common Settings . ALIGN _ MULT IL INE _ FOR ) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( isFunction Parameter ( node ) Ġ&& Ġmy Common Settings . ALIGN _ MULT IL INE _ PARAMETERS ) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( is Block Parameter ( node ) Ġ&& Ġmy PS Settings . ALIGN _ MULT IL INE _ BLOCK _ PARAMETERS ) Ġreturn Ġmy Base Alignment Ċ Ċ // ĠĠĠ Ġif Ġ( is Invocation Expression Qualifier ( node ) Ġ&& Ġmy Common Settings . ALIGN _ MULT IL INE _ CHAIN ED _ METHO DS ) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( is L hs Or R hs Binary Expression ( node ) Ġ&& Ġmy Common Settings . ALIGN _ MULT IL INE _ BINARY _ OPERATION ) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( is Type Literal ( node )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Catch Clause Context ( node ) Ġ&& Ġmy PS Settings . ALIGN _ MULT IL INE _ CATCH _ TYPE _ LIST ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Base Alignment ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( my PS Settings . ALIGN _ MULT IL INE _ ATTRIBUTE _ ARGUMENT Ġ&& Ġis Attribute Argument ( node )) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( my PS Settings . ALIGN _ MULT IL INE _ PIPELINE _ STATE MENT Ġ&& Ġis Pipeline Context ( node )) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( my Node . elementType Ġ=== ĠP AREN TH ES IZED _ ARGUMENT _ LIST ĊĠĠĠĠĠĠĠ Ġ&& Ġmy Common Settings . ALIGN _ MULT IL INE _ PARAMETERS _ IN _ CALL S ĊĠĠĠĠĠĠĠ Ġ&& Ġmy Common Settings . CALL _ PARAMETERS _ LP AREN _ ON _ NEXT _ LINE ) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġif Ġ( my Node . elementType Ġ=== ĠPARAMETER _ CLA USE ĊĠĠĠĠĠĠĠ Ġ&& Ġmy Common Settings . ALIGN _ MULT IL INE _ PARAMETERS ĊĠĠĠĠĠĠĠ Ġ&& Ġmy Common Settings . METHOD _ PARAMETERS _ LP AREN _ ON _ NEXT _ LINE ) Ġreturn Ġmy Base Alignment ĊĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġis L hs Or R hs Binary Expression ( node : ĠAST Node ) Ġ= Ġis Binary Expression Context ( node ) Ġ&& Ġnode . psi Ġis ĠPowerShell Expression ĊĊĠ Ġprivate Ġfun Ġcreate Indent ( node : ĠAST Node ): ĠInd ent ? Ġ{ ĊĠĠĠ Ġval Ġtype Ġ= Ġnode . elementType ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠ Ġtype Ġ=== ĠBLOCK _ BODY Ġ-> Ġget Block Indent ( node ) ĊĠĠĠĠĠ Ġtype Ġ=== ĠLC URL Y Ġ|| Ġtype Ġ=== ĠRC URL Y Ġ-> Ġget Brace Indent ( node ) ĊĠĠĠĠĠ Ġis Call Argument ( node ) Ġ|| Ġis Function Parameter ( node ) Ġ-> ĠInd ent . get Continuation Indent () ĊĠĠĠĠĠ Ġis Block Parameter ( node ) Ġ-> ĠInd ent . get Normal Indent () ĊĠĠĠĠĠ Ġis For Parameter ( node ) Ġ-> ĠInd ent . get Continuation Indent () ĊĠĠĠĠĠ Ġis R hs Binary Expression Context ( node ) Ġ-> ĠInd ent . get Continuation Indent () ĊĠĠĠĠĠ Ġis Invocation Expression Qualifier ( node ) Ġ-> ĠInd ent . get Continuation Indent () ĊĠĠĠĠĠ Ġis Expression In Pipeline Tail ( node ) Ġ-> ĠInd ent . get Continuation Indent () ĊĠĠĠĠĠ Ġis Attribute Argument ( node ) Ġ-> ĠInd ent . get Continuation Indent () ĊĠĠĠĠĠ Ġtype Ġ=== ĠEXP AND ABLE _ HERE _ STRING _ END Ġ-> ĠInd ent . get Absolute None Indent () ĊĠĠĠĠĠ Ġelse Ġ-> ĠInd ent . get None Indent () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Brace Indent ( brace Node : ĠAST Node ): ĠInd ent Ġ{ ĊĠĠĠ Ġif Ġ( is Class Declaration Context ( brace Node ) Ġ|| Ġis Enum Declaration Context ( brace Node )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( my Common Settings . CLASS _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED Ġ|| Ġmy Common Settings . CLASS _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInd ent . get Normal Indent () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġif Ġ( is Callable Declaration Context ( brace Node )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( my Common Settings . METHOD _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED Ġ|| Ġmy Common Settings . METHOD _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInd ent . get Normal Indent () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED Ġ|| Ġmy Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED 2 ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠInd ent . get Normal Indent () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠInd ent . get None Indent () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Block Indent ( block Node : ĠAST Node ): ĠInd ent ? Ġ{ ĊĠĠĠ Ġif Ġ( is Class Declaration Context ( block Node ) Ġ|| Ġis Enum Declaration Context ( block Node )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( my Common Settings . CLASS _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInd ent . get Space Indent ( my Indent Size Ġ* Ġ 2 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġif Ġ( is Callable Declaration Context ( block Node )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( my Common Settings . METHOD _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInd ent . get Space Indent ( my Indent Size Ġ* Ġ 2 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ SHIFT ED 2 ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠInd ent . get Space Indent ( my Indent Size Ġ* Ġ 2 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠInd ent . get Normal Indent () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Wrap ( child Node : ĠAST Node ): ĠWrap Ġ{ ĊĠĠĠ Ġif Ġ(( isFunction Parameter ( child Node ) Ġ|| Ġis Block Parameter ( child Node )) Ġ&& Ġfind Sibling Skipping ( child Node , ĠarrayOf ( NLS , ĠWH ITE _ SPACE ), Ġfalse )?. elementType Ġ!= ĠLP ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfirst Node Ġ= Ġis First Node In Parameter ( child Node , Ġtrue ) ĊĠĠĠĠĠ Ġval Ġwrap Value Ġ= Ġif Ġ( isFunction Parameter ( child Node )) Ġmy Common Settings . METHOD _ PARAMETERS _ WRAP Ġelse Ġmy PS Settings . BLOCK _ PARAMETER _ CLA USE _ WRAP ĊĠĠĠĠĠ Ġval Ġparam Wrap Ġ= ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( wrap Value ), Ġfirst Node ) ĊĠĠĠĠĠ Ġif Ġ( first Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Attribute ( child Node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġattribute Wrap Ġ= ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . PARAMETER _ AN NOT ATION _ WRAP ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . PARAMETER _ AN NOT ATION _ WRAP Ġ== ĠWR AP _ ALWAYS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġattribute Wrap ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresult Wrap Type Ġ= Ġwrap Value Ġor Ġmy Common Settings . PARAMETER _ AN NOT ATION _ WRAP ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Child Wrap ( attribute Wrap , ĠWr apping Util . get Wrap Type ( result Wrap Type ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġparam Wrap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Follow edBy Attribute ( child Node )) Ġ{// se ems Ġto Ġbe Ġalways Ġthe Ġcase ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . PARAMETER _ AN NOT ATION _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġparam Wrap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Call Argument ( child Node ) Ġ&& Ġfind Sibling Skipping ( child Node , ĠarrayOf ( NLS , ĠWH ITE _ SPACE ), Ġfalse )?. elementType Ġ!= ĠLP ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . CALL _ PARAMETERS _ WRAP ), Ġis First Node In Parameter ( child Node , Ġtrue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is For Parameter ( child Node )) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . FOR _ STATE MENT _ WRAP ), Ġis First Node In For Parameter ( child Node )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is R hs Binary Expression Context ( child Node )) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . BINARY _ OPERATION _ WRAP ), Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Attribute ( child Node ) Ġ|| Ġis Follow edBy Attribute ( child Node )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Class Declaration Context ( child Node )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . CLASS _ AN NOT ATION _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Property Declaration Context ( child Node )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . FIELD _ AN NOT ATION _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Callable Declaration Context ( child Node )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . METHOD _ AN NOT ATION _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Parameter Clause Context ( child Node )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . PARAMETER _ AN NOT ATION _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Block Parameter Clause Context ( child Node )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my PS Settings . BLOCK _ PARAMETER _ CLA USE _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Block Body Context ( child Node )) Ġ{// attribute Ġin Ġthe Ġparam Ġblock ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my Common Settings . PARAMETER _ AN NOT ATION _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Type Literal ( child Node )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Catch Clause Context ( child Node )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my PS Settings . CATCH _ TYPE _ LIST _ WRAP ), Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Attribute Argument ( child Node ) Ġ&& Ġfind Sibling Skipping WS ( child Node , Ġfalse )?. elementType Ġ!= ĠLP ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my PS Settings . ATTRIBUTE _ ARGUMENT _ WRAP ), Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Expression In Pipeline Tail ( child Node )) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wr apping Util . get Wrap Type ( my PS Settings . PIPELINE _ TAIL _ WRAP ), Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( child Node . elementType Ġ=== ĠLP ) Ġ{ ĊĠĠĠĠĠ Ġval Ġnext Sibling Ġ= Ġfind Sibling Skipping WS ( child Node ) ĊĠĠĠĠĠ Ġif Ġ( next Sibling Ġ!= Ġnull Ġ&& Ġis Binary Expression ( next Sibling ) Ġ&& Ġmy Common Settings . PARENT HE SES _ EXPRESSION _ LP AREN _ WRAP ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wrap Type . ALWAYS , Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( child Node . elementType Ġ=== ĠRP ) Ġ{ ĊĠĠĠĠĠ Ġval Ġprev Sibling Ġ= Ġfind Sibling Skipping WS ( child Node , Ġfalse ) ĊĠĠĠĠĠ Ġif Ġ( prev Sibling Ġ!= Ġnull Ġ&& Ġis Binary Expression ( prev Sibling ) Ġ&& Ġmy Common Settings . PARENT HE SES _ EXPRESSION _ RP AREN _ WRAP ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrap . create Wrap ( Wrap Type . ALWAYS , Ġtrue ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠWrap . create Wrap ( Wrap Type . NONE , Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġset Parent ( new Parent : ĠBlock With Parent ?) Ġ{ ĊĠĠĠ Ġmy Parent Ġ= Ġnew Parent Ġas ĠPowerShell Block Impl ? ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetParent (): ĠBlock With Parent ? Ġ= Ġmy Parent Ċ Ċ } Ċ Ċ class ĠPowerShell Spacing Processor ( private Ġval Ġmy Common Settings : ĠCommon Code Style Settings , Ġprivate Ġval Ġmy PowerShell Settings : ĠPowerShell Code Style Settings ) Ġ{ ĊĠ Ġprivate Ġvar Ġmy Child 1 : ĠAST Node ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġmy Child 2 : ĠAST Node ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġmy Parent : ĠPsi Element ? Ġ= Ġnull ĊĊĠ Ġprivate Ġfun Ġinit ( child : ĠAST Node ?) Ġ{ ĊĠĠĠ Ġif Ġ( child Ġ== Ġnull ) Ġreturn ĊĊĠĠĠ Ġvar Ġtree Prev : ĠAST Node ? Ġ= Ġchild . tree Prev ĊĠĠĠ Ġwhile Ġ( tree Prev Ġ!= Ġnull Ġ&& Ġis WhiteSpace Or N ls ( tree Prev )) Ġ{ ĊĠĠĠĠĠ Ġtree Prev Ġ= Ġtree Prev . tree Prev ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( tree Prev Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġinit ( child . tree Parent ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġmy Child 2 Ġ= Ġchild ĊĊĠĠĠĠĠ Ġmy Child 1 Ġ= Ġtree Prev ĊĠĠĠĠĠ Ġval Ġparent Ġ= Ġtree Prev . tree Parent Ġas ĠComposite Element ĊĠĠĠĠĠ Ġmy Parent Ġ= ĠSource Tree To Psi Map . tree Element To Psi ( parent ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġget Spacing ( child 1 : ĠPowerShell Code Block ?, Ġchild 2 : ĠPowerShell Code Block ): ĠSp acing ? Ġ{ ĊĠĠĠ Ġif Ġ( child 1 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġinit ( child 2 . node ) ĊĊĠĠĠ Ġif Ġ( my Child 1 Ġ== Ġnull Ġ|| Ġmy Child 2 Ġ== Ġnull ) Ġreturn Ġnull ĊĊĠĠĠ Ġval Ġnode 1 Ġ= Ġmy Child 1 Ġas ĠAST Node ĊĠĠĠ Ġval Ġtype 1 Ġ= Ġmy Child 1 !!. elementType ĊĠĠĠ Ġval Ġnode 2 Ġ= Ġmy Child 2 Ġas ĠAST Node ĊĠĠĠ Ġval Ġtype 2 Ġ= Ġmy Child 2 !!. elementType ĊĊĠĠĠ Ġif Ġ( LC URL Y Ġ=== Ġtype 1 Ġ|| ĠRC URL Y Ġ=== Ġtype 2 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġbr ace Node Ġ= Ġif Ġ( LC URL Y Ġ=== Ġtype 1 ) Ġnode 1 Ġelse Ġnode 2 ĊĠĠĠĠĠ Ġval Ġblock Body Ġ= Ġfind Sibling Skipping ( brace Node , ĠarrayOf ( NLS , ĠWH ITE _ SPACE ), Ġbr ace Node Ġ=== Ġnode 1 ) ĊĠĠĠĠĠ Ġval Ġblock Body Token Ġ= Ġblock Body ?. elementType ĊĠĠĠĠĠ Ġif Ġ( block Body Token Ġ=== ĠIDENT IFIER Ġ|| Ġblock Body Token Ġ=== ĠS IMP LE _ ID ) Ġreturn Ġnull ĊĊĠĠĠĠĠ Ġvar Ġis Keep One Line Ġ= Ġfalse ĊĠĠĠĠĠ Ġval Ġis Simple Block Ġ= Ġblock Body Token Ġ=== ĠBLOCK _ BODY Ġ&& Ġ! contains New Lines ( block Body ) Ġ|| Ġ( block Body Token Ġ=== ĠLC URL Y Ġ|| Ġblock Body Token Ġ=== ĠRC URL Y ) ĊĠĠĠĠĠ Ġif Ġ( is Simple Block ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Keep One Line Ġ= Ġif Ġ( is Callable Declaration Context ( brace Node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmy Common Settings . KEEP _ SIMPLE _ METHO DS _ IN _ ONE _ LINE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Class Declaration Context ( brace Node ) Ġ|| Ġis Enum Declaration Context ( brace Node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmy Common Settings . KEEP _ SIMPLE _ CLASSES _ IN _ ONE _ LINE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Script Block Expression Context ( brace Node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmy Common Settings . KEEP _ SIMPLE _ L AM BD AS _ IN _ ONE _ LINE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Hash Literal Context ( brace Node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmy PowerShell Settings . KEEP _ SIMPLE _ HASH _ LITERAL _ IN _ ONE _ LINE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmy Common Settings . KEEP _ SIMPLE _ BLOCKS _ IN _ ONE _ LINE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ BR ACES , Ġ! is Keep One Line ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( SQ BR _ L Ġ=== Ġtype 1 Ġ|| ĠS Q BR _ R Ġ=== Ġtype 2 ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Cast Expression Super Context ( node 1 ) Ġ|| Ġis Cast Expression Super Context ( node 2 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ CAST _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ BRACK ETS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( type 1 Ġ=== ĠTYPE _ LITERAL _ EXPRESSION Ġ&& Ġnode 1 . tree Parent ?. elementType Ġ== ĠCAST _ EXPRESSION ) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AFTER _ TYPE _ CAST ) ĊĊĠĠĠ Ġif Ġ( LP Ġ=== Ġtype 1 ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is ArgumentList Context ( node 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtree Next Ġ= Ġfind Sibling Skipping ( node 1 , ĠarrayOf ( NLS , ĠWH ITE _ SPACE )) ĊĠĠĠĠĠĠĠ Ġval Ġlf After L paren Ġ= Ġmy Common Settings . CALL _ PARAMETERS _ WRAP Ġ!= ĠDO _ NOT _ WRAP Ġ&& Ġmy Common Settings . CALL _ PARAMETERS _ LP AREN _ ON _ NEXT _ LINE ĊĠĠĠĠĠĠĠ Ġif Ġ( tree Next ?. elementType Ġ=== ĠRP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġlf After R paren Ġ= Ġmy Common Settings . CALL _ PARAMETERS _ WRAP Ġ!= ĠDO _ NOT _ WRAP Ġ&& Ġmy Common Settings . CALL _ PARAMETERS _ RP AREN _ ON _ NEXT _ LINE ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ EMPTY _ METHOD _ CALL _ PARENT HE SES , Ġlf After L paren Ġ|| Ġlf After R paren ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ METHOD _ CALL _ PARENT HE SES , Ġlf After L paren ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Parameter Clause Context ( node 1 ) Ġ|| Ġis Block Parameter Clause Context ( node 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtree Next Ġ= Ġfind Sibling Skipping ( node 1 , ĠarrayOf ( NLS , ĠWH ITE _ SPACE )) ĊĠĠĠĠĠĠĠ Ġval Ġmethod Param Ġ= Ġis Parameter Clause Context ( node 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġwrap Value Ġ= Ġif Ġ( method Param ) Ġmy Common Settings . METHOD _ PARAMETERS _ WRAP Ġelse Ġmy PowerShell Settings . BLOCK _ PARAMETER _ CLA USE _ WRAP ĊĠĠĠĠĠĠĠ Ġval Ġl Paren Next Line Ġ= Ġif Ġ( method Param ) Ġmy Common Settings . METHOD _ PARAMETERS _ LP AREN _ ON _ NEXT _ LINE Ġelse Ġmy PowerShell Settings . BLOCK _ PARAMETERS _ LP AREN _ ON _ NEXT _ LINE ĊĠĠĠĠĠĠĠ Ġval Ġlf After L paren Ġ= Ġwrap Value Ġ!= ĠDO _ NOT _ WRAP Ġ&& Ġl Paren Next Line ĊĊĠĠĠĠĠĠĠ Ġif Ġ( tree Next ?. elementType Ġ=== ĠRP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġr Paren Next Line Ġ= Ġif Ġ( method Param ) Ġmy Common Settings . METHOD _ PARAMETERS _ RP AREN _ ON _ NEXT _ LINE Ġelse Ġmy PowerShell Settings . BLOCK _ PARAMETERS _ RP AREN _ ON _ NEXT _ LINE ĊĠĠĠĠĠĠĠĠĠ Ġval Ġlf After R paren Ġ= Ġwrap Value Ġ!= ĠDO _ NOT _ WRAP Ġ&& Ġr Paren Next Line ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ EMPTY _ METHOD _ PARENT HE SES , Ġlf After L paren Ġ|| Ġlf After R paren ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ METHOD _ PARENT HE SES , Ġlf After L paren ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is For Clause Context ( node 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ FOR _ PARENT HE SES , Ġmy Common Settings . FOR _ STATE MENT _ LP AREN _ ON _ NEXT _ LINE ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( is If Statement Context ( node 1 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ IF _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is ForEach Statement Context ( node 1 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ FOR _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is While Statement Context ( node 1 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ WH ILE _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is Switch Statement Context ( node 1 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ SWITCH _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is Parent hesized Expression Context ( node 1 )) Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is Sub Expression Context ( node 1 )) Ġreturn Ġsimple Spacing ( my PowerShell Settings . SPACE _ WITH IN _ SUB _ EXPRESSION _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( node 1 . tree Parent ?. elementType Ġ=== ĠATTRIBUT E ) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ AN NOT ATION _ PARENT HE SES ) ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( RP Ġ=== Ġtype 2 ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is ArgumentList Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtree Prev Ġ= Ġfind Sibling Skipping ( node 2 , ĠarrayOf ( NLS , ĠWH ITE _ SPACE ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġlf After R paren Ġ= Ġmy Common Settings . CALL _ PARAMETERS _ WRAP Ġ!= ĠDO _ NOT _ WRAP Ġ&& Ġmy Common Settings . CALL _ PARAMETERS _ RP AREN _ ON _ NEXT _ LINE ĊĠĠĠĠĠĠĠ Ġif Ġ( tree Prev ?. elementType Ġ=== ĠLP ) Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ EMPTY _ METHOD _ CALL _ PARENT HE SES , Ġlf After R paren ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ METHOD _ CALL _ PARENT HE SES , Ġlf After R paren ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Parameter Clause Context ( node 2 ) Ġ|| Ġis Block Parameter Clause Context ( node 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtree Prev Ġ= Ġfind Sibling Skipping ( node 2 , ĠarrayOf ( NLS , ĠWH ITE _ SPACE ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġmethod Param Ġ= Ġis Parameter Clause Context ( node 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġwrap Value Ġ= Ġif Ġ( method Param ) Ġmy Common Settings . METHOD _ PARAMETERS _ WRAP Ġelse Ġmy PowerShell Settings . BLOCK _ PARAMETER _ CLA USE _ WRAP ĊĠĠĠĠĠĠĠ Ġval Ġr Paren Next Line Ġ= Ġif Ġ( method Param ) Ġmy Common Settings . METHOD _ PARAMETERS _ RP AREN _ ON _ NEXT _ LINE Ġelse Ġmy PowerShell Settings . BLOCK _ PARAMETERS _ RP AREN _ ON _ NEXT _ LINE ĊĠĠĠĠĠĠĠ Ġval Ġlf After R paren Ġ= Ġwrap Value Ġ!= ĠDO _ NOT _ WRAP Ġ&& Ġr Paren Next Line ĊĠĠĠĠĠĠĠ Ġif Ġ( tree Prev ?. elementType Ġ=== ĠLP ) Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ EMPTY _ METHOD _ PARENT HE SES , Ġlf After R paren ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ METHOD _ PARENT HE SES , Ġlf After R paren ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is For Clause Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ WITH IN _ FOR _ PARENT HE SES , Ġmy Common Settings . FOR _ STATE MENT _ RP AREN _ ON _ NEXT _ LINE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is If Statement Context ( node 2 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ IF _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is ForEach Statement Context ( node 2 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ FOR _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is While Statement Context ( node 2 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ WH ILE _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is Switch Statement Context ( node 2 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ SWITCH _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is Parent hesized Expression Context ( node 2 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( is Sub Expression Context ( node 2 )) Ġreturn Ġsimple Spacing ( my PowerShell Settings . SPACE _ WITH IN _ SUB _ EXPRESSION _ PARENT HE SES ) ĊĊĠĠĠĠĠ Ġif Ġ( node 2 . tree Parent ?. elementType Ġ=== ĠATTRIBUT E ) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ WITH IN _ AN NOT ATION _ PARENT HE SES ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠLP ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( type 1 Ġ=== ĠIF ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ IF _ PARENT HE SES ) ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type 1 Ġ== ĠFOR Ġ|| Ġtype 1 Ġ== ĠFORE ACH ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ FOR _ PARENT HE SES ) ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type 1 Ġ== ĠWH ILE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ WH ILE _ PARENT HE SES ) ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Switch Statement Context ( node 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ SWITCH _ PARENT HE SES ) ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( node 1 . psi . context Ġis ĠPowerShell Attribute ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ AN OT ATION _ PARAMETER _ LIST ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠPARAMETER _ CLA USE ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ METHOD _ PARENT HE SES ) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( type 2 Ġ=== ĠP AREN TH ES IZED _ ARGUMENT _ LIST ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ METHOD _ CALL _ PARENT HE SES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Assignment Operator ( type 1 ) Ġ|| Ġis Assignment Operator ( type 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ ASSIGN MENT _ OPER ATORS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Comparison Operator ( type 1 ) Ġ|| Ġis Comparison Operator ( type 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ REL ATION AL _ OPER ATORS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Add itive Operator ( node 1 ) Ġ|| Ġis Add itive Operator ( node 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ ADD ITIVE _ OPER ATORS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Logical Operator ( type 1 ) Ġ|| Ġis Logical Operator ( type 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ LOG ICAL _ OPER ATORS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Bit wise Operator ( type 1 ) Ġ|| Ġis Bit wise Operator ( type 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ BIT WISE _ OPER ATORS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Multip lic ative Operator ( type 1 ) Ġ|| Ġis Multip lic ative Operator ( type 2 )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! is Identifier ( node 1 . tree Parent ) Ġ&& Ġ! is Identifier ( node 2 . tree Parent )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ MULTI PL IC ATIVE _ OPER ATORS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Unary Operator ( node 1 ) Ġ|| Ġis Unary Operator ( node 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ UNARY _ OPERATOR ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Reference Double Colon Operator ( type 1 ) Ġ|| Ġis Reference Double Colon Operator ( type 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ METHOD _ REF _ DBL _ COL ON ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠLC URL Y ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Class Declaration Context ( node 2 ) Ġ|| Ġis Enum Declaration Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . CLASS _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Declaration ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ CLASS _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ CLASS _ L BRACE , Ġmy Common Settings . CLASS _ BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Callable Declaration Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . METHOD _ BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Declaration ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ METHOD _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ METHOD _ L BRACE , Ġmy Common Settings . METHOD _ BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is If Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ IF _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ IF _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is For Clause Context ( node 2 ) Ġ|| Ġis ForEach Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ FOR _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ FOR _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is While Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ WH ILE _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ WH ILE _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Do Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ DO _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ DO _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Switch Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ SWITCH _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ SWITCH _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Try Statement Block Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ TRY _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ TRY _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Else Clause Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ TRY _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ ELSE _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Catch Clause Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ TRY _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ CATCH _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Finally Clause Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my Common Settings . SPACE _ BEFORE _ FIN ALLY _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Data Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ TRY _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my PowerShell Settings . SPACE _ BEFORE _ DATA _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Trap Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Common Settings . BRACE _ STYLE Ġ== ĠNEXT _ LINE _ IF _ WRAP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Brace Spacing For Control Statement ( node 2 , Ġmy Common Settings . SPACE _ BEFORE _ TRY _ L BRACE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( my PowerShell Settings . SPACE _ BEFORE _ TRAP _ L BRACE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( is Script Block Expression Context ( node 2 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Brace Spacing ( 0 , ĠInt . MAX _ VALUE , Ġmy Common Settings . BRACE _ STYLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠELSE _ CLA USE ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ BEFORE _ ELSE _ KEYWORD , Ġmy Common Settings . ELSE _ ON _ NEW _ LINE ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠELSE IF _ CLA USE ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ BEFORE _ ELSE _ KEYWORD , Ġmy Common Settings . SPECIAL _ ELSE _ IF _ TRE AT MENT ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠCATCH _ CLA USE ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ BEFORE _ CATCH _ KEYWORD , Ġmy Common Settings . CATCH _ ON _ NEW _ LINE ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠFIN ALLY _ CLA USE ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ BEFORE _ FIN ALLY _ KEYWORD , Ġmy Common Settings . FIN ALLY _ ON _ NEW _ LINE ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( type 2 Ġ=== ĠWH ILE Ġ&& Ġis Do Statement Context ( node 2 )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcreate Spacing ( my Common Settings . SPACE _ BEFORE _ WH ILE _ KEYWORD , Ġmy Common Settings . WH ILE _ ON _ NEW _ LINE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( COMMA Ġ=== Ġtype 1 ) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AFTER _ COMMA ) ĊĠĠĠ Ġif Ġ( COMMA Ġ=== Ġtype 2 ) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ COMMA ) ĊĊĠĠĠ Ġif Ġ( type 1 Ġ== ĠDS ) Ġreturn ĠSp acing . create Spacing ( 0 , Ġ 0 , Ġ 0 , Ġtrue , Ġ 0 ) ĊĊĠĠĠ Ġif Ġ( type 1 Ġ=== ĠCOL ON ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġif Ġ( can Add Space Before ( node 2 )) Ġsimple Spacing ( my PowerShell Settings . SPACE _ AFTER _ COL ON ) Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( type 2 Ġ== ĠCOL ON ) Ġreturn Ġif Ġ( can Add Space Before ( node 2 )) Ġsimple Spacing ( my PowerShell Settings . SPACE _ BEFORE _ COL ON ) Ġelse Ġnull ĊĊĠĠĠ Ġif Ġ( type 1 Ġ== ĠS EM I ) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AFTER _ SE MIC OL ON ) ĊĊĠĠĠ Ġif Ġ( type 2 Ġ== ĠS EM I ) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ BEFORE _ SE MIC OL ON ) ĊĊĠĠĠ Ġif Ġ(( PowerShell TokenType Sets . KEYWORD S . contains ( type 1 ) Ġ&& Ġ! is Identifier ( node 1 . tree Parent ) /* || ĠHAND LER _ PARAMETER _ LABEL Ġ=== Ġtype 1 */) Ġ&& ĠN LS Ġ!== Ġtype 2 ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠSp acing . create Spacing ( 1 , Ġ 1 , Ġ 0 , Ġtrue , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( is Red irection Operator ( type 1 )) Ġreturn Ġsimple Spacing ( my Common Settings . SPACE _ AR O UND _ REL ATION AL _ OPER ATORS ) ĊĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdependent Brace Spacing For Declaration ( node : ĠAST Node , Ġadd Single Space : ĠBoolean ): ĠSp acing Ġ{ ĊĠĠĠ Ġval Ġdeclaration Ġ= Ġnode . psi . context ĊĠĠĠ Ġvar Ġstart Offset : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġif Ġ( declaration Ġis ĠPowerShell Component ) Ġ{ ĊĠĠĠĠĠ Ġstart Offset Ġ= Ġdeclaration . name Identifier ?. text Range ?. start Offset ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( start Offset Ġ== Ġnull ) Ġstart Offset Ġ= Ġmy Parent !!. text Range . start Offset ĊĊĠĠĠ Ġreturn Ġdependent LF Spacing ( add Single Space , ĠText Range ( start Offset , Ġnode . text Range . end Offset )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdependent Brace Spacing For Control Statement ( node : ĠAST Node , Ġadd Single Space : ĠBoolean ): ĠSp acing Ġ{ ĊĠĠĠ Ġval Ġstart Offset Ġ= Ġnode . psi . context ?. text Range ?. start Offset Ġ?: Ġmy Parent !!. text Range . start Offset ĊĠĠĠ Ġreturn Ġdependent LF Spacing ( add Single Space , ĠText Range ( start Offset , Ġnode . text Range . end Offset )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Spacing ( add Space : ĠBoolean , Ġensure Line Break : ĠBoolean , Ġkeep Line Break s : ĠBoolean Ġ= Ġmy Common Settings . KEEP _ LINE _ BREAK S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Blank Lines : ĠInt Ġ= Ġkeep Blank Lines ()): ĠSp acing Ġ{ ĊĠĠĠ Ġval Ġspaces Ġ= Ġif Ġ( add Space ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġval Ġmin Lines Ġ= Ġif Ġ( ensure Line Break ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġreturn ĠSp acing . create Spacing ( spaces , Ġspaces , Ġmin Lines , Ġkeep Line Break s , Ġkeep Blank Lines ) ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġsimple Spacing ( add Single Space : ĠBoolean , Ġmin Lines Feed s : ĠInt Ġ= Ġ 0 ): ĠSp acing Ġ{ ĊĠĠĠ Ġval Ġspaces Ġ= Ġif Ġ( add Single Space ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġreturn ĠSp acing . create Spacing ( spaces , Ġspaces , Ġmin Lines Feed s , Ġmy Common Settings . KEEP _ LINE _ BREAK S , Ġkeep Blank Lines ()) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġspacing Remove Line Break s ( add Single Space : ĠBoolean ): ĠSp acing Ġ{ ĊĠĠĠ Ġval Ġspaces Ġ= Ġif Ġ( add Single Space ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġreturn ĠSp acing . create Spacing ( spaces , Ġspaces , Ġ 0 , Ġfalse , Ġ 0 ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġspacing Ensure Line Break ( add Single Space : ĠBoolean Ġ= Ġfalse ): ĠSp acing Ġ{ ĊĠĠĠ Ġval Ġspaces Ġ= Ġif Ġ( add Single Space ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġreturn ĠSp acing . create Spacing ( spaces , Ġspaces , Ġ 1 , Ġfalse , Ġ 1 ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdependent LF Spacing ( add Single Space : ĠBoolean , Ġdepend ant Text Range : ĠText Range ): ĠSp acing Ġ{ ĊĠĠĠ Ġval Ġspaces Ġ= Ġif Ġ( add Single Space ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġreturn ĠSp acing . create Dependent LF Spacing ( spaces , Ġspaces , Ġdepend ant Text Range , Ġfalse , Ġkeep Blank Lines ()) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Brace Spacing ( add Single Space : ĠBoolean , Ġbr ace Placement Style : ĠInt , Ġdepend ant Text Range : ĠText Range ? Ġ= Ġnull ): ĠSp acing Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( brace Placement Style ) Ġ{ ĊĠĠĠĠĠ ĠEND _ OF _ LINE Ġ-> Ġspacing Remove Line Break s ( add Single Space ) ĊĠĠĠĠĠ ĠNEXT _ LINE Ġ-> Ġspacing Ensure Line Break ( add Single Space ) ĊĠĠĠĠĠ ĠNEXT _ LINE _ SHIFT ED Ġ-> Ġspacing Ensure Line Break ( add Single Space ) ĊĠĠĠĠĠ ĠNEXT _ LINE _ SHIFT ED 2 Ġ-> Ġspacing Ensure Line Break ( add Single Space ) ĊĠĠĠĠĠ ĠNEXT _ LINE _ IF _ WRAP PED Ġ-> Ġif Ġ( depend ant Text Range Ġ!= Ġnull ) Ġdependent LF Spacing ( add Single Space , Ġdepend ant Text Range ) Ġelse Ġsimple Spacing ( add Single Space ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġsimple Spacing ( add Single Space ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Brace Spacing ( min Spaces : ĠInt , Ġmax Spaces : ĠInt , Ġbr ace Placement Style : ĠInt , Ġdepend ant Text Range : ĠText Range ? Ġ= Ġnull ): ĠSp acing Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( brace Placement Style ) Ġ{ ĊĠĠĠĠĠ ĠEND _ OF _ LINE Ġ-> ĠSp acing . create Spacing ( min Spaces , Ġmax Spaces , Ġ 0 , Ġfalse , Ġ 0 ) ĊĠĠĠĠĠ ĠNEXT _ LINE Ġ-> ĠSp acing . create Spacing ( min Spaces , Ġmax Spaces , Ġ 1 , Ġfalse , Ġ 0 ) ĊĠĠĠĠĠ ĠNEXT _ LINE _ SHIFT ED Ġ-> ĠSp acing . create Spacing ( min Spaces , Ġmax Spaces , Ġ 1 , Ġfalse , Ġ 0 ) ĊĠĠĠĠĠ ĠNEXT _ LINE _ SHIFT ED 2 Ġ-> ĠSp acing . create Spacing ( min Spaces , Ġmax Spaces , Ġ 1 , Ġfalse , Ġ 0 ) ĊĠĠĠĠĠ ĠNEXT _ LINE _ IF _ WRAP PED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( depend ant Text Range Ġ!= Ġnull ) ĠSp acing . create Dependent LF Spacing ( min Spaces , Ġmax Spaces , Ġdepend ant Text Range , Ġfalse , Ġkeep Blank Lines ()) ĊĠĠĠĠĠĠĠ Ġelse ĠSp acing . create Spacing ( min Spaces , Ġmax Spaces , Ġ 0 , Ġmy Common Settings . KEEP _ LINE _ BREAK S , Ġkeep Blank Lines ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> ĠSp acing . create Spacing ( min Spaces , Ġmax Spaces , Ġ 0 , Ġmy Common Settings . KEEP _ LINE _ BREAK S , Ġkeep Blank Lines ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġkeep Blank Lines (): ĠInt Ġ= Ġmy Common Settings . KEEP _ BLANK _ LINES _ IN _ CODE Ċ } Ċ