/* Ċ Ġ* Ġ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 Ġcom . intellij . lang . Language Ċ import Ġcom . intellij . lang . Language Parser Definitions Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . impl . source . Psi File Impl Ċ import Ġcom . intellij . psi . template Languages . Template Data ElementType Ċ import Ġcom . intellij . psi . template Languages . Template Language File View Provider Ċ import Ġcom . intellij . util . containers . Factory Map Ċ import Ġorg . intellij . plugins . markdown . lang . parser . Markdown Parser Manager Ċ Ċ class ĠR Markdown File View Provider Factory Ġ: ĠFile View Provider Factory Ġ{ ĊĠ Ġoverride Ġfun Ġcreate File View Provider ( ĊĠĠĠ Ġfile : ĠVirtual File , ĊĠĠĠ Ġlanguage : ĠLanguage ?, ĊĠĠĠ Ġmanager : ĠPsi Manager , ĊĠĠĠ Ġevent System Enabled : ĠBoolean ĊĠ Ġ): ĠFile View Provider Ġ= ĠR Markdown File View Provider ( manager , Ġfile , Ġevent System Enabled ) Ċ } Ċ Ċ private Ġval Ġguest ElementType Map : ĠMutable Map < Language , ĠTemplate Data ElementType > Ġ= ĠFactory Map . create Ġ{ ĠR Markdown Template ( it ) Ġ} Ċ Ċ class ĠR Markdown File View Provider ( ĊĠ Ġmanager : ĠPsi Manager , ĊĠ Ġval Ġfile : ĠVirtual File , ĊĠ Ġevent System Enabled : ĠBoolean Ċ ) Ġ: ĠMultiple Psi Files Per Document File View Provider ( manager , Ġfile , Ġevent System Enabled ), ĠTemplate Language File View Provider Ġ{ ĊĊĠ Ġoverride Ġfun Ġclone Inner ( file Copy : ĠVirtual File ): ĠMultiple Psi Files Per Document File View Provider Ġ{ ĊĠĠĠ Ġreturn ĠR Markdown File View Provider ( manager , Ġfile Copy , Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Languages (): ĠSet < Language > Ġ{ ĊĠĠĠ Ġreturn Ġset Of ( base Language ) Ġ+ ĠR md Fence Provider . EP _ NAME . extension List . map Ġ{ Ġit . fence Language Ġ}. toSet () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Base Language (): ĠLanguage Ġ{ ĊĠĠĠ Ġreturn ĠR Markdown Language ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Template Data Language (): ĠLanguage Ġ{ ĊĠĠĠ Ġreturn ĠR Markdown Language ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate File ( lang : ĠLanguage ): ĠPsi File ? Ġ{ ĊĠĠĠ Ġif Ġ( R md Fence Provider . find Ġ{ Ġit . fence Language Ġ== Ġlang Ġ} Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsuper . create File ( lang )?. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput UserData ( Markdown Parser Manager . FL AV O UR _ DESCRIPTION , ĠR Markdown Fl avour Descriptor ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġelement Type Ġ= Ġguest ElementType Map [ lang ] ĊĠĠĠ Ġval Ġparser Definition Ġ= ĠLanguage Parser Definitions . INSTANCE . for Language ( lang ) !! ĊĠĠĠ Ġreturn Ġ( parser Definition . create File ( this ) Ġas ĠPsi File Impl ). apply Ġ{ Ġcontent ElementType Ġ= Ġelement Type Ġ} ĊĠ Ġ} Ċ }