// Ġ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 . editor . util Ċ Ċ import Ġcom . intellij . openapi . action System . DataContext Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . vl ad sch . flex mark . html . Html Renderer Ċ import Ġcom . vl ad sch . flex mark . parser . Parser Ċ import Ġcom . vl ad sch . flex mark . util . ast . Document Ċ import Ġcom . vl ad sch . flex mark . util . data . Mutable Data Holder Ċ import Ġcom . vl ad sch . flex mark . util . sequence . Tag Range Ċ import Ġcom . vl ad sch . md . nav . editor . api . Md Html Generator Extension Ċ import Ġcom . vl ad sch . md . nav . parser . api . Html Purpose Ċ import Ġcom . vl ad sch . md . nav . settings . Md Rendering Profile Ċ import Ġcom . vl ad sch . md . nav . vcs . Md Link Resolver Ċ import Ġcom . vl ad sch . plugin . util . plus Assign Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Consumer Ċ Ċ abstract Ġclass ĠHtml Generator ( val Ġlink Resolver : ĠMd Link Resolver , Ġval Ġrendering Profile : ĠMd Rendering Profile ) Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġto Html ( file : ĠPsi File ?, Ġchar Sequence : ĠCharSequence , Ġhtml Purpose : ĠHtml Purpose , Ġdata Context : ĠData Context ?, Ġexport Map : ĠMutable Map < String , ĠString >? Ġ= Ġnull , Ġoptions Adj uster : ĠConsumer < Mutable Data Holder >? ): ĠString ĊĠĠĠ Ġabstract Ġfun Ġmake Html Page ( html : ĠString , Ġfor Html Export : ĠBoolean , Ġdata Context : ĠData Context ?, Ġexport Map : ĠMutable Map < String , ĠString >? Ġ= Ġnull ): ĠString ĊĠĠĠ Ġabstract Ġval Ġhtml Tag Ranges : ĠList < Tag Range > ĊĠĠĠ Ġval Ġinjection s : ĠList < Inject Html Resource > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Injection s Ġ= ĠArrayList < Inject Html Resource ?> () ĊĠĠĠĠĠĠĠ Ġrendering Profile . inject Html Resource ( link Resolver , Ġraw Injection s ) ĊĠĠĠĠĠĠĠ Ġinjection s Ġ= Ġraw Injection s . filter NotNull (). sorted By Ġ{ Ġit . html Placement . ordinal Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Process Html ( html : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġuse Html Ġ= Ġhtml ĊĠĠĠĠĠĠĠ Ġfor Ġ( handler Ġin ĠMd Html Generator Extension . EXTENSION S . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Html Ġ= Ġhandler . post Process Html ( use Html , Ġrendering Profile ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġuse Html ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Html Export Data ( project : ĠProject , Ġoptions : ĠMutable Data Holder , Ġdata Context : ĠData Context , Ġexport Map : ĠMap < String , ĠString >? ): ĠData Context Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġuse DataContext Ġ= Ġdata Context ĊĠĠĠĠĠĠĠ Ġfor Ġ( handler Ġin ĠMd Html Generator Extension . EXTENSION S . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse DataContext Ġ= Ġhandler . add Html Export Data ( project , Ġrendering Profile , Ġoptions , Ġuse DataContext , Ġexport Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġuse DataContext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Html Injection s ( result : ĠStringBuilder , Ġis By Script : ĠBoolean ?, Ġfilter List : ĠList < Html Placement > ?, Ġfor Html Export : ĠBoolean , Ġdata Context : ĠData Context , Ġexport Map : ĠMutable Map < String , ĠString > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Injection s : ĠList < Inject Html Resource > Ġ= Ġinjection s . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is By Script Ġ== Ġnull Ġ|| Ġit . is By Script Ġ== Ġis By Script ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( filter List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠisIn Array Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( placement Ġin Ġfilter List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . html Placement Ġ== Ġplacement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Array Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Array ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( handler Ġin ĠMd Html Generator Extension . EXTENSION S . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( handler . add Html Injection s ( result , Ġrendering Profile , Ġlink Resolver , Ġfiltered Injection s , Ġfor Html Export , Ġdata Context , Ġexport Map )) Ġreturn ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġdefault Ġof Ġapp ending Ġinjection s ĊĠĠĠĠĠĠĠ Ġfor Ġ( injection Ġin Ġfiltered Injection s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= Ġinjection . html Text ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Data Keys ( result : ĠMutable Data Holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( resource Ġin Ġrendering Profile . css Settings . script Resources ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . set All ( resource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġadd Head Top Html ( result : ĠStringBuilder , Ġis By Script : ĠBoolean ?, Ġfor Html Export : ĠBoolean , Ġdata Context : ĠData Context , Ġexport Map : ĠMutable Map < String , ĠString > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Html Injection s ( result , Ġis By Script , ĠHtml Placement . HEAD _ TO PS , Ġfor Html Export , Ġdata Context , Ġexport Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġadd Head Bottom Html ( result : ĠStringBuilder , Ġis By Script : ĠBoolean ?, Ġfor Html Export : ĠBoolean , Ġdata Context : ĠData Context , Ġexport Map : ĠMutable Map < String , ĠString > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Html Injection s ( result , Ġis By Script , ĠHtml Placement . HEAD _ BOT TO MS , Ġfor Html Export , Ġdata Context , Ġexport Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġadd Body Top Html ( result : ĠStringBuilder , Ġis By Script : ĠBoolean ?, Ġfor Html Export : ĠBoolean , Ġdata Context : ĠData Context , Ġexport Map : ĠMutable Map < String , ĠString > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Html Injection s ( result , Ġis By Script , ĠHtml Placement . BODY _ TO PS , Ġfor Html Export , Ġdata Context , Ġexport Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġadd Body Bottom Html ( result : ĠStringBuilder , Ġis By Script : ĠBoolean ?, Ġfor Html Export : ĠBoolean , Ġdata Context : ĠData Context , Ġexport Map : ĠMutable Map < String , ĠString > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Html Injection s ( result , Ġis By Script , ĠHtml Placement . BODY _ BOT TO MS , Ġfor Html Export , Ġdata Context , Ġexport Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġprocess Includes ( parser : ĠParser , Ġrenderer : ĠHtml Renderer , Ġdocument : ĠDocument , Ġfile : ĠPsi File ?): ĠDocument Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( handler Ġin ĠMd Html Generator Extension . EXTENSION S . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocessed Ġ= Ġhandler . process Includes ( parser , Ġrenderer , Ġdocument , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( processed Ġ!== Ġdocument ) Ġreturn Ġprocessed ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdocument ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġadjust Page Ref ( git Hub Page Ref : ĠString ?, Ġfor Html Export : ĠBoolean ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") ĊĠĠĠĠĠĠĠ Ġvar Ġgit Hub Page Ref Ġ= Ġgit Hub Page Ref ĊĠĠĠĠĠĠĠ Ġfor Ġ( handler Ġin ĠMd Html Generator Extension . EXTENSION S . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgit Hub Page Ref Ġ= Ġhandler . adjust Page Ref ( git Hub Page Ref , Ġfor Html Export , Ġrendering Profile ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġgit Hub Page Ref ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġno Css No Scripts ( for Html Export : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( handler Ġin ĠMd Html Generator Extension . EXTENSION S . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhandler . no Style sheets ( for Html Export , Ġrendering Profile ) Ġ?: Ġcontinue ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ