package Ġcom . te zos . lang . mic hel son . editor . formatter Ċ Ċ import Ġcom . intellij . formatting .* Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . openapi . util . text . StringUtil Ċ import Ġcom . intellij . psi . code Style . Code Style Settings Ċ import Ġcom . intellij . psi . formatter . common . Abstract Block Ċ import Ġcom . intellij . util . Smart List Ċ import Ġcom . intellij . util . containers . Container Util Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠSpecial Ġblock Ġto Ġcreate Ġsub - blocks Ġfor Ġthe Ġline Ġcomment Ġprefix Ġ# Ġand Ġfollowing Ġcontent Ġof Ġthe Ġline Ġcomment . Ċ Ġ* ĠThis Ġis Ġneeded Ġto Ġbe Ġable Ġto Ġinsert Ġa Ġleading Ġspace Ġwhen Ġthe Ġformatting Ġoptions ĠLINE _ COMMENT _ LEADING _ SPACE Ġis Ġenabled . Ċ Ġ* Ċ Ġ* Ġ@ author Ġj ans org Ċ Ġ*/ Ċ class ĠM ic hel son Line Comment Block ( node : ĠAST Node , Ġwrap : ĠWrap , Ġalignment : ĠAlignment ?, Ġprivate Ġval Ġspacing : ĠSp acing Builder , Ġprivate Ġval Ġindent : ĠInd ent ?, Ġcode Style : ĠCode Style Settings , Ġval Ġparent : ĠM ic hel son Block ? Ġ= Ġnull ) Ġ: ĠAbstract Block ( node , Ġwrap , Ġalignment ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmic hel son Style Ġ= Ġcode Style . get Custom Settings ( Mic hel son Code Style Settings :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Children (): ĠMutable List < Block > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmic hel son Style . LINE _ COMMENT _ LEADING _ SPACE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblocks Ġ= ĠSmart List < Block >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Range Ġ= Ġnode . text Range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspace Count Ġ= ĠString Util . count Chars ( node . text , Ġ' Ġ', Ġ 1 , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Range . length Ġ> Ġ 1 Ġ+ Ġspace Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblocks Ġ+= ĠM ic hel son Node Leaf Block ( node , ĠText Range . from ( node Range . start Offset , Ġ 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Text Range Ġ= ĠText Range . create ( node Range . start Offset Ġ+ Ġ 1 Ġ+ Ġspace Count , Ġnode Range . end Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblocks Ġ+= ĠM ic hel son Node Leaf Block ( node , Ġcontent Text Range ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblocks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCollections . emptyList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Spacing ( child 1 : ĠBlock ?, Ġchild 2 : ĠBlock ): ĠSp acing ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġneeded Ġto Ġadd Ġspacing Ġbetween Ġb ested Ġprefix Ġand Ġcontent Ġblocks ĊĠĠĠĠĠĠĠ Ġreturn Ġspacing . get Spacing ( this , Ġchild 1 , Ġchild 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Indent (): ĠInd ent ? Ġ= Ġindent ĊĊĠĠĠ Ġoverride Ġfun Ġis Leaf (): ĠBoolean Ġ= Ġ! mic hel son Style . LINE _ COMMENT _ LEADING _ SPACE Ċ } Ċ Ċ /** Ċ Ġ* ĠSimple Ġblock Ġfor Ġa Ġleaf Ġnode Ġwhich Ġonly Ġspans Ġa Ġpart Ġof Ġa Ġnode 's Ġtext Ġrange . Ċ Ġ* Ġ@ author Ġj ans org Ċ Ġ*/ Ċ private Ġclass ĠM ic hel son Node Leaf Block ( node : ĠAST Node , Ġprivate Ġval Ġcontent Text Range : ĠText Range ) Ġ: ĠAbstract Block ( node , Ġnull , Ġnull ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetText Range (): ĠText Range Ġ= Ġcontent Text Range ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Children (): ĠMutable List < Block > Ġ= ĠCollections . emptyList () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġcontent Text Range . substring ( node . text ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Leaf (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġget Spacing ( child 1 : ĠBlock ?, Ġchild 2 : ĠBlock ): ĠSp acing ? Ġ= Ġnull Ċ } Ċ