package Ġorg . intellij . markdown . fl av ours . g fm Ċ Ċ import Ġorg . intellij . markdown . parser . Look ahead Text Ċ import Ġorg . intellij . markdown . parser . constraints . Markdown Constraints Ċ Ċ class ĠG FM Constraints ( indent s : ĠInt Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtypes : ĠChar Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Explicit : ĠBoolean Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchars E aten : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġis Checkbox : ĠBoolean ) Ġ: ĠMarkdown Constraints ( indent s , Ġtypes , Ġis Explicit , Ġchars E aten ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġbase : ĠMarkdown Constraints ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠBASE ĊĊĠĠĠ Ġoverride Ġfun Ġcreate New Constraints ( indent s : ĠInt Array , Ġtypes : ĠChar Array , Ġis Explicit : ĠBoolean Array , Ġchars E aten : ĠInt ): ĠMarkdown Constraints Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinitial Type Ġ= Ġtypes [ types . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Type Ġ= Ġto Original Type ( initial Type ) ĊĠĠĠĠĠĠĠ Ġtypes [ types . size Ġ- Ġ 1 ] Ġ= Ġoriginal Type ĊĠĠĠĠĠĠĠ Ġreturn ĠG FM Constraints ( indent s , Ġtypes , Ġis Explicit , Ġchars E aten , Ġinitial Type Ġ!= Ġoriginal Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Checkbox (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Checkbox ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch List Marker ( pos : ĠLook ahead Text . Position ): ĠMarkdown Constraints . List Marker Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Marker Info Ġ= Ġsuper . fetch List Marker ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġpos . current Line ĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġpos . offset In Current Line Ġ+ Ġbase Marker Info . marker Length ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( offset Ġ< Ġline . length Ġ&& Ġ( line [ offset ] Ġ== Ġ' Ġ' Ġ|| Ġline [ offset ] Ġ== Ġ'\ t ')) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( offset Ġ+ Ġ 3 Ġ<= Ġline . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġline [ offset ] Ġ== Ġ'[' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġline [ offset Ġ+ Ġ 2 ] Ġ== Ġ' ]' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( line [ offset Ġ+ Ġ 1 ] Ġ== Ġ' x ' Ġ|| Ġline [ offset Ġ+ Ġ 1 ] Ġ== Ġ' X ' Ġ|| Ġline [ offset Ġ+ Ġ 1 ] Ġ== Ġ' Ġ')) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMarkdown Constraints . List Marker Info ( offset Ġ+ Ġ 3 Ġ- Ġpos . offset In Current Line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Checkbox Type ( base Marker Info . marker Type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Marker Info . marker Length ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbase Marker Info ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠBASE : ĠG FM Constraints Ġ= ĠG FM Constraints ( IntArray ( 0 ), ĠChar Array ( 0 ), ĠBoolean Array ( 0 ), Ġ 0 , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Checkbox Type ( original Type : ĠChar ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( original Type . toInt () Ġ+ Ġ 1 0 0 ). to Char () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Original Type ( checkbox Type : ĠChar ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checkbox Type . toInt () Ġ< Ġ 1 2 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcheckbox Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( checkbox Type . toInt () Ġ- Ġ 1 0 0 ). to Char () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }