packages feed

citeproc 0.8.1.3 → 0.9

raw patch · 10 files changed

+213/−767 lines, 10 filesdep ~containersPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: containers

API changes (from Hackage documentation)

- Citeproc.Types: HasType :: Text -> Condition
+ Citeproc.Types: HasType :: [Text] -> Condition
- Citeproc.Types: data () => Lang
+ Citeproc.Types: data Lang

Files

CHANGELOG.md view
@@ -1,5 +1,27 @@ # citeproc changelog +## 0.9++  * Fix handling of `type` conditions in `if` (#151).+    In an `if` element with `type="article-journal chapter"`, citeproc+    previously treated this as two separate conditions+    (type=article-journal, type=chapter).  But it seems that the+    intended behavior is to treat it as a single condition that+    succeeds if any of the listed types match. The difference between+    current and intended behavior comes out when `match="all"` is used;+    this will always fail when `type` contains more than one type.++    To fix this, we change the `HasType` constructor on `Condition`+    so that it takes a list of Texts rather than single one [API change],+    and we populate it with the result of splitting the argument+    of `type`. In Eval, we change the clause for the HasType condition+    so that it succeeds if any of the types in the list match.++  * Add `--link-citations` and `--link-bibliography` options to binary+    (#142, Daphne Preston-Kendal).++  * Bump containers upper bound.+ ## 0.8.1.3   * Don't add SubstitutedVal to variables that were empty (#148).
app/Main.hs view
@@ -77,11 +77,16 @@         Left e -> err (T.unpack $ prettyCiteprocError e)         Right parsedStyle -> do           let style = parsedStyle{ styleAbbreviations = abbreviations }-          let result= citeproc defaultCiteprocOptions-                         style-                         lang-                         references-                         (fromMaybe [] (inputsCitations inp))+          let result=+                citeproc+                  defaultCiteprocOptions+                    { linkCitations = optLinkCitations opt+                    , linkBibliography = optLinkBibliography opt+                    }+                  style+                  lang+                  references+                  (fromMaybe [] (inputsCitations inp))           let jsonResult :: Aeson.Value               jsonResult =                 case format of@@ -107,13 +112,15 @@ data Format = Json | Html deriving (Show, Ord, Eq)  data Opt =-  Opt{ optStyle         :: Maybe String-     , optReferences    :: Maybe String-     , optAbbreviations :: Maybe String-     , optFormat        :: Maybe String-     , optLang          :: Maybe Lang-     , optHelp          :: Bool-     , optVersion       :: Bool+  Opt{ optStyle            :: Maybe String+     , optReferences       :: Maybe String+     , optAbbreviations    :: Maybe String+     , optFormat           :: Maybe String+     , optLang             :: Maybe Lang+     , optLinkCitations    :: Bool+     , optLinkBibliography :: Bool+     , optHelp             :: Bool+     , optVersion          :: Bool      } deriving Show  defaultOpt :: Opt@@ -123,6 +130,8 @@       , optAbbreviations = Nothing       , optFormat = Nothing       , optLang = Nothing+      , optLinkCitations = False+      , optLinkBibliography = False       , optHelp = False       , optVersion = False       }@@ -148,6 +157,12 @@   , Option ['f'] ["format"]      (ReqArg (\format opt -> return opt{ optFormat = Just format }) "html|json")      "Controls formatting of entries in result"+  , Option [] ["link-citations"]+     (NoArg (\opt -> return opt{ optLinkCitations = True }))+     "Enable hyperlinking of citations to the bibliography"+  , Option [] ["link-bibliography"]+     (NoArg (\opt -> return opt{ optLinkBibliography = True }))+     "Enable hyperlinking of bibliography entries"   , Option ['h'] ["help"]      (NoArg (\opt -> return opt{ optHelp = True }))      "Print usage information"
citeproc.cabal view
@@ -1,6 +1,6 @@ cabal-version:       2.2 name:                citeproc-version:             0.8.1.3+version:             0.9 synopsis:            Generates citations and bibliography from CSL styles. description:         citeproc parses CSL style files and uses them to                      generate a list of formatted citations and bibliography@@ -65,7 +65,7 @@                      , safe                      , bytestring                      , text-                     , containers >= 0.6.0.1 && < 0.8+                     , containers >= 0.6.0.1 && < 0.9                      , transformers >= 0.5.6 && < 0.7                      , case-insensitive >= 1.2 && < 1.3                      , vector
− locales/hi-IN.xml
@@ -1,653 +0,0 @@-<?xml version="1.0" encoding="utf-8"?>-<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="hi-IN">-  <info>-    <translator>-      <name>Neha Srivastava</name>-      <email>neha-srivastava@outlook.com</email>-    </translator>-    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>-    <updated>2021-02-22T12:13:02+05:30</updated>-  </info>-  <style-options punctuation-in-quote="true"/>-  <date form="text">-    <date-part name="day" suffix=" "/>-    <date-part name="month" suffix=", "/>-    <date-part name="year"/>-  </date>-  <date form="numeric">-    <date-part name="day" form="numeric-leading-zeros" suffix="/"/>-    <date-part name="month" form="numeric-leading-zeros" suffix="/"/>-    <date-part name="year"/>-  </date>-  <terms>-    <term name="advance-online-publication">advance online publication</term>-    <term name="album">album</term>-    <term name="audio-recording">audio recording</term>-    <term name="film">film</term>-    <term name="henceforth">henceforth</term>-    <term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form  -->-    <term name="no-place">no place</term>-    <term name="no-place" form="short">n.p.</term>-    <term name="no-publisher">no publisher</term> <!-- sine nomine -->-    <term name="no-publisher" form="short">n.p.</term>-    <term name="on">on</term>-    <term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form  -->-    <term name="original-work-published">original work published</term>-    <term name="personal-communication">personal communication</term>-    <term name="podcast">podcast</term>-    <term name="podcast-episode">podcast episode</term>-    <term name="preprint">preprint</term>-    <term name="radio-broadcast">radio broadcast</term>-    <term name="radio-series">radio series</term>-    <term name="radio-series-episode">radio series episode</term>-    <term name="special-issue">special issue</term>-    <term name="special-section">special section</term>-    <term name="television-broadcast">television broadcast</term>-    <term name="television-series">television series</term>-    <term name="television-series-episode">television series episode</term>-    <term name="video">video</term>-    <term name="working-paper">working paper</term>-    <term name="accessed">अंतिम उपयोग</term>-    <term name="and">व</term>-    <term name="and others">व अन्य</term>-    <term name="anonymous">अज्ञात</term>-    <term name="anonymous" form="short">अज्ञात</term>-    <term name="at">पर</term>-    <term name="available at">पर उपलब्ध</term>-    <term name="by">द्वारा</term>-    <term name="circa">सन </term>-    <term name="circa" form="short">सन.</term>-    <term name="cited">उल्लेखित</term>-    <term name="edition">-      <single>संस्करण</single>-      <multiple>संस्करण</multiple>-    </term>-    <term name="edition" form="short">ed.</term>-    <term name="et-al">इत्यादि</term>-    <term name="forthcoming">आगामी</term>-    <term name="from">से</term>-    <term name="ibid">उक्त</term>-    <term name="in">में</term>-    <term name="in press">मुद्रण में</term>-    <term name="internet">इंटर्नेट</term>-    <term name="letter">पत्र</term>-    <term name="no date">दिनांक अज्ञात</term>-    <term name="no date" form="short">n.d.</term>-    <term name="online">ऑनलाइन</term>-    <term name="presented at">पर प्रस्तुत</term>-    <term name="reference">-      <single>संदर्भ</single>-      <multiple>references</multiple>-    </term>-    <term name="reference" form="short">-      <single>ref.</single>-      <multiple>refs.</multiple>-    </term>-    <term name="retrieved">पुनर्प्राप्त</term>-    <term name="scale">scale</term>-    <term name="version">संस्करण</term>--    <!-- LONG ITEM TYPE FORMS -->-    <term name="article">preprint</term>-    <term name="article-journal">journal article</term>-    <term name="article-magazine">magazine article</term>-    <term name="article-newspaper">newspaper article</term>-    <term name="bill">bill</term>-    <!-- book is in the list of locator terms -->-    <term name="broadcast">broadcast</term>-    <!-- chapter is in the list of locator terms -->-    <term name="classic">classic</term>-    <term name="collection">collection</term>-    <term name="dataset">dataset</term>-    <term name="document">document</term>-    <term name="entry">entry</term>-    <term name="entry-dictionary">dictionary entry</term>-    <term name="entry-encyclopedia">encyclopedia entry</term>-    <term name="event">event</term>-    <!-- figure is in the list of locator terms -->-    <term name="graphic">graphic</term>-    <term name="hearing">hearing</term>-    <term name="interview">साक्षात्कार</term>-    <term name="legal_case">legal case</term>-    <term name="legislation">legislation</term>-    <term name="manuscript">manuscript</term>-    <term name="map">map</term>-    <term name="motion_picture">video recording</term>-    <term name="musical_score">musical score</term>-    <term name="pamphlet">pamphlet</term>-    <term name="paper-conference">conference paper</term>-    <term name="patent">patent</term>-    <term name="performance">performance</term>-    <term name="periodical">periodical</term>-    <term name="personal_communication">personal communication</term>-    <term name="post">post</term>-    <term name="post-weblog">blog post</term>-    <term name="regulation">regulation</term>-    <term name="report">report</term>-    <term name="review">review</term>-    <term name="review-book">book review</term>-    <term name="software">software</term>-    <term name="song">audio recording</term>-    <term name="speech">presentation</term>-    <term name="standard">standard</term>-    <term name="thesis">thesis</term>-    <term name="treaty">treaty</term>-    <term name="webpage">webpage</term>--    <!-- SHORT ITEM TYPE FORMS -->-    <term name="article-journal" form="short">journal art.</term>-    <term name="article-magazine" form="short">mag. art.</term>-    <term name="article-newspaper" form="short">newspaper art.</term>-    <!-- book is in the list of locator terms -->-    <!-- chapter is in the list of locator terms -->-    <term name="document" form="short">doc.</term>-    <!-- figure is in the list of locator terms -->-    <term name="graphic" form="short">graph.</term>-    <term name="interview" form="short">interv.</term>-    <term name="manuscript" form="short">MS</term>-    <term name="motion_picture" form="short">video rec.</term>-    <term name="report" form="short">rep.</term>-    <term name="review" form="short">rev.</term>-    <term name="review-book" form="short">bk. rev.</term>-    <term name="song" form="short">audio rec.</term>--    <!-- HISTORICAL ERA TERMS -->-    <term name="ad">CE</term>-    <term name="bc">BCE</term>-    <term name="bce">BCE</term>-    <term name="ce">CE</term>--    <!-- PUNCTUATION -->-    <term name="open-quote">“</term>-    <term name="close-quote">”</term>-    <term name="open-inner-quote">‘</term>-    <term name="close-inner-quote">’</term>-    <term name="page-range-delimiter">–</term>-    <term name="colon">:</term>-    <term name="comma">,</term>-    <term name="semicolon">;</term>--    <!-- ORDINALS -->-    <term name="ordinal">वाँ</term>-    <term name="ordinal-01"></term>-    <term name="ordinal-02"></term>-    <term name="ordinal-03"></term>-    <term name="ordinal-04"></term>-    <term name="ordinal-06"></term>--    <!-- LONG ORDINALS -->-    <term name="long-ordinal-01">पहला</term>-    <term name="long-ordinal-01" gender-form="feminine">पहली</term>-    <term name="long-ordinal-02">दूसरा</term>-    <term name="long-ordinal-02" gender-form="feminine">दूसरी</term>-    <term name="long-ordinal-03">तीसरा</term>-    <term name="long-ordinal-03" gender-form="feminine">तीसरी</term>-    <term name="long-ordinal-04">चौथा</term>-    <term name="long-ordinal-04" gender-form="feminine">चौथी</term>-    <term name="long-ordinal-05">पाँचवा</term>-    <term name="long-ordinal-05" gender-form="feminine">पाँचवी</term>-    <term name="long-ordinal-06">छठा</term>-    <term name="long-ordinal-06" gender-form="feminine">छठी</term>-    <term name="long-ordinal-07">सातवाँ</term>-    <term name="long-ordinal-07" gender-form="feminine">सातवीं</term>-    <term name="long-ordinal-08">आठवाँ</term>-    <term name="long-ordinal-08" gender-form="feminine">आठवीं</term>-    <term name="long-ordinal-09">नवाँ</term>-    <term name="long-ordinal-09" gender-form="feminine">नौवीं</term>-    <term name="long-ordinal-10">दसवाँ</term>-    <term name="long-ordinal-10" gender-form="feminine">दसवीं</term>--    <!-- LONG LOCATOR FORMS -->-    <term name="act">			 -      <single>act</single>-      <multiple>acts</multiple>						 -    </term>-    <term name="appendix">			 -      <single>appendix</single>-      <multiple>appendices</multiple>						 -    </term>-    <term name="article-locator">			 -      <single>article</single>-      <multiple>articles</multiple>						 -    </term>-    <term name="canon">			 -      <single>canon</single>-      <multiple>canons</multiple>						 -    </term>-    <term name="elocation">			 -      <single>location</single>-      <multiple>locations</multiple>						 -    </term>-    <term name="equation">			 -      <single>equation</single>-      <multiple>equations</multiple>						 -    </term>-    <term name="rule">			 -      <single>rule</single>-      <multiple>rules</multiple>						 -    </term>-    <term name="scene">			 -      <single>scene</single>-      <multiple>scenes</multiple>						 -    </term>-    <term name="table">			 -      <single>table</single>-      <multiple>tables</multiple>						 -    </term>-    <term name="timestamp"> <!-- generally blank -->-      <single></single>-      <multiple></multiple>						 -    </term>-    <term name="title-locator">			 -      <single>title</single>-      <multiple>titles</multiple>						 -    </term>-    <term name="book">-      <single>पुस्तक</single>-      <multiple>पुस्तकें</multiple>-    </term>-    <term name="chapter">-      <single>अध्याय</single>-      <multiple>अध्याय</multiple>-    </term>-    <term name="column">-      <single>कॉलम</single>-      <multiple>columns</multiple>-    </term>-    <term name="figure">-      <single>चित्र</single>-      <multiple>चित्रों</multiple>-    </term>-    <term name="folio">-      <single>पर्ण</single>-      <multiple>folios</multiple>-    </term>-    <term name="issue">-      <single>संख्या</single>-      <multiple>संख्याएँ</multiple>-    </term>-    <term name="line">-      <single>पंक्ति</single>-      <multiple>पंक्तियाँ</multiple>-    </term>-    <term name="note">-      <single>नोट</single>-      <multiple>notes</multiple>-    </term>-    <term name="opus">-      <single>opus</single>-      <multiple>opera</multiple>-    </term>-    <term name="page">-      <single>पृष्ठ</single>-      <multiple>पृष्ठ</multiple>-    </term>-    <term name="number-of-pages">-      <single>पृष्ठ संख्या</single>-      <multiple>पृष्ठों की संख्या</multiple>-    </term>-    <term name="paragraph">-      <single>अनुच्छेद</single>-      <multiple>paragraphs</multiple>-    </term>-    <term name="part">-      <single>भाग</single>-      <multiple>parts</multiple>-    </term>-    <term name="section">-      <single>अनुभाग</single>-      <multiple>sections</multiple>-    </term>-    <term name="sub-verbo">-      <single>sub verbo</single>-      <multiple>sub verbis</multiple>-    </term>-    <term name="verse">-      <single>पद</single>-      <multiple>verses</multiple>-    </term>-    <term name="volume">-      <single>वॉल्यूम</single>-      <multiple>वॉल्यूम्ज़</multiple>-    </term>--    <!-- SHORT LOCATOR FORMS -->-    <term name="appendix" form="short">			 -      <single>app.</single>-      <multiple>apps.</multiple>						 -    </term>-    <term name="article-locator" form="short">			 -      <single>art.</single>-      <multiple>arts.</multiple>-    </term>-    <term name="elocation" form="short">			 -      <single>loc.</single>-      <multiple>locs.</multiple>-    </term>-    <term name="equation" form="short">			 -      <single>eq.</single>-      <multiple>eqs.</multiple>-    </term>-    <term name="rule" form="short">			 -      <single>r.</single>-      <multiple>rr.</multiple>						 -    </term>-    <term name="scene" form="short">			 -      <single>sc.</single>-      <multiple>scs.</multiple>						 -    </term>-    <term name="table" form="short">			 -      <single>tbl.</single>-      <multiple>tbls.</multiple>						 -    </term>-    <term name="timestamp" form="short"> <!-- generally blank -->-      <single></single>-      <multiple></multiple>						 -    </term>-    <term name="title-locator" form="short">			 -      <single>tit.</single>-      <multiple>tits.</multiple>-    </term>-    <term name="book" form="short">-      <single>bk.</single>-      <multiple>bks.</multiple>-    </term>-    <term name="chapter" form="short">-      <single>chap.</single>-      <multiple>chaps.</multiple>-    </term>-    <term name="column" form="short">-      <single>col.</single>-      <multiple>cols.</multiple>-    </term>-    <term name="figure" form="short">-      <single>fig.</single>-      <multiple>figs.</multiple>-    </term>-    <term name="folio" form="short">-      <single>fol.</single>-      <multiple>fols.</multiple>-    </term>-    <term name="issue" form="short">-      <single>no.</single>-      <multiple>nos.</multiple>-    </term>-    <term name="line" form="short">-      <single>l.</single>-      <multiple>ll.</multiple>-    </term>-    <term name="note" form="short">-      <single>n.</single>-      <multiple>nn.</multiple>-    </term>-    <term name="opus" form="short">-      <single>op.</single>-      <multiple>opp.</multiple>-    </term>-    <term name="page" form="short">-      <single>पृ.</single>-      <multiple>पृ.</multiple>-    </term>-    <term name="number-of-pages" form="short">-      <single>पृ. स.</single>-      <multiple>पृ. स.</multiple>-    </term>-    <term name="paragraph" form="short">-      <single>para.</single>-      <multiple>paras.</multiple>-    </term>-    <term name="part" form="short">-      <single>pt.</single>-      <multiple>pts.</multiple>-    </term>-    <term name="section" form="short">-      <single>sec.</single>-      <multiple>secs.</multiple>-    </term>-    <term name="sub-verbo" form="short">-      <single>s.v.</single>-      <multiple>s.vv.</multiple>-    </term>-    <term name="verse" form="short">-      <single>v.</single>-      <multiple>vv.</multiple>-    </term>-    <term name="volume" form="short">-      <single>vol.</single>-      <multiple>vols.</multiple>-    </term>--    <!-- SYMBOL LOCATOR FORMS -->-    <term name="paragraph" form="symbol">-      <single>¶</single>-      <multiple>¶¶</multiple>-    </term>-    <term name="section" form="symbol">-      <single>§</single>-      <multiple>§§</multiple>-    </term>--    <!-- LONG ROLE FORMS -->-    <term name="chair">-      <single>chair</single>-      <multiple>chairs</multiple>-    </term>-    <term name="compiler">-      <single>compiler</single>-      <multiple>compilers</multiple>-    </term>-    <term name="contributor">-      <single>contributor</single>-      <multiple>contributors</multiple>-    </term>-    <term name="curator">-      <single>curator</single>-      <multiple>curators</multiple>-    </term>-    <term name="executive-producer">-      <single>executive producer</single>-      <multiple>executive producers</multiple>-    </term>-    <term name="guest">-      <single>guest</single>-      <multiple>guests</multiple>-    </term>-    <term name="host">-      <single>host</single>-      <multiple>hosts</multiple>-    </term>-    <term name="narrator">-      <single>narrator</single>-      <multiple>narrators</multiple>-    </term>-    <term name="organizer">-      <single>organizer</single>-      <multiple>organizers</multiple>-    </term>-    <term name="performer">-      <single>performer</single>-      <multiple>performers</multiple>-    </term>-    <term name="producer">-      <single>producer</single>-      <multiple>producers</multiple>-    </term>-    <term name="script-writer">-      <single>writer</single>-      <multiple>writers</multiple>-    </term>-    <term name="series-creator">-      <single>series creator</single>-      <multiple>series creators</multiple>-    </term>-    <term name="director">-      <single>निर्देशक</single>-      <multiple>directors</multiple>-    </term>-    <term name="editor">-      <single>सम्पादक</single>-      <multiple>editors</multiple>-    </term>-    <term name="editorial-director">-      <single>सम्पादक</single>-      <multiple>editors</multiple>-    </term>-    <term name="illustrator">-      <single>चित्रकार</single>-      <multiple>illustrators</multiple>-    </term>-    <term name="translator">-      <single>अनुवादक</single>-      <multiple>translators</multiple>-    </term>-    <term name="editortranslator">-      <single>सम्पादक &amp; अनुवादक</single>-      <multiple>editors &amp; translators</multiple>-    </term>--    <!-- SHORT ROLE FORMS -->-    <term name="compiler" form="short">-      <single>comp.</single>-      <multiple>comps.</multiple>-    </term>-    <term name="contributor" form="short">-      <single>contrib.</single>-      <multiple>contribs.</multiple>-    </term>-    <term name="curator" form="short">-      <single>cur.</single>-      <multiple>curs.</multiple>-    </term>-    <term name="executive-producer" form="short">-      <single>exec. prod.</single>-      <multiple>exec. prods.</multiple>-    </term>-    <term name="narrator" form="short">-      <single>narr.</single>-      <multiple>narrs.</multiple>-    </term>-    <term name="organizer" form="short">-      <single>org.</single>-      <multiple>orgs.</multiple>-    </term>-    <term name="performer" form="short">-      <single>perf.</single>-      <multiple>perfs.</multiple>-    </term>-    <term name="producer" form="short">-      <single>prod.</single>-      <multiple>prods.</multiple>-    </term>-    <term name="script-writer" form="short">-      <single>writ.</single>-      <multiple>writs.</multiple>-    </term>-    <term name="series-creator" form="short">-      <single>cre.</single>-      <multiple>cres.</multiple>-    </term>-    <term name="director" form="short">-      <single>dir.</single>-      <multiple>dirs.</multiple>-    </term>-    <term name="editor" form="short">-      <single>ed.</single>-      <multiple>eds.</multiple>-    </term>-    <term name="editorial-director" form="short">-      <single>ed.</single>-      <multiple>eds.</multiple>-    </term>-    <term name="illustrator" form="short">-      <single>ill.</single>-      <multiple>ills.</multiple>-    </term>-    <term name="translator" form="short">-      <single>tran.</single>-      <multiple>trans.</multiple>-    </term>-    <term name="editortranslator" form="short">-      <single>ed. &amp; tran.</single>-      <multiple>eds. &amp; trans.</multiple>-    </term>--    <!-- VERB ROLE FORMS -->-    <term name="chair" form="verb">chaired by</term>-    <term name="compiler" form="verb">compiled by</term>-    <term name="contributor" form="verb">with</term>-    <term name="curator" form="verb">curated by</term>-    <term name="executive-producer" form="verb">executive produced by</term>-    <term name="guest" form="verb">with guest</term>-    <term name="host" form="verb">hosted by</term>-    <term name="narrator" form="verb">narrated by</term>-    <term name="organizer" form="verb">organized by</term>-    <term name="performer" form="verb">performed by</term>-    <term name="producer" form="verb">produced by</term>-    <term name="script-writer" form="verb">written by</term>-    <term name="series-creator" form="verb">created by</term>-    <term name="container-author" form="verb">द्वारा</term>-    <term name="director" form="verb">निर्देशन</term>-    <term name="editor" form="verb">सम्पादन</term>-    <term name="editorial-director" form="verb">निर्देशन</term>-    <term name="illustrator" form="verb">चित्रकारी</term>-    <term name="interviewer" form="verb">साक्षात्कारकर्ता</term>-    <term name="recipient" form="verb">सेवा में</term>-    <term name="reviewed-author" form="verb">द्वारा</term>-    <term name="translator" form="verb">अनुवाद </term>-    <term name="editortranslator" form="verb">सम्पादन &amp; अनुवाद</term>--    <!-- SHORT VERB ROLE FORMS -->-    <term name="compiler" form="verb-short">comp. by</term>-    <term name="contributor" form="verb-short">w.</term>-    <term name="curator" form="verb-short">cur. by</term>-    <term name="executive-producer" form="verb-short">exec. prod. by</term>-    <term name="guest" form="verb-short">w. guest</term>-    <term name="host" form="verb-short">hosted by</term>-    <term name="narrator" form="verb-short">narr. by</term>-    <term name="organizer" form="verb-short">org. by</term>-    <term name="performer" form="verb-short">perf. by</term>-    <term name="producer" form="verb-short">prod. by</term>-    <term name="script-writer" form="verb-short">writ. by</term>-    <term name="series-creator" form="verb-short">cre. by</term>-    <term name="director" form="verb-short">dir. by</term>-    <term name="editor" form="verb-short">ed. by</term>-    <term name="editorial-director" form="verb-short">ed. by</term>-    <term name="illustrator" form="verb-short">illus. by</term>-    <term name="translator" form="verb-short">trans. by</term>-    <term name="editortranslator" form="verb-short">ed. &amp; trans. by</term>--    <!-- LONG MONTH FORMS -->-    <term name="month-01">जनवरी</term>-    <term name="month-02">फ़रवरी</term>-    <term name="month-03">मार्च</term>-    <term name="month-04">अप्रैल</term>-    <term name="month-05">मई</term>-    <term name="month-06">जून</term>-    <term name="month-07">जुलाई</term>-    <term name="month-08">अगस्त</term>-    <term name="month-09">सितम्बर</term>-    <term name="month-10">अक्टूबर</term>-    <term name="month-11">नवम्बर</term>-    <term name="month-12">दिसम्बर</term>--    <!-- SHORT MONTH FORMS -->-    <term name="month-01" form="short">जन.</term>-    <term name="month-02" form="short">फ़र.</term>-    <term name="month-03" form="short">मार्च</term>-    <term name="month-04" form="short">अप्रैल</term>-    <term name="month-05" form="short">मई</term>-    <term name="month-06" form="short">जून</term>-    <term name="month-07" form="short">जुलाई</term>-    <term name="month-08" form="short">अग.</term>-    <term name="month-09" form="short">सित.</term>-    <term name="month-10" form="short">अक्ट.</term>-    <term name="month-11" form="short">नव.</term>-    <term name="month-12" form="short">दिस.</term>--    <!-- SEASONS -->-    <term name="season-01">वसंत ऋतु</term>-    <term name="season-02">ग्रीष्म ऋतु</term>-    <term name="season-03">पतझड़ ऋतु</term>-    <term name="season-04">शिशिर ऋतु</term>-  </terms>-</locale>
man/citeproc.1 view
@@ -1,137 +1,134 @@-.\" Automatically generated by Pandoc 2.13+.\" Automatically generated by Pandoc 3.6 .\"-.TH "citeproc" "1" "" "citeproc 0.6" ""-.hy+.TH "citeproc" "1" "" "citeproc 0.8.1.1" .SH NAME-.PP-citeproc - process citations using a CSL stylesheet.+citeproc \- process citations using a CSL stylesheet. .SH SYNOPSIS-.PP-\f[C]citeproc [options] [file]\f[R]+\f[CR]citeproc [options] [file]\f[R] .SH DESCRIPTION-.PP-\f[C]citeproc\f[R] reads a JSON-encoded \f[C]Inputs\f[R] object from-\f[C]stdin\f[R] (or from a file if a filename is provided) and writes a-JSON-encoded \f[C]Result\f[R] object to \f[C]stdout\f[R].-This executable can be used to add citation processing to non-Haskell+\f[CR]citeproc\f[R] reads a JSON\-encoded \f[CR]Inputs\f[R] object from+\f[CR]stdin\f[R] (or from a file if a filename is provided) and writes a+JSON\-encoded \f[CR]Result\f[R] object to \f[CR]stdout\f[R].+This executable can be used to add citation processing to non\-Haskell projects. .SH OPTIONS .TP-\f[B]\f[CB]-s\f[B]\f[R] \f[I]FILE\f[R], \f[B]\f[CB]--style=\f[B]\f[R]\f[I]FILE\f[R]+\f[CR]\-s\f[R] \f[I]FILE\f[R], \f[CR]\-\-style=\f[R]\f[I]FILE\f[R] Specify a CSL style to be used. .TP-\f[B]\f[CB]-r\f[B]\f[R] \f[I]FILE\f[R], \f[B]\f[CB]--references=\f[B]\f[R]\f[I]FILE\f[R]+\f[CR]\-r\f[R] \f[I]FILE\f[R], \f[CR]\-\-references=\f[R]\f[I]FILE\f[R] Specify a CSL JSON bibliography to be used as a source for references. .TP-\f[B]\f[CB]a\f[B]\f[R] \f[I]FILE\f[R], \f[B]\f[CB]--abbreviations=\f[B]\f[R]\f[I]FILE\f[R]+\f[CR]a\f[R] \f[I]FILE\f[R], \f[CR]\-\-abbreviations=\f[R]\f[I]FILE\f[R] Specify a CSL abbreviations file. .TP-\f[B]\f[CB]l\f[B]\f[R] \f[I]LANG\f[R], \f[B]\f[CB]--lang=\f[B]\f[R]\f[I]LANG\f[R]+\f[CR]l\f[R] \f[I]LANG\f[R], \f[CR]\-\-lang=\f[R]\f[I]LANG\f[R] Specify a locale to override the style\[cq]s default.-A BCP 47 language tag is expected: for example, \f[C]en\f[R],-\f[C]de\f[R], \f[C]en-US\f[R], \f[C]fr-CA\f[R], \f[C]ug-Cyrl\f[R].-The unicode extension syntax (after \f[C]-u-\f[R]) may be used to+A BCP 47 language tag is expected: for example, \f[CR]en\f[R],+\f[CR]de\f[R], \f[CR]en\-US\f[R], \f[CR]fr\-CA\f[R],+\f[CR]ug\-Cyrl\f[R].+The unicode extension syntax (after \f[CR]\-u\-\f[R]) may be used to specify options for collation. Here are some examples: .RS .IP \[bu] 2-\f[C]zh-u-co-pinyin\f[R] \[en] Chinese with the Pinyin collation.+\f[CR]zh\-u\-co\-pinyin\f[R] \[en] Chinese with the Pinyin collation. .IP \[bu] 2-\f[C]es-u-co-trad\f[R] \[en] Spanish with the traditional collation-(with \f[C]Ch\f[R] sorting after \f[C]C\f[R]).+\f[CR]es\-u\-co\-trad\f[R] \[en] Spanish with the traditional collation+(with \f[CR]Ch\f[R] sorting after \f[CR]C\f[R]). .IP \[bu] 2-\f[C]fr-u-kb\f[R] \[en] French with \[lq]backwards\[rq] accent sorting-(with \f[C]cot\['e]\f[R] sorting after \f[C]c\[^o]te\f[R]).+\f[CR]fr\-u\-kb\f[R] \[en] French with \[lq]backwards\[rq] accent+sorting (with \f[CR]coté\f[R] sorting after \f[CR]côte\f[R]). .IP \[bu] 2-\f[C]en-US-u-kf-upper\f[R] \[en] English with uppercase letters sorting-before lower (default is lower before upper).+\f[CR]en\-US\-u\-kf\-upper\f[R] \[en] English with uppercase letters+sorting before lower (default is lower before upper). .RE .TP-\f[B]\f[CB]f\f[B]\f[R] \f[I]html|json\f[R], \f[B]\f[CB]--format=\f[B]\f[R]\f[I]html|json\f[R]+\f[CR]f\f[R] \f[I]html|json\f[R], \f[CR]\-\-format=\f[R]\f[I]html|json\f[R] Specify the format to be used for the entries.-\f[C]html\f[R] (the default) uses HTML tags and entities for formatting.-\f[C]json\f[R] creates a structured JSON representation of a formatted+\f[CR]html\f[R] (the default) uses HTML tags and entities for+formatting.+\f[CR]json\f[R] creates a structured JSON representation of a formatted document. .TP-\f[B]\f[CB]-h, --help\f[B]\f[R]+\f[CR]\-\-link\-citations\f[R]+Enable hyperlinking of citations to the bibliography.+.TP+\f[CR]\-\-link\-bibliography\f[R]+Enable automatic linkification of any identifiers (DOI, PMCID, PMID, or+URL) appearing in a bibliography entry.+When an entry has a DOI, PMCID, PMID, or URL available but none of these+are rendered by the style, add a link to the title (or, if no title is+present, the whole entry), using the URL for the DOI, PMCID, PMID, or+URL (in that order of priority).+.TP+\f[CR]\-h, \-\-help\f[R] Print usage information. .TP-\f[B]\f[CB]-V, --version\f[B]\f[R]+\f[CR]\-V, \-\-version\f[R] Print version. .SH NOTES-.PP The input JSON should have the structure: .IP-.nf-\f[C]-{ \[dq]citations\[dq]:     [ ...list of citations... ],-  \[dq]references\[dq]:    [ ...list of references... ],+.EX+{ \[dq]citations\[dq]:     [ \f[B]...list\f[R] \f[B]of\f[R] \f[B]citations...\f[R] ],+  \[dq]references\[dq]:    [ \f[B]...list\f[R] \f[B]of\f[R] \f[B]references...\f[R] ],   \[dq]style\[dq]:         \[dq]<style>...</style>\[dq],-  \[dq]abbreviations\[dq]: { ...abbreviations... },-  \[dq]lang\[dq]:          \[dq]fr-FR\[dq] }-\f[R]-.fi+  \[dq]abbreviations\[dq]: { \f[B]...abbreviations...\f[R] },+  \[dq]lang\[dq]:          \[dq]fr\-FR\[dq] }+.EE .PP None of these fields is mandatory.-Instead of providing \f[C]references\f[R] in the input JSON, one can+Instead of providing \f[CR]references\f[R] in the input JSON, one can specify a file containing a CSL JSON bibliography, using the-\f[C]--references\f[R] option on the command line.+\f[CR]\-\-references\f[R] option on the command line. Instead of providing a CSL stylesheet in the JSON, one can specify a-file using the \f[C]--style\f[R] option.-\f[C]--abbreviations\f[R] and \f[C]--lang\f[R] may also be used on the-command line to specify an abbreviations file or a locale.-(Command-line options always override any values given in the JSON+file using the \f[CR]\-\-style\f[R] option.+\f[CR]\-\-abbreviations\f[R] and \f[CR]\-\-lang\f[R] may also be used on+the command line to specify an abbreviations file or a locale.+(Command\-line options always override any values given in the JSON file.) .PP A citation is structured like this: .IP-.nf-\f[C]+.EX { \[dq]citationID\[dq]: \[dq]foo\[dq],-  \[dq]citationItems\[dq]: [ ...list of citationItems... ],+  \[dq]citationItems\[dq]: [ \f[B]...list\f[R] \f[B]of\f[R] \f[B]citationItems...\f[R] ],   \[dq]citationNoteNumber\[dq]: 3 }-\f[R]-.fi+.EE .PP-Only \f[C]citationItems\f[R] is necessary.+Only \f[CR]citationItems\f[R] is necessary. Alternatively, instead of .IP-.nf-\f[C]-{ \[dq]citationItems\[dq]: [ ... ] }-\f[R]-.fi+.EX+{ \[dq]citationItems\[dq]: [ \f[B]...\f[R] ] }+.EE .PP one can just specify an array of items directly: .IP-.nf-\f[C]-[ ... ]-\f[R]-.fi+.EX+[ \f[B]...\f[R] ]+.EE .PP A citation item is structured like this: .IP-.nf-\f[C]+.EX { \[dq]id\[dq]:       \[dq]foo\[dq],-  \[dq]type\[dq]:     \[dq]suppress-author\[dq],+  \[dq]type\[dq]:     \[dq]suppress\-author\[dq],   \[dq]label\[dq]:    \[dq]page\[dq],   \[dq]locator\[dq]:  \[dq]45\[dq],   \[dq]prefix\[dq]:   \[dq]see \[dq],   \[dq]suffix\[dq]:   \[dq] and others\[dq] }-\f[R]-.fi+.EE .PP-Only \f[C]id\f[R] is mandatory.-If \f[C]type\f[R] is omitted, it will be assumed to be-\f[C]normal-cite\f[R] (other values are \f[C]suppress-author\f[R] and-\f[C]author-only\f[R]).+Only \f[CR]id\f[R] is mandatory.+If \f[CR]type\f[R] is omitted, it will be assumed to be+\f[CR]normal\-cite\f[R] (other values are \f[CR]suppress\-author\f[R]+and \f[CR]author\-only\f[R]). .PP A reference is structured like this: .IP-.nf-\f[C]+.EX {   \[dq]author\[dq]: [     {@@ -140,14 +137,14 @@   ],   \[dq]id\[dq]: \[dq]aristotle:prior\[dq],   \[dq]issued\[dq]: {-    \[dq]date-parts\[dq]: [+    \[dq]date\-parts\[dq]: [       [         1989       ]     ]   },   \[dq]publisher\[dq]: \[dq]Hackett\[dq],-  \[dq]publisher-place\[dq]: \[dq]Indianapolis\[dq],+  \[dq]publisher\-place\[dq]: \[dq]Indianapolis\[dq],   \[dq]title\[dq]: \[dq]Prior analytics\[dq],   \[dq]translator\[dq]: [     {@@ -157,45 +154,39 @@   ],   \[dq]type\[dq]: \[dq]book\[dq] }-\f[R]-.fi+.EE .PP An abbreviations object has this form: .IP-.nf-\f[C]+.EX { \[dq]default\[dq]: {-    \[dq]container-title\[dq]: {+    \[dq]container\-title\[dq]: {             \[dq]Lloyd\[aq]s Law Reports\[dq]: \[dq]Lloyd\[aq]s Rep\[dq],             \[dq]Estates Gazette\[dq]: \[dq]EG\[dq],             \[dq]Scots Law Times\[dq]: \[dq]SLT\[dq]     }   } }-\f[R]-.fi+.EE .PP The abbreviations will be substituted in the output only when the-\f[C]form\f[R] attribute for the style element that renders the variable-is set to \f[C]short\f[R].+\f[CR]form\f[R] attribute for the style element that renders the+variable is set to \f[CR]short\f[R]. .PP The output JSON will have the structure: .IP-.nf-\f[C]-{ \[dq]citations\[dq]:    [ ...list of strings... ],-  \[dq]bibliography\[dq]: [ ...list of arrays: item id and a string... ],-  \[dq]warnings\[dq]:     [ ...list of warnings... ]+.EX+{ \[dq]citations\[dq]:    [ \f[B]...list\f[R] \f[B]of\f[R] \f[B]strings...\f[R] ],+  \[dq]bibliography\[dq]: [ \f[B]...list\f[R] \f[B]of\f[R] \f[B]arrays:\f[R] \f[B]item\f[R] \f[B]id\f[R] \f[B]and\f[R] \f[B]a\f[R] \f[B]string...\f[R] ],+  \[dq]warnings\[dq]:     [ \f[B]...list\f[R] \f[B]of\f[R] \f[B]warnings...\f[R] ] }-\f[R]-.fi+.EE .PP The contents of the entries will be HTML by default, but if-\f[C]--format=json\f[R] is specified, it will be a structured+\f[CR]\-\-format=json\f[R] is specified, it will be a structured representation of formatted text. .IP-.nf-\f[C]+.EX [   \[dq]\[em]\[em]\[em]. 1983b. \[lq]The Concept of Truth in Formalized Languages.\[rq] In \[dq],   {@@ -206,11 +197,9 @@   },   \[dq], edited by John Corcoran, 152\[en]278. Indianapolis: Hackett.\[dq] ]-\f[R]-.fi+.EE .PP This representation can be used if you want to convert the result to a format other than HTML. .SH AUTHORS-.PP John MacFarlane
man/citeproc.1.md view
@@ -50,6 +50,17 @@     default) uses HTML tags and entities for formatting.  `json`     creates a structured JSON representation of a formatted document. +`--link-citations`+:   Enable hyperlinking of citations to the bibliography.++`--link-bibliography`+:   Enable automatic linkification of any identifiers (DOI, PMCID,+    PMID, or URL) appearing in a bibliography entry.  When an entry+    has a DOI, PMCID, PMID, or URL available but none of these are+    rendered by the style, add a link to the title (or, if no title+    is present, the whole entry), using the URL for the DOI, PMCID,+    PMID, or URL (in that order of priority).+ `-h, --help` :   Print usage information. 
src/Citeproc/Eval.hs view
@@ -2590,7 +2590,10 @@              case lookupVariable t ref of                Just x  -> isNonEmpty x                Nothing -> False-           HasType t -> lookupVariable "type" ref == Just (TextVal t)+           HasType ts ->+             case lookupVariable "type" ref of+               Just (TextVal ty) -> ty `elem` ts+               _ -> False            IsUncertainDate t -> case lookupVariable t ref of                                   Just (DateVal d) -> dateCirca d                                   _                -> False
src/Citeproc/Style.hs view
@@ -280,7 +280,7 @@              xs (splitVars t)            _       -> id) .         (case lookupAttribute "type" attr of-           Just t  -> \xs -> foldr ((:) . HasType) xs (T.words $ T.strip t)+           Just t  -> (HasType (T.words $ T.strip t) :)            _       -> id) .         (case lookupAttribute "variable" attr of            Just t  -> \xs -> foldr ((:) . HasVariable) xs (splitVars t)
src/Citeproc/Types.hs view
@@ -351,7 +351,7 @@  data Condition =     HasVariable Variable-  | HasType Text+  | HasType [Text]   | IsUncertainDate Variable   | IsNumeric Variable   | HasLocatorType Variable
+ test/extra/issue_151.txt view
@@ -0,0 +1,59 @@+>>===== MODE =====>>+citation+<<===== MODE =====<<+++++>>===== RESULT =====>>+type is article-journal or chaptertype is article-journal or chapter+<<===== RESULT =====<<+++>>===== CSL =====>>+<?xml version="1.0" encoding="utf-8"?>+<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">+  <info>+    <title>Type conditional test</title>+    <id>http://www.zotero.org/styles/type-conditional-test</id>+    <updated>2025-03-27T23:03:22+00:00</updated>+  </info>+  <citation>+    <layout>+      <choose>+        <if match="all" type="article-journal chapter">+          <text value="type is article-journal or chapter"/>+        </if>+      </choose>+    </layout>+  </citation>+</style>+<<===== CSL =====<<+++>>===== CITATION-ITEMS =====>>+[ [ {"id":"test1"}, {"id":"test2"} ] ]+<<===== CITATION-ITEMS =====<<++++>>===== INPUT =====>>+[+  {+    "id": "test1",+    "type": "article-journal",+    "title": "Test One"+  },+  {+    "id": "test2",+    "type": "chapter",+    "title": "Test Two"+  }+]+<<===== INPUT =====<<+++>>===== VERSION =====>>+1.0+<<===== VERSION =====<<+