diff options
author | John MacFarlane <jgm@berkeley.edu> | 2021-12-14 20:30:55 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2021-12-14 20:30:55 -0800 |
commit | a527a2f3454adb637827704739dc2ffc94101531 (patch) | |
tree | 85faa339885452c48d9dc87f5d9f172213ea002f /src | |
parent | 394fa9d0727a30f540d9c36ccfa68fc942cad587 (diff) | |
download | pandoc-a527a2f3454adb637827704739dc2ffc94101531.tar.gz |
Org writer: use the citation locator list from the org source code...
which is not localized, instead of getting locators from the
localized CSL stylesheet as we did before.
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/Writers/Org.hs | 74 |
1 files changed, 61 insertions, 13 deletions
diff --git a/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs index ce406567b..d2a383212 100644 --- a/src/Text/Pandoc/Writers/Org.hs +++ b/src/Text/Pandoc/Writers/Org.hs @@ -22,6 +22,7 @@ import Data.List (intersect, intersperse, partition, transpose) import Data.List.NonEmpty (nonEmpty) import Data.Text (Text) import qualified Data.Text as T +import qualified Data.Map as M import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import Text.Pandoc.Definition import Text.Pandoc.Logging @@ -29,32 +30,23 @@ import Text.Pandoc.Options import Text.DocLayout import Text.Pandoc.Shared import Text.Pandoc.Templates (renderTemplate) -import Text.Pandoc.Citeproc.Locator (parseLocator, toLocatorMap, LocatorMap, - LocatorInfo(..)) -import Text.Pandoc.Citeproc (getCiteprocLang, getStyle) -import qualified Citeproc as Citeproc +import Text.Pandoc.Citeproc.Locator (parseLocator, LocatorMap(..), LocatorInfo(..)) import Text.Pandoc.Writers.Shared data WriterState = WriterState { stNotes :: [[Block]] , stHasMath :: Bool , stOptions :: WriterOptions - , stLocatorMap :: LocatorMap } type Org = StateT WriterState -- | Convert Pandoc to Org. writeOrg :: PandocMonad m => WriterOptions -> Pandoc -> m Text -writeOrg opts document@(Pandoc meta _) = do - style <- getStyle document - mblang <- getCiteprocLang meta - let locmap = toLocatorMap $ Citeproc.mergeLocales mblang style - +writeOrg opts document = do let st = WriterState { stNotes = [], stHasMath = False, - stOptions = opts, - stLocatorMap = locmap } + stOptions = opts } evalStateT (pandocToOrg document) st -- | Return Org representation of document. @@ -417,7 +409,6 @@ inlineToOrg (Cite cs lst) = do then do let renderCiteItem c = do citePref <- inlineListToOrg (citationPrefix c) - locmap <- gets stLocatorMap let (locinfo, suffix) = parseLocator locmap (citationSuffix c) citeSuff <- inlineListToOrg suffix let locator = case locinfo of @@ -552,3 +543,60 @@ orgLangIdentifiers = , "sqlite" , "lilypond" , "vala" ] + +-- taken from oc-csl.el in the org source tree: +locmap :: LocatorMap +locmap = LocatorMap $ M.fromList + [ ("bk." , "book") + , ("bks." , "book") + , ("book" , "book") + , ("chap." , "chapter") + , ("chaps." , "chapter") + , ("chapter" , "chapter") + , ("col." , "column") + , ("cols." , "column") + , ("column" , "column") + , ("figure" , "figure") + , ("fig." , "figure") + , ("figs." , "figure") + , ("folio" , "folio") + , ("fol." , "folio") + , ("fols." , "folio") + , ("number" , "number") + , ("no." , "number") + , ("nos." , "number") + , ("line" , "line") + , ("l." , "line") + , ("ll." , "line") + , ("note" , "note") + , ("n." , "note") + , ("nn." , "note") + , ("opus" , "opus") + , ("op." , "opus") + , ("opp." , "opus") + , ("page" , "page") + , ("p" , "page") + , ("p." , "page") + , ("pp." , "page") + , ("paragraph" , "paragraph") + , ("para." , "paragraph") + , ("paras." , "paragraph") + , ("¶" , "paragraph") + , ("¶¶" , "paragraph") + , ("part" , "part") + , ("pt." , "part") + , ("pts." , "part") + , ("§" , "section") + , ("§§" , "section") + , ("section" , "section") + , ("sec." , "section") + , ("secs." , "section") + , ("sub verbo" , "sub verbo") + , ("s.v." , "sub verbo") + , ("s.vv." , "sub verbo") + , ("verse" , "verse") + , ("v." , "verse") + , ("vv." , "verse") + , ("volume" , "volume") + , ("vol." , "volume") + , ("vols." , "volume") ] |