pandoc-citeproc 0.16.3 → 0.16.3.1
raw patch · 7 files changed
+255/−29 lines, 7 files
Files
- changelog +8/−0
- pandoc-citeproc.cabal +1/−1
- src/Text/CSL/Data.hs +25/−21
- src/Text/CSL/Input/Bibtex.hs +3/−2
- src/Text/CSL/Pandoc.hs +2/−2
- stack.yaml +8/−3
- tests/jats.csl +208/−0
changelog view
@@ -1,3 +1,11 @@+pandoc-citeproc (0.16.3.1)++ * Fix how LANG is set for bibtex conversion.+ We were using a `-` where `_` is standard.+ * Make locale retrieval more robust (#420).+ Previously an error was raised if the locale was 'C'.+ Now 'C' is treated as default (en-US locale is used).+ pandoc-citeproc (0.16.3) * Set `hanging-indent` class on `refs` Div if specified by the style (#410).
pandoc-citeproc.cabal view
@@ -1,5 +1,5 @@ name: pandoc-citeproc-version: 0.16.3+version: 0.16.3.1 cabal-version: 1.12 synopsis: Supports using pandoc with citeproc
src/Text/CSL/Data.hs view
@@ -48,33 +48,37 @@ -- | Raises 'CSLLocaleException' on error. getLocale :: String -> IO L.ByteString getLocale s = do+ let baseLocale = takeWhile (/='.') s #ifdef EMBED_DATA_FILES let toLazy x = L.fromChunks [x]- case length s of- 0 -> maybe (E.throwIO $ CSLLocaleNotFound "en-US")- (return . toLazy)+ let returnDefaultLocale =+ maybe (E.throwIO $ CSLLocaleNotFound "en-US") (return . toLazy) $ lookup "locales-en-US.xml" localeFiles- 2 -> let fn = ("locales-" ++ fromMaybe s (lookup s langBase) ++ ".xml")- in case lookup fn localeFiles of- Just x' -> return $ toLazy x'- _ -> E.throwIO $ CSLLocaleNotFound s- _ -> case lookup ("locales-" ++ take 5 s ++ ".xml") localeFiles of+ case length baseLocale of+ 0 -> returnDefaultLocale+ 1 | baseLocale == "C" -> returnDefaultLocale+ _ -> case lookup ("locales-" ++ baseLocale ++ ".xml") localeFiles of Just x' -> return $ toLazy x'- _ -> -- try again with 2-letter locale- let s' = take 2 s in- case lookup ("locales-" ++ fromMaybe s'- (lookup s' langBase) ++ ".xml") localeFiles of- Just x'' -> return $ toLazy x''- _ -> E.throwIO $ CSLLocaleNotFound s+ Nothing ->+ -- try again with 2-letter locale (lang only)+ let shortLocale = takeWhile (/='-') baseLocale in+ case lookup ("locales-" ++ fromMaybe shortLocale+ (lookup shortLocale langBase) ++ ".xml")+ localeFiles of+ Just x'' -> return $ toLazy x''+ _ -> E.throwIO $ CSLLocaleNotFound s #else- f <- case length s of- 0 -> return "locales/locales-en-US.xml"- 2 -> getDataFileName ("locales/locales-" ++- fromMaybe s (lookup s langBase) ++ ".xml")- _ -> getDataFileName ("locales/locales-" ++ take 5 s ++ ".xml")+ f <- getDataFileName $+ case length baseLocale of+ 0 -> "locales/locales-en-US.xml"+ 1 | baseLocale == "C" -> "locales/locales-en-US.xml"+ 2 -> "locales/locales-" +++ fromMaybe s (lookup s langBase) ++ ".xml"+ _ -> "locales/locales-" ++ take 5 s ++ ".xml" exists <- doesFileExist f- if not exists && length s > 2- then getLocale $ take 2 s -- try again with base locale+ if not exists && length baseLocale > 2+ then getLocale $ dropWhile (/='-') baseLocale+ -- try again with lang only else E.handle (E.throwIO . CSLLocaleReadError) $ L.readFile f #endif
src/Text/CSL/Input/Bibtex.hs view
@@ -100,7 +100,8 @@ getLangFromEnv = do env <- getEnvironment return $ case lookup "LANG" env of- Just x -> case splitWhen (\c -> c == '.' || c == '_' || c == '-') x of+ Just x -> case splitWhen (\c -> c == '_' || c == '-')+ (takeWhile (/='.') x) of (w:z:_) -> Lang w z [w] | not (null w) -> Lang w mempty _ -> Lang "en" "US"@@ -368,7 +369,7 @@ -- | Prints a 'Lang' in BCP 47 format. langToLocale :: Lang -> String-langToLocale (Lang x y) = x ++ ('-':y)+langToLocale (Lang x y) = x ++ (if null y then [] else '-':y) -- Biblatex Localization Keys (see Biblatex manual) -- Currently we only map a subset likely to be used in Biblatex *databases*
src/Text/CSL/Pandoc.hs view
@@ -222,8 +222,8 @@ if null envlang then do -- Note that LANG needs to be set for bibtex conversion:- setEnv "LANG" "en-US.UTF-8"- setEnv "LC_ALL" "en-US.UTF-8"+ setEnv "LANG" "en_US.UTF-8"+ setEnv "LC_ALL" "en_US.UTF-8" else setEnv "LC_ALL" envlang let citids = query getCitationIds (Pandoc meta blocks)
stack.yaml view
@@ -12,10 +12,15 @@ - pandoc-types-1.17.6.1 - HsYAML-0.2.0.0 - HsYAML-aeson-0.2.0.0-- doctemplates-0.6.1-- doclayout-0.1+- texmath-0.11.3+- haddock-library-1.8.0+- skylighting-0.8.2.3+- skylighting-core-0.8.2.3+- regex-pcre-builtin-0.95.0.8.8.35+- doctemplates-0.7+- doclayout-0.2.0.1 - git: https://github.com/jgm/pandoc.git- commit: b64410ff9ce64d6a2c7e09b43694b6f4245f9129+ commit: 8f3b3afc70d163afe5e103abec77a4ffafb995bd ghc-options: "$locals": -fhide-source-paths
+ tests/jats.csl view
@@ -0,0 +1,208 @@+<?xml version="1.0" encoding="utf-8"?>+<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" default-locale="en-US">+ <info>+ <title>Journal Article Tag Suite</title>+ <title-short>JATS</title-short>+ <id>http://www.zotero.org/styles/journal-article-tag-suite</id>+ <link href="https://github.com/MartinPaulEve/JATS-CSL/blob/master/jats.csl" rel="self"/>+ <link rel="documentation" href="http://jats.nlm.nih.gov/archiving/tag-library/1.0/index.html"/>+ <author>+ <name>Martin Paul Eve</name>+ <email>martin@martineve.com</email>+ </author>+ <category citation-format="numeric"/>+ <category field="medicine"/>+ <category field="biology"/>+ <summary>Use this style to generate bibliographic data in Journal Article Tagging Suite (JATS) 1.0 XML format</summary>+ <updated>2014-06-21T17:41:26+00:00</updated>+ <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Originally by Martin Fenner.</rights>+ </info>+ <locale xml:lang="en">+ <terms>+ <term name="et-al">{{jats}}<etal/>{{/jats}}</term>+ </terms>+ </locale>+ <macro name="citation-number">+ <text variable="citation-number" prefix="{{jats}}id="ref-{{/jats}}" suffix="{{jats}}">{{/jats}}"/>+ </macro>+ <macro name="author">+ <names variable="author">+ <name prefix="{{jats}}<name>{{/jats}}" suffix="{{jats}}</name>{{/jats}}" name-as-sort-order="all" sort-separator="">+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}<surname>{{/jats}}" suffix="{{jats}}</surname>{{/jats}}"/>+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}<given-names>{{/jats}}" suffix="{{jats}}</given-names>{{/jats}}"/>+ </name>+ <substitute>+ <names variable="editor"/>+ </substitute>+ </names>+ </macro>++ <macro name="editor">+ <names variable="editor" prefix="{{jats}}<person-group person-group-type="editor">{{/jats}}" suffix="{{jats}}</person-group>{{/jats}}">+ <name prefix="{{jats}}<name>{{/jats}}" suffix="{{jats}}</name>{{/jats}}" name-as-sort-order="all" sort-separator="">+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}<surname>{{/jats}}" suffix="{{jats}}</surname>{{/jats}}"/>+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}<given-names>{{/jats}}" suffix="{{jats}}</given-names>{{/jats}}"/>+ </name>+ <substitute>+ <names variable="editor"/>+ </substitute>+ </names>+ </macro>++ <macro name="editor">+ <group delimiter=": ">+ <names variable="editor">+ <name prefix="{{jats}}<name>{{/jats}}" suffix="{{jats}}</name>{{/jats}}" name-as-sort-order="all" sort-separator="">+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}<surname>{{/jats}}" suffix="{{jats}}</surname>{{/jats}}"/>+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}<given-names>{{/jats}}" suffix="{{jats}}<given-names>{{/jats}}"/>+ </name>+ </names>+ </group>+ </macro>+ <macro name="title">+ <choose>+ <if type="book" match="any">+ <group prefix="{{jats}}<source>{{/jats}}" suffix="{{jats}}</source>{{/jats}}">+ <text variable="title"/>+ </group> + </if>+ <else>+ <group prefix="{{jats}}<article-title>{{/jats}}" suffix="{{jats}}</article-title>{{/jats}}">+ <text variable="title"/>+ </group>+ </else>+ </choose>+ </macro>+ <macro name="container-title">+ <text variable="container-title" form="short" prefix="{{jats}}<source>{{/jats}}" suffix="{{jats}}</source>{{/jats}}"/>+ </macro>+ <macro name="publisher">+ <text variable="publisher" prefix="{{jats}}<publisher-name>{{/jats}}" suffix="{{jats}}</publisher-name>{{/jats}}"/>+ <text variable="publisher-place" prefix="{{jats}}<publisher-loc>{{/jats}}" suffix="{{jats}}</publisher-loc>{{/jats}}"/>+ </macro>+ <macro name="link">+ <choose>+ <if match="any" variable="DOI">+ <group prefix="{{jats}}<pub-id pub-id-type="doi">{{/jats}}" suffix="{{jats}}</pub-id>{{/jats}}">+ <text variable="DOI"/>+ </group>+ </if>+ </choose>+ <choose>+ <if match="any" variable="PMID">+ <group prefix="{{jats}}<ext-link ext-link-type="pmid" {{/jats}}" suffix="{{jats}}</ext-link>{{/jats}}">+ <text variable="PMID" prefix="{{jats}}xlink:href="http://www.ncbi.nlm.nih.gov/pubmed/{{/jats}}" suffix="{{jats}}" xlink:type="simple">{{/jats}}"/>+ <text variable="PMID"/>+ </group>+ </if>+ </choose>+ <choose>+ <if variable="URL" match="any">+ <group prefix="{{jats}}<ext-link ext-link-type="uri" {{/jats}}" suffix="{{jats}}</ext-link>{{/jats}}">+ <text variable="URL" prefix="{{jats}}xlink:href="{{/jats}}" suffix="{{jats}}" xlink:type="simple">{{/jats}}"/>+ <text variable="URL"/>+ </group>+ </if>+ </choose>+ </macro>+ <macro name="date">+ <choose>+ <if type="article-journal article-magazine article-newspaper report patent book" match="any">+ <group prefix="{{jats}}<date>{{/jats}}" suffix="{{jats}}</date>{{/jats}}">+ <date variable="issued">+ <date-part name="day" form="numeric-leading-zeros" prefix="{{jats}}<day>{{/jats}}" suffix="{{jats}}</day>{{/jats}}"/>+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}<month>{{/jats}}" suffix="{{jats}}</month>{{/jats}}"/>+ <date-part name="year" prefix="{{jats}}<year>{{/jats}}" suffix="{{jats}}</year>{{/jats}}"/>+ </date>+ </group>+ </if>+ <else>+ <group prefix="{{jats}}<date-in-citation content-type="access-date"{{/jats}}" suffix="{{jats}}</date-in-citation>{{/jats}}">+ <date variable="accessed" prefix="{{jats}} iso-8601-date="{{/jats}}" suffix="{{jats}}">{{/jats}}">+ <date-part name="year"/>+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}-{{/jats}}"/>+ <date-part name="day" form="numeric-leading-zeros" prefix="{{jats}}-{{/jats}}"/>+ </date>+ <date variable="accessed">+ <date-part name="day" prefix="{{jats}}<day>{{/jats}}" suffix="{{jats}}</day>{{/jats}}"/>+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}<month>{{/jats}}" suffix="{{jats}}</month>{{/jats}}"/>+ <date-part name="year" prefix="{{jats}}<year>{{/jats}}" suffix="{{jats}}</year>{{/jats}}"/>+ </date>+ </group>+ </else>+ </choose>+ </macro>+ <macro name="location">+ <choose>+ <if type="article-journal article-magazine" match="any">+ <text variable="volume" prefix="{{jats}}<volume>{{/jats}}" suffix="{{jats}}</volume>{{/jats}}"/>+ <text variable="issue" prefix="{{jats}}<issue>{{/jats}}" suffix="{{jats}}</issue>{{/jats}}"/>+ </if>+ </choose>+ <choose>+ <if type="article-journal article-magazine article-newspaper chapter" match="any">+ <text variable="page-first" prefix="{{jats}}<fpage>{{/jats}}" suffix="{{jats}}</fpage>{{/jats}}"/>+ </if>+ </choose>+ </macro>+ <macro name="publication-type">+ <group prefix="{{jats}} publication-type="{{/jats}}" suffix="{{jats}}">{{/jats}}">+ <choose>+ <if type="article-journal article-magazine article-newspaper" match="any">+ <text value="journal"/>+ </if>+ <else-if type="book" match="any">+ <text value="book"/>+ </else-if>+ <else-if type="chapter" match="any">+ <text value="bookchapter"/>+ </else-if>+ <else-if type="dataset" match="any">+ <text value="dataset"/>+ </else-if>+ <else-if type="patent" match="any">+ <text value="patent"/>+ </else-if>+ <else-if type="report" match="any">+ <text value="report"/>+ </else-if>+ <else-if type="review" match="any">+ <text value="review"/>+ </else-if>+ <else>+ <text value="standard"/>+ </else>+ </choose>+ </group>+ </macro>+ <citation collapse="citation-number">+ <sort>+ <key variable="citation-number"/>+ </sort>+ <layout delimiter=",">+ <group prefix="{{jats}}<xref ref-type="bibr" rid="{{/jats}}" suffix="{{jats}}</xref>{{/jats}}">+ <text variable="citation-number" prefix="{{jats}}ref-{{/jats}}" suffix="{{jats}}">{{/jats}}"/>+ <text variable="citation-number"/>+ </group>+ </layout>+ </citation>+ <bibliography sort-separator="">+ <layout>+ <group prefix="{{jats}}<ref {{/jats}}" suffix="{{jats}}</ref>{{/jats}}">+ <text macro="citation-number"/>+ <group prefix="{{jats}}<element-citation{{/jats}}" suffix="{{jats}}</element-citation>{{/jats}}">+ <text macro="publication-type"/>+ <text macro="author" prefix="{{jats}}<person-group person-group-type="author">{{/jats}}" suffix="{{jats}}</person-group>{{/jats}}"/>+ <text macro="title" />+ <text macro="container-title"/>+ <text macro="editor"/>+ <text macro="publisher"/>+ <text macro="date"/>+ <text macro="location"/>+ <text macro="link"/>+ </group>+ </group>+ </layout>+ </bibliography>+</style>+