// ĠCopyright Ġ( c ) Ġ 2 0 1 5 - 2 0 2 0 ĠV lad im ir ĠSch ne ider Ġ< vl ad im ir . sch ne ider @ gmail . com > ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ċ package Ġcom . vl ad sch . md . nav . psi . element Ċ Ċ import Ġcom . intellij . lang . Light er AST Ċ import Ġcom . intellij . lang . Light er AST Node Ċ import Ġcom . intellij . lang . Light er AST Token Node Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . stubs .* Ċ import Ġcom . intellij . psi . tree . I ElementType Ċ import Ġcom . intellij . util . Char Table Ċ import Ġcom . vl ad sch . md . nav . Md Language Ċ import Ġcom . vl ad sch . md . nav . psi . index . Md Link Element Index Ċ import Ġcom . vl ad sch . md . nav . psi . util . Md Types Ċ import Ġjava . io . IOException Ċ Ċ class ĠMd J ekyll Include Stub Type ( debug Name : ĠString ) Ġ: ĊĠĠĠ ĠI Light Stub ElementType < Md J ekyll Include Stub , ĠMd J ekyll Include >( debug Name , ĠMd Language . INSTANCE ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Psi ( stub : ĠMd J ekyll Include Stub ): ĠMd J ekyll Include Ġ= ĠMd J ekyll Include Impl ( stub , Ġthis , Ġnull ) ĊĠĠĠ Ġoverride Ġfun Ġget External Id (): ĠString Ġ= Ġ" markdown . jekyll - include - tag " ĊĠĠĠ Ġfun Ġcreate Stub ( parent Stub : ĠStub Element < Psi Element >, Ġlink Ref With Anchor Text : ĠString ): ĠMd J ekyll Include Stub Ġ= ĠMd J ekyll Include Stub Impl ( parent Stub , Ġthis , Ġlink Ref With Anchor Text ) ĊĠĠĠ Ġfun Ġget Link Ref Text Type (): ĠI ElementType Ġ= ĠMd Types . J EK Y LL _ TAG _ PARAMETERS ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Stub ( psi : ĠMd J ekyll Include , Ġparent Stub : ĠStub Element < Psi Element >): ĠMd J ekyll Include Stub Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Stub ( parent Stub , Ġpsi . link Ref Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġserialize ( stub : ĠMd J ekyll Include Stub , Ġdata Stream : ĠStub OutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// data Stream . write Name ( stub . getKey ()); ĊĠĠĠĠĠĠĠ Ġdata Stream . write Name ( stub . link Ref With Anchor Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( data Stream : ĠStub InputStream , Ġparent Stub : ĠStub Element < Psi Element >): ĠMd J ekyll Include Stub Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlink Ref Text Ġ= Ġdata Stream . read Name ()?. string Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Stub ( parent Stub , Ġlink Ref Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġindex Stub ( stub : ĠMd J ekyll Include Stub , Ġsink : ĠIndex Sink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsink . occ urrence ( Md Link Element Index . KEY , Ġstub . link Ref With Anchor Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Stub ( tree : ĠLight er AST , Ġnode : ĠLight er AST Node , Ġparent Stub : ĠStub Element < Psi Element >): ĠMd J ekyll Include Stub Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġtree . getChildren ( node ) ĊĠĠĠĠĠĠĠ Ġvar Ġlink Ref Text : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġchildren ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child . token Type Ġ== Ġget Link Ref Text Type ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Ref Text Ġ= Ġintern ( tree . char Table , Ġchild ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(-- count Ġ== Ġ 0 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Stub ( parent Stub , Ġlink Ref Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġintern ( table : ĠChar Table , Ġnode : ĠLight er AST Node ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( node Ġis ĠLight er AST Token Node , Ġ{ Ġnode Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtable . intern (( node Ġas ĠLight er AST Token Node ). text ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ