citeproc 0.6 → 0.6.0.1
raw patch · 7 files changed
+492/−43 lines, 7 filessetup-changedPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +4/−0
- Setup.hs +0/−2
- citeproc.cabal +1/−1
- locales/hi-IN.xml +361/−0
- src/Citeproc/Eval.hs +46/−36
- stack.yaml +2/−4
- test/extra/issue_99.txt +78/−0
CHANGELOG.md view
@@ -1,5 +1,9 @@ # citeproc changelog +## 0.6.0.1++ * Ensure that position evaluates false inside bibliography (#99).+ ## 0.6 * Add Term parameter to TagTerm [API change].
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
citeproc.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: citeproc-version: 0.6+version: 0.6.0.1 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
+ locales/hi-IN.xml view
@@ -0,0 +1,361 @@+<?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="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="interview">साक्षात्कार</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>++ <!-- ANNO DOMINI; BEFORE CHRIST -->+ <term name="ad">CE</term>+ <term name="bc">BCE</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>++ <!-- 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-01" 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="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="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="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>सम्पादक & अनुवादक</single>+ <multiple>editors & translators</multiple>+ </term>++ <!-- SHORT ROLE FORMS -->+ <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. & tran.</single>+ <multiple>eds. & trans.</multiple>+ </term>++ <!-- VERB ROLE FORMS -->+ <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">सम्पादन & अनुवाद</term>++ <!-- SHORT VERB ROLE FORMS -->+ <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. & 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>
src/Citeproc/Eval.hs view
@@ -1315,42 +1315,52 @@ getPosition :: Int -> Maybe Int -> CitationItem a -> Int -> Eval a [Position] getPosition groupNum mbNoteNum item posInGroup = do- lastCitedMap <- gets stateLastCitedMap- noteMap <- gets stateNoteMap- case M.lookup (citationItemId item) lastCitedMap of- Nothing -> return [FirstPosition]- Just (prevGroupNum, mbPrevNoteNum,- prevPosInGroup, prevAloneInGroup, prevLabel, prevLoc) -> do- isNote <- asks (styleIsNoteStyle . contextStyleOptions)- nearNoteDistance <- fromMaybe 5 <$>- asks (styleNearNoteDistance . contextStyleOptions)- let noteNum = fromMaybe groupNum mbNoteNum- let prevNoteNum = fromMaybe prevGroupNum mbPrevNoteNum- let prevAloneInNote =- case M.lookup prevNoteNum noteMap of- Nothing -> True- Just s -> Set.size s <= 1- let prevAlone = prevAloneInGroup && prevAloneInNote- return $- (if isNote && noteNum - prevNoteNum < nearNoteDistance- then (NearNote :)- else id) .- (if (groupNum == prevGroupNum &&- posInGroup == prevPosInGroup + 1) ||- (groupNum == prevGroupNum + 1 &&- (((-) <$> mbNoteNum <*> mbPrevNoteNum) <= Just 1) &&- posInGroup == 1 &&- prevAlone)- then case (prevLoc, citationItemLocator item) of- (Nothing, Just _) -> (IbidWithLocator :) . (Ibid :)- (Nothing, Nothing) -> (Ibid :)- (Just _, Nothing) -> id- (Just l1, Just l2)- | l1 == l2- , citationItemLabel item == prevLabel -> (Ibid :)- | otherwise -> (IbidWithLocator :) . (Ibid :)- else id)- $ [Subsequent]+ inBibliography <- asks contextInBibliography+ if inBibliography+ then return []+ else getPosition'+ where+ getPosition' = do+ lastCitedMap <- gets stateLastCitedMap+ noteMap <- gets stateNoteMap+ case M.lookup (citationItemId item) lastCitedMap of+ Nothing -> return [FirstPosition]+ Just (prevGroupNum, mbPrevNoteNum,+ prevPosInGroup, prevAloneInGroup,+ prevLabel, prevLoc) -> do+ isNote <- asks (styleIsNoteStyle . contextStyleOptions)+ nearNoteDistance <- fromMaybe 5 <$>+ asks (styleNearNoteDistance . contextStyleOptions)+ let noteNum = fromMaybe groupNum mbNoteNum+ let prevNoteNum = fromMaybe prevGroupNum mbPrevNoteNum+ let prevAloneInNote =+ case M.lookup prevNoteNum noteMap of+ Nothing -> True+ Just s -> Set.size s <= 1+ let prevAlone = prevAloneInGroup && prevAloneInNote+ return $+ (if isNote && noteNum - prevNoteNum < nearNoteDistance+ then (NearNote :)+ else id) .+ (if (groupNum == prevGroupNum &&+ posInGroup == prevPosInGroup + 1) ||+ (groupNum == prevGroupNum + 1 &&+ (((-) <$> mbNoteNum <*> mbPrevNoteNum) <= Just 1) &&+ posInGroup == 1 &&+ prevAlone)+ then case (prevLoc, citationItemLocator item) of+ (Nothing, Just _)+ -> (IbidWithLocator :) . (Ibid :)+ (Nothing, Nothing) -> (Ibid :)+ (Just _, Nothing) -> id+ (Just l1, Just l2)+ | l1 == l2+ , citationItemLabel item == prevLabel+ -> (Ibid :)+ | otherwise+ -> (IbidWithLocator :) . (Ibid :)+ else id)+ $ [Subsequent] eElement :: CiteprocOutput a => Element a -> Eval a [Output a] eElement (Element etype formatting) =
stack.yaml view
@@ -2,9 +2,7 @@ citeproc: executable: true icu: false-resolver: lts-17.5-extra-deps:-- unicode-collation-0.1.3-- text-icu-0.7.1.0+resolver: lts-18.10+extra-deps: [] ghc-options: "$locals": -fhide-source-paths
+ test/extra/issue_99.txt view
@@ -0,0 +1,78 @@+>>===== MODE =====>>+bibliography+<<===== MODE =====<<+++++>>===== RESULT =====>>+<div class="csl-bib-body">+ <div class="csl-entry">John Doe</div>+</div>+<<===== RESULT =====<<+++>>===== CSL =====>>+<?xml version="1.0" encoding="utf-8"?>+<style+ xmlns="http://purl.org/net/xbiblio/csl"+ class="note"+ version="1.0">+ <info>+ <id />+ <title />+ </info>+ <citation>+ <layout>+ <names variable="author">+ <name form="long"/>+ </names>+ </layout>+ </citation>+ <bibliography>+ <layout>+ <choose>+ <if position="subsequent">+ <names variable="author">+ <name form="short"/>+ </names>+ </if>+ <else>+ <names variable="author">+ <name form="long"/>+ </names>+ </else>+ </choose>+ </layout>+ </bibliography>+</style>+<<===== CSL =====<<+++>>===== CITATION-ITEMS =====>>+[ [ {"id":"Doe"} ] ]+<<===== CITATION-ITEMS =====<<++++>>===== INPUT =====>>+[+ {+ "author": [+ {+ "family": "Doe",+ "given": "John"+ }+ ],+ "id": "Doe",+ "type": "book",+ "title": "Title"+ }+]+<<===== INPUT =====<<+++>>===== VERSION =====>>+1.0+<<===== VERSION =====<<+