/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . r . r markdown Ċ Ċ import Ġorg . intellij . markdown . I ElementType Ċ import Ġorg . intellij . markdown . Markdown Token Types Ċ import Ġorg . intellij . markdown . fl av ours . common mark . Common Mark Fl avour Descriptor Ċ import Ġorg . intellij . markdown . fl av ours . common mark . Common Mark Marker Processor Ċ import Ġorg . intellij . markdown . fl av ours . g fm . GF M Constraints Ċ import Ġorg . intellij . markdown . fl av ours . g fm . GF M Fl avour Descriptor Ċ import Ġorg . intellij . markdown . fl av ours . g fm . GF M Token Types Ċ import Ġorg . intellij . markdown . fl av ours . g fm . table . GitHub Table Marker Provider Ċ import Ġorg . intellij . markdown . html . Generating Provider Ċ import Ġorg . intellij . markdown . lexer . Markdown Lexer Ċ import Ġorg . intellij . markdown . parser .* Ċ import Ġorg . intellij . markdown . parser . constraints . Markdown Constraints Ċ import Ġorg . intellij . markdown . parser . marker blocks . Marker Block Provider Ċ import Ġorg . intellij . markdown . parser . marker blocks . providers .* Ċ import Ġorg . intellij . markdown . parser . sequential parsers . Sequential Parser Ċ import Ġorg . intellij . markdown . parser . sequential parsers . Sequential Parser Manager Ċ import Ġorg . intellij . plugins . markdown . lang . parser . Comment Aware Link Reference Definition Provider Ċ import Ġjava . net . URI Ċ Ċ object ĠR Markdown Fl avour Descriptor Ġ: ĠCommon Mark Fl avour Descriptor () Ġ{ ĊĠ Ġprivate Ġval Ġmy G fm Fl avour Descriptor : ĠG FM Fl avour Descriptor Ġ= ĠG FM Fl avour Descriptor () ĊĊĠ Ġoverride Ġval Ġmarker Processor Factory : ĠMarker Processor Factory Ġget () Ġ= ĠR Markdown Process Factory ĊĊĠ Ġoverride Ġval Ġsequential Parser Manager : ĠSequential Parser Manager Ġget () Ġ= Ġmy G fm Fl avour Descriptor . sequential Parser Manager ĊĊĠ Ġoverride Ġfun Ġcreate Html Generating Providers ( link Map : ĠLink Map , Ġbase URI : ĠURI ?): ĠMap < I ElementType , ĠGenerating Provider > Ġ{ ĊĠĠĠ Ġreturn Ġmy G fm Fl avour Descriptor . create Html Generating Providers ( link Map , Ġbase URI ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate In lines Lexer (): ĠMarkdown Lexer Ġ{ ĊĠĠĠ Ġreturn Ġmy G fm Fl avour Descriptor . create In lines Lexer () ĊĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠR Markdown Process Factory Ġ: ĠMarker Processor Factory Ġ{ ĊĠ Ġoverride Ġfun Ġcreate Marker Processor ( production Holder : ĠProduction Holder ): ĠMarker Processor < *> Ġ{ ĊĠĠĠ Ġreturn ĠR Markdown Marker Processor ( production Holder , ĠMarkdown Constraints . BASE ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠR Markdown Marker Processor ( production Holder : ĠProduction Holder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints : ĠMarkdown Constraints ) Ġ: ĊĠ ĠCommon Mark Marker Processor ( production Holder , Ġconstraints ) Ġ{ ĊĊĊĠ Ġprivate Ġval Ġmarker Block Providers Ġ= ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠ ĠCode Block Provider (), ĊĠĠĠĠĠ ĠHorizontal Rule Provider (), ĊĠĠĠĠĠ ĠR Code Fence Provider (), ĊĠĠĠĠĠ ĠSet ext Header Provider (), ĊĠĠĠĠĠ ĠBlock Quote Provider (), ĊĠĠĠĠĠ ĠList Marker Provider (), ĊĠĠĠĠĠ ĠHtml Block Provider (), ĊĠĠĠĠĠ ĠGitHub Table Marker Provider (), ĊĠĠĠĠĠ ĠA tx Header Provider ( false ), ĊĠĠĠĠĠ ĠComment Aware Link Reference Definition Provider () ĊĠĠĠ Ġ) ĊĊĠ Ġoverride Ġfun Ġpopulate Constraints Tokens ( pos : ĠLook ahead Text . Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints : ĠMarkdown Constraints , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduction Holder : ĠProduction Holder ) Ġ{ ĊĠĠĠ Ġif Ġ( constraints Ġ! is ĠG FM Constraints Ġ|| Ġ! constraints . has Checkbox ()) Ġ{ ĊĠĠĠĠĠ Ġsuper . populate Constraints Tokens ( pos , Ġconstraints , Ġproduction Holder ) ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġline Ġ= Ġpos . current Line ĊĠĠĠ Ġvar Ġoffset Ġ= Ġpos . offset In Current Line ĊĠĠĠ Ġwhile Ġ( offset Ġ< Ġline . length Ġ&& Ġline [ offset ] Ġ!= Ġ'[ ') Ġ{ ĊĠĠĠĠĠ Ġoffset ++ ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( offset Ġ== Ġline . length ) Ġ{ ĊĠĠĠĠĠ Ġsuper . populate Constraints Tokens ( pos , Ġconstraints , Ġproduction Holder ) ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtype Ġ= Ġwhen Ġ( constraints . getLast Type ()) Ġ{ ĊĠĠĠĠĠ Ġ' >' Ġ-> ĊĠĠĠĠĠĠĠ ĠMarkdown Token Types . BLOCK _ QUOTE ĊĠĠĠĠĠ Ġ'.', Ġ')' Ġ-> ĊĠĠĠĠĠĠĠ ĠMarkdown Token Types . LIST _ NUMBER ĊĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠ ĠMarkdown Token Types . LIST _ B UL LET ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġmiddle Offset Ġ= Ġpos . offset Ġ- Ġpos . offset In Current Line Ġ+ Ġoffset ĊĠĠĠ Ġval Ġend Offset Ġ= ĠMath . min ( pos . offset Ġ- Ġpos . offset In Current Line Ġ+ Ġconstraints . get Chars E aten ( pos . current Line ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos . nextLine Or E of Offset ) ĊĊĠĠĠ Ġproduction Holder . add Production ( listOf ( ĊĠĠĠĠĠ ĠSequential Parser . Node ( pos . offset .. middle Offset , Ġtype ), ĊĠĠĠĠĠ ĠSequential Parser . Node ( middle Offset .. end Offset , ĠG FM Token Types . CHECK _ BOX ) ĊĠĠĠ Ġ)) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Marker Block Providers (): ĠList < Marker Block Provider < State Info >> Ġ{ ĊĠĠĠ Ġreturn Ġmarker Block Providers ĊĠ Ġ} Ċ } Ċ