citeproc-ruby 0.0.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.document +4 -0
- data/.gitignore +10 -0
- data/.rspec +3 -0
- data/.simplecov +4 -0
- data/.travis.yml +17 -0
- data/.yardopts +2 -0
- data/AGPL +662 -0
- data/BSDL +29 -0
- data/Gemfile +42 -0
- data/Guardfile +14 -0
- data/README.md +32 -76
- data/Rakefile +60 -0
- data/citeproc-ruby.gemspec +46 -0
- data/cucumber.yml +1 -0
- data/features/bibliography.feature +25 -0
- data/features/name_options.feature +37 -0
- data/features/names.feature +192 -0
- data/features/renderer.feature +74 -0
- data/features/sort.feature +50 -0
- data/features/step_definitions/renderer.rb +80 -0
- data/features/support/env.rb +33 -0
- data/features/support/hooks.rb +10 -0
- data/lib/citeproc/ruby.rb +32 -0
- data/lib/citeproc/ruby/engine.rb +122 -0
- data/lib/citeproc/ruby/format.rb +303 -0
- data/lib/citeproc/ruby/formats/default.rb +25 -0
- data/lib/citeproc/ruby/formats/html.rb +221 -0
- data/lib/citeproc/ruby/renderer.rb +140 -0
- data/lib/citeproc/ruby/renderer/choose.rb +106 -0
- data/lib/citeproc/ruby/renderer/date.rb +90 -0
- data/lib/citeproc/ruby/renderer/format.rb +129 -0
- data/lib/citeproc/ruby/renderer/group.rb +34 -0
- data/lib/citeproc/ruby/renderer/history.rb +40 -0
- data/lib/citeproc/ruby/renderer/label.rb +66 -0
- data/lib/citeproc/ruby/renderer/layout.rb +20 -0
- data/lib/citeproc/ruby/renderer/locale.rb +26 -0
- data/lib/citeproc/ruby/renderer/macro.rb +20 -0
- data/lib/citeproc/ruby/renderer/names.rb +401 -0
- data/lib/citeproc/ruby/renderer/number.rb +41 -0
- data/lib/citeproc/ruby/renderer/observer.rb +44 -0
- data/lib/citeproc/ruby/renderer/state.rb +96 -0
- data/lib/citeproc/ruby/renderer/text.rb +62 -0
- data/lib/citeproc/ruby/sort.rb +82 -0
- data/lib/citeproc/ruby/version.rb +5 -0
- data/spec/citeproc/ruby/engine_spec.rb +94 -0
- data/spec/citeproc/ruby/formats/default_spec.rb +159 -0
- data/spec/citeproc/ruby/formats/html_spec.rb +162 -0
- data/spec/citeproc/ruby/renderer/choose_spec.rb +293 -0
- data/spec/citeproc/ruby/renderer/date_spec.rb +173 -0
- data/spec/citeproc/ruby/renderer/group_spec.rb +88 -0
- data/spec/citeproc/ruby/renderer/history_spec.rb +38 -0
- data/spec/citeproc/ruby/renderer/label_spec.rb +225 -0
- data/spec/citeproc/ruby/renderer/layout_spec.rb +41 -0
- data/spec/citeproc/ruby/renderer/macro_spec.rb +31 -0
- data/spec/citeproc/ruby/renderer/names_spec.rb +396 -0
- data/spec/citeproc/ruby/renderer/number_spec.rb +120 -0
- data/spec/citeproc/ruby/renderer/text_spec.rb +120 -0
- data/spec/citeproc/ruby/renderer_spec.rb +65 -0
- data/spec/fixtures/items.rb +80 -0
- data/{resource/locale → spec/fixtures/locales}/locales-en-US.xml +2 -11
- data/{resource/locale → spec/fixtures/locales}/locales-fr-FR.xml +77 -66
- data/{resource/style → spec/fixtures/styles}/apa.csl +5 -5
- data/spec/spec_helper.rb +67 -14
- metadata +121 -211
- data/lib/citeproc.rb +0 -100
- data/lib/citeproc/bibliography.rb +0 -57
- data/lib/citeproc/data.rb +0 -149
- data/lib/citeproc/date.rb +0 -133
- data/lib/citeproc/formatter.rb +0 -38
- data/lib/citeproc/item.rb +0 -53
- data/lib/citeproc/name.rb +0 -284
- data/lib/citeproc/processor.rb +0 -166
- data/lib/citeproc/selector.rb +0 -61
- data/lib/citeproc/variable.rb +0 -82
- data/lib/citeproc/version.rb +0 -3
- data/lib/csl/locale.rb +0 -223
- data/lib/csl/node.rb +0 -72
- data/lib/csl/nodes.rb +0 -1418
- data/lib/csl/renderer.rb +0 -88
- data/lib/csl/sort.rb +0 -61
- data/lib/csl/style.rb +0 -110
- data/lib/csl/term.rb +0 -124
- data/lib/extensions/core.rb +0 -43
- data/lib/plugins/filters/bibtex.rb +0 -12
- data/lib/plugins/formats/default.rb +0 -134
- data/lib/plugins/formats/html.rb +0 -67
- data/lib/support/attributes.rb +0 -99
- data/lib/support/compatibility.rb +0 -83
- data/lib/support/tree.rb +0 -80
- data/resource/locale/locales-af-ZA.xml +0 -305
- data/resource/locale/locales-ar-AR.xml +0 -306
- data/resource/locale/locales-bg-BG.xml +0 -305
- data/resource/locale/locales-ca-AD.xml +0 -305
- data/resource/locale/locales-cs-CZ.xml +0 -305
- data/resource/locale/locales-da-DK.xml +0 -305
- data/resource/locale/locales-de-AT.xml +0 -304
- data/resource/locale/locales-de-CH.xml +0 -304
- data/resource/locale/locales-de-DE.xml +0 -332
- data/resource/locale/locales-el-GR.xml +0 -305
- data/resource/locale/locales-en-GB.xml +0 -304
- data/resource/locale/locales-es-ES.xml +0 -305
- data/resource/locale/locales-et-EE.xml +0 -304
- data/resource/locale/locales-eu.xml +0 -305
- data/resource/locale/locales-fa-IR.xml +0 -304
- data/resource/locale/locales-fi-FI.xml +0 -304
- data/resource/locale/locales-fr-CA.xml +0 -306
- data/resource/locale/locales-he-IL.xml +0 -304
- data/resource/locale/locales-hu-HU.xml +0 -305
- data/resource/locale/locales-is-IS.xml +0 -304
- data/resource/locale/locales-it-IT.xml +0 -305
- data/resource/locale/locales-ja-JP.xml +0 -305
- data/resource/locale/locales-kh-KH.xml +0 -303
- data/resource/locale/locales-km-KH.xml +0 -304
- data/resource/locale/locales-ko-KR.xml +0 -305
- data/resource/locale/locales-mn-MN.xml +0 -306
- data/resource/locale/locales-nb-NO.xml +0 -304
- data/resource/locale/locales-nl-NL.xml +0 -304
- data/resource/locale/locales-nn-NO.xml +0 -304
- data/resource/locale/locales-pl-PL.xml +0 -305
- data/resource/locale/locales-pt-BR.xml +0 -304
- data/resource/locale/locales-pt-PT.xml +0 -305
- data/resource/locale/locales-ro-RO.xml +0 -305
- data/resource/locale/locales-ru-RU.xml +0 -306
- data/resource/locale/locales-sk-SK.xml +0 -304
- data/resource/locale/locales-sl-SI.xml +0 -305
- data/resource/locale/locales-sr-RS.xml +0 -305
- data/resource/locale/locales-sv-SE.xml +0 -305
- data/resource/locale/locales-th-TH.xml +0 -304
- data/resource/locale/locales-tr-TR.xml +0 -305
- data/resource/locale/locales-uk-UA.xml +0 -306
- data/resource/locale/locales-vi-VN.xml +0 -305
- data/resource/locale/locales-zh-CN.xml +0 -304
- data/resource/locale/locales-zh-TW.xml +0 -305
- data/resource/schema/csl-categories.rnc +0 -39
- data/resource/schema/csl-data.rnc +0 -98
- data/resource/schema/csl-terms.rnc +0 -106
- data/resource/schema/csl-types.rnc +0 -39
- data/resource/schema/csl-variables.rnc +0 -182
- data/resource/schema/csl.rnc +0 -941
- data/resource/style/bibtex.csl +0 -177
- data/resource/style/chicago-annotated-bibliography.csl +0 -513
- data/resource/style/chicago-author-date-basque.csl +0 -707
- data/resource/style/chicago-author-date-de.csl +0 -394
- data/resource/style/chicago-author-date-listing.csl +0 -434
- data/resource/style/chicago-author-date.csl +0 -425
- data/resource/style/chicago-dated-note-biblio-no-ibid.csl +0 -472
- data/resource/style/chicago-fullnote-bibliography-bb.csl +0 -928
- data/resource/style/chicago-fullnote-bibliography-delimiter-fixes.csl +0 -972
- data/resource/style/chicago-fullnote-bibliography-no-ibid-delimiter-fixes.csl +0 -963
- data/resource/style/chicago-fullnote-bibliography-no-ibid.csl +0 -785
- data/resource/style/chicago-fullnote-bibliography.csl +0 -803
- data/resource/style/chicago-library-list.csl +0 -511
- data/resource/style/chicago-note-biblio-no-ibid.csl +0 -514
- data/resource/style/chicago-note-bibliography.csl +0 -530
- data/resource/style/chicago-note.csl +0 -388
- data/resource/style/chicago-quick-copy.csl +0 -685
- data/resource/style/ieee.csl +0 -299
- data/resource/style/mla-notes.csl +0 -796
- data/resource/style/mla-underline.csl +0 -175
- data/resource/style/mla-url.csl +0 -214
- data/resource/style/mla.csl +0 -394
- data/resource/style/vancouver-brackets.csl +0 -256
- data/resource/style/vancouver-superscript-bracket-only-year.csl +0 -165
- data/resource/style/vancouver-superscript.csl +0 -256
- data/resource/style/vancouver.csl +0 -256
- data/spec/citeproc/bibliography_spec.rb +0 -45
- data/spec/citeproc/citeproc_spec.rb +0 -80
- data/spec/citeproc/date_spec.rb +0 -89
- data/spec/citeproc/formatter_spec.rb +0 -101
- data/spec/citeproc/item_spec.rb +0 -71
- data/spec/citeproc/name_spec.rb +0 -30
- data/spec/citeproc/processor_spec.rb +0 -61
- data/spec/citeproc/selector_spec.rb +0 -82
- data/spec/citeproc/variable_spec.rb +0 -69
- data/spec/csl/locale_spec.rb +0 -208
- data/spec/csl/node_spec.rb +0 -25
- data/spec/csl/nodes_spec.rb +0 -145
- data/spec/csl/style_spec.rb +0 -62
- data/spec/csl/term_spec.rb +0 -56
- data/spec/fixtures/dates.yaml +0 -80
- data/spec/fixtures/names.yaml +0 -115
- data/spec/fixtures/nodes.yaml +0 -245
- data/spec/support/attributes_spec.rb +0 -39
- data/spec/support/tree_spec.rb +0 -163
@@ -1,256 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" page-range-format="minimal">
|
3
|
-
<info>
|
4
|
-
<title>Vancouver</title>
|
5
|
-
<id>http://www.zotero.org/styles/vancouver</id>
|
6
|
-
<link href="http://www.zotero.org/styles/vancouver" rel="self"/>
|
7
|
-
<author>
|
8
|
-
<name>Michael Berkowitz</name>
|
9
|
-
<email>mberkowi@gmu.edu</email>
|
10
|
-
</author>
|
11
|
-
<contributor>
|
12
|
-
<name>Sean Takats</name>
|
13
|
-
<email>stakats@gmu.edu</email>
|
14
|
-
</contributor>
|
15
|
-
<contributor>
|
16
|
-
<name>Sebastian Karcher</name>
|
17
|
-
</contributor>
|
18
|
-
<category field="medicine"/>
|
19
|
-
<category citation-format="numeric"/>
|
20
|
-
<updated>2008-09-16T00:00:00+00:00</updated>
|
21
|
-
<summary>
|
22
|
-
Vancouver style as outlined by International Committee of Medical Journal Editors Uniform Requirements for Manuscripts Submitted to Biomedical Journals: Sample References
|
23
|
-
</summary>
|
24
|
-
<link href="http://www.nlm.nih.gov/bsd/uniform_requirements.html" rel="documentation"/>
|
25
|
-
<rights>This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/</rights>
|
26
|
-
</info>
|
27
|
-
<locale xml:lang="en">
|
28
|
-
<terms>
|
29
|
-
<term name="retrieved">available</term>
|
30
|
-
<term name="section" form="short">sect.</term>
|
31
|
-
</terms>
|
32
|
-
</locale>
|
33
|
-
<locale xml:lang="de">
|
34
|
-
<terms>
|
35
|
-
<term name="retrieved">verfügbar</term>
|
36
|
-
<term name="from">unter</term>
|
37
|
-
</terms>
|
38
|
-
</locale>
|
39
|
-
<macro name="author">
|
40
|
-
<names variable="author">
|
41
|
-
<name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/>
|
42
|
-
<label form="long" prefix=", "/>
|
43
|
-
<substitute>
|
44
|
-
<names variable="editor"/>
|
45
|
-
</substitute>
|
46
|
-
</names>
|
47
|
-
</macro>
|
48
|
-
<macro name="editor">
|
49
|
-
<group delimiter=": ">
|
50
|
-
<choose>
|
51
|
-
<if type="chapter paper-conference">
|
52
|
-
<text term="in" text-case="capitalize-first"/>
|
53
|
-
</if>
|
54
|
-
</choose>
|
55
|
-
<names variable="editor" suffix=".">
|
56
|
-
<name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/>
|
57
|
-
<label form="long" prefix=", "/>
|
58
|
-
</names>
|
59
|
-
</group>
|
60
|
-
</macro>
|
61
|
-
<macro name="publisher">
|
62
|
-
<group delimiter=": " suffix=";">
|
63
|
-
<choose>
|
64
|
-
<if type="thesis">
|
65
|
-
<text variable="publisher-place" prefix="[" suffix="]"/>
|
66
|
-
</if>
|
67
|
-
<else>
|
68
|
-
<text variable="publisher-place"/>
|
69
|
-
</else>
|
70
|
-
</choose>
|
71
|
-
<text variable="publisher"/>
|
72
|
-
</group>
|
73
|
-
</macro>
|
74
|
-
<macro name="access">
|
75
|
-
<choose>
|
76
|
-
<if variable="URL">
|
77
|
-
<group delimiter=": ">
|
78
|
-
<group delimiter=" ">
|
79
|
-
<text term="retrieved" text-case="capitalize-first"/>
|
80
|
-
<text term="from"/>
|
81
|
-
</group>
|
82
|
-
<text variable="URL"/>
|
83
|
-
</group>
|
84
|
-
</if>
|
85
|
-
</choose>
|
86
|
-
</macro>
|
87
|
-
<macro name="accessed-date">
|
88
|
-
<choose>
|
89
|
-
<if variable="URL">
|
90
|
-
<group prefix="[" suffix="]" delimiter=" ">
|
91
|
-
<text term="cited" text-case="lowercase"/>
|
92
|
-
<date variable="accessed" suffix="">
|
93
|
-
<date-part name="year"/>
|
94
|
-
<date-part name="month" prefix=" " form="short" strip-periods="true"/>
|
95
|
-
<date-part name="day" prefix=" "/>
|
96
|
-
</date>
|
97
|
-
</group>
|
98
|
-
</if>
|
99
|
-
</choose>
|
100
|
-
</macro>
|
101
|
-
<macro name="container-title">
|
102
|
-
<choose>
|
103
|
-
<if type="article-journal article-magazine chapter paper-conference article-newspaper" match="any">
|
104
|
-
<group suffix="." delimiter=" ">
|
105
|
-
<text variable="container-title" form="short"/>
|
106
|
-
<choose>
|
107
|
-
<if variable="URL">
|
108
|
-
<text term="internet" prefix="[" suffix="]" text-case="capitalize-first"/>
|
109
|
-
</if>
|
110
|
-
</choose>
|
111
|
-
</group>
|
112
|
-
<text macro="edition" prefix=" "/>
|
113
|
-
</if>
|
114
|
-
<!--add event-name and event-place once they become available-->
|
115
|
-
<else-if type="bill legislation">
|
116
|
-
<group delimiter=", ">
|
117
|
-
<group delimiter=". ">
|
118
|
-
<text variable="container-title" form="short"/>
|
119
|
-
<group delimiter=" ">
|
120
|
-
<text term="section" form="short" text-case="capitalize-first"/>
|
121
|
-
<text variable="section"/>
|
122
|
-
</group>
|
123
|
-
</group>
|
124
|
-
<text variable="number"/>
|
125
|
-
</group>
|
126
|
-
</else-if>
|
127
|
-
<else>
|
128
|
-
<text variable="container-title" suffix="." form="short"/>
|
129
|
-
</else>
|
130
|
-
</choose>
|
131
|
-
</macro>
|
132
|
-
<macro name="title">
|
133
|
-
<text variable="title"/>
|
134
|
-
<choose>
|
135
|
-
<if type="article-journal article-magazine chapter paper-conference article-newspaper" match="none">
|
136
|
-
<choose>
|
137
|
-
<if variable="URL">
|
138
|
-
<text term="internet" prefix=" [" suffix="]" text-case="capitalize-first"/>
|
139
|
-
</if>
|
140
|
-
</choose>
|
141
|
-
<text macro="edition" prefix=". "/>
|
142
|
-
</if>
|
143
|
-
</choose>
|
144
|
-
<choose>
|
145
|
-
<if type="thesis">
|
146
|
-
<text variable="genre" prefix=" [" suffix="]"/>
|
147
|
-
</if>
|
148
|
-
</choose>
|
149
|
-
</macro>
|
150
|
-
<macro name="edition">
|
151
|
-
<choose>
|
152
|
-
<if is-numeric="edition">
|
153
|
-
<group delimiter=" ">
|
154
|
-
<number variable="edition" form="ordinal"/>
|
155
|
-
<text term="edition" form="short"/>
|
156
|
-
</group>
|
157
|
-
</if>
|
158
|
-
<else>
|
159
|
-
<text variable="edition" suffix="."/>
|
160
|
-
</else>
|
161
|
-
</choose>
|
162
|
-
</macro>
|
163
|
-
<macro name="date">
|
164
|
-
<choose>
|
165
|
-
<if type="article-journal article-magazine article-newspaper" match="any">
|
166
|
-
<group suffix=";" delimiter=" ">
|
167
|
-
<date variable="issued" delimiter=" ">
|
168
|
-
<date-part name="year"/>
|
169
|
-
<date-part name="month" form="short" strip-periods="true"/>
|
170
|
-
<date-part name="day"/>
|
171
|
-
</date>
|
172
|
-
<text macro="accessed-date"/>
|
173
|
-
</group>
|
174
|
-
</if>
|
175
|
-
<else-if type="bill legislation">
|
176
|
-
<group delimiter=", ">
|
177
|
-
<date variable="issued" delimiter=" ">
|
178
|
-
<date-part name="month" form="short" strip-periods="true"/>
|
179
|
-
<date-part name="day"/>
|
180
|
-
</date>
|
181
|
-
<date variable="issued">
|
182
|
-
<date-part name="year"/>
|
183
|
-
</date>
|
184
|
-
</group>
|
185
|
-
</else-if>
|
186
|
-
<else-if type="report">
|
187
|
-
<date variable="issued" delimiter=" ">
|
188
|
-
<date-part name="year"/>
|
189
|
-
<date-part name="month" form="short" strip-periods="true"/>
|
190
|
-
</date>
|
191
|
-
</else-if>
|
192
|
-
<else>
|
193
|
-
<group suffix=".">
|
194
|
-
<date variable="issued">
|
195
|
-
<date-part name="year"/>
|
196
|
-
</date>
|
197
|
-
<text macro="accessed-date" prefix=" "/>
|
198
|
-
</group>
|
199
|
-
</else>
|
200
|
-
</choose>
|
201
|
-
</macro>
|
202
|
-
<macro name="pages">
|
203
|
-
<choose>
|
204
|
-
<if type="article-journal article-magazine article-newspaper" match="any">
|
205
|
-
<text variable="page" prefix=":"/>
|
206
|
-
</if>
|
207
|
-
<else>
|
208
|
-
<text variable="page" prefix=" p. "/>
|
209
|
-
</else>
|
210
|
-
</choose>
|
211
|
-
</macro>
|
212
|
-
<macro name="journal-location">
|
213
|
-
<choose>
|
214
|
-
<if type="article-journal article-magazine" match="any">
|
215
|
-
<text variable="volume"/>
|
216
|
-
<text variable="issue" prefix="(" suffix=")"/>
|
217
|
-
</if>
|
218
|
-
</choose>
|
219
|
-
</macro>
|
220
|
-
<macro name="report-details">
|
221
|
-
<choose>
|
222
|
-
<if type="report">
|
223
|
-
<text variable="number" prefix="Report No.: "/>
|
224
|
-
</if>
|
225
|
-
</choose>
|
226
|
-
</macro>
|
227
|
-
<citation collapse="citation-number">
|
228
|
-
<sort>
|
229
|
-
<key variable="citation-number"/>
|
230
|
-
</sort>
|
231
|
-
<layout prefix="(" suffix=")" delimiter=",">
|
232
|
-
<text variable="citation-number"/>
|
233
|
-
</layout>
|
234
|
-
</citation>
|
235
|
-
<bibliography et-al-min="7" et-al-use-first="6" second-field-align="flush">
|
236
|
-
<layout>
|
237
|
-
<text variable="citation-number" suffix=". "/>
|
238
|
-
<group delimiter=". " suffix=". ">
|
239
|
-
<text macro="author"/>
|
240
|
-
<text macro="title"/>
|
241
|
-
</group>
|
242
|
-
<group delimiter=" " suffix=". ">
|
243
|
-
<text macro="editor"/>
|
244
|
-
<text macro="container-title"/>
|
245
|
-
<text macro="publisher"/>
|
246
|
-
<group>
|
247
|
-
<text macro="date"/>
|
248
|
-
<text macro="journal-location"/>
|
249
|
-
<text macro="pages"/>
|
250
|
-
</group>
|
251
|
-
</group>
|
252
|
-
<text macro="report-details" suffix=". "/>
|
253
|
-
<text macro="access"/>
|
254
|
-
</layout>
|
255
|
-
</bibliography>
|
256
|
-
</style>
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module CiteProc
|
2
|
-
describe Bibliography do
|
3
|
-
|
4
|
-
let(:json) {'[{"test":"test","bibliography-errors":[]},["1","2"]]'}
|
5
|
-
|
6
|
-
describe '#new' do
|
7
|
-
it { should_not be_nil }
|
8
|
-
|
9
|
-
it 'accepts a JSON string' do
|
10
|
-
Bibliography.new(json).should_not be_empty
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'accepts a data array' do
|
14
|
-
Bibliography.new([1,2,3]).data.should == [1,2,3]
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'accepts an options hash' do
|
18
|
-
Bibliography.new('test'=>'test').options['test'].should == 'test'
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'accepts an options hash with errors' do
|
22
|
-
Bibliography.new('bibliography-errors'=>[1,2,3]).errors.should == [1,2,3]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe '#to_json' do
|
27
|
-
it 'returns valid JSON when empty' do
|
28
|
-
JSON.parse(Bibliography.new.to_json).should_not be_nil
|
29
|
-
end
|
30
|
-
it 'returns valid JSON with data' do
|
31
|
-
JSON.parse(Bibliography.new([1,2,3]).to_json).should_not be_nil
|
32
|
-
end
|
33
|
-
it 'returns valid JSON with options' do
|
34
|
-
JSON.parse(Bibliography.new({'test'=>'test'}).to_json).should_not be_nil
|
35
|
-
end
|
36
|
-
it 'returns valid JSON with options and data' do
|
37
|
-
JSON.parse(Bibliography.new([{'test'=>'test'}, [1,2]]).to_json).should_not be_nil
|
38
|
-
end
|
39
|
-
it 'supports round-trips' do
|
40
|
-
Bibliography.new(json).to_json.should == json
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# This generates RSpec tests from the JSON test cases of the citeproc-tests
|
3
|
-
# suite.
|
4
|
-
#
|
5
|
-
|
6
|
-
|
7
|
-
#
|
8
|
-
# Filter applied to each test to decide whether we should run it. Use this
|
9
|
-
# to stay sane while the Processor is not feature-complete!
|
10
|
-
#
|
11
|
-
def filter(file, fixture)
|
12
|
-
# return ['affix_InterveningEmpty.json'].include?(File.basename(file))
|
13
|
-
# File.basename(file) =~ /bugreports_greek/i
|
14
|
-
# File.basename(file) =~ /sort_stripmark/i
|
15
|
-
# return File.basename(file) =~ /^date_rawparsesimpledate/i
|
16
|
-
true
|
17
|
-
end
|
18
|
-
|
19
|
-
module CiteProc
|
20
|
-
|
21
|
-
describe 'citeproc' do
|
22
|
-
|
23
|
-
let(:proc) { Processor.new }
|
24
|
-
|
25
|
-
Test::Fixtures::Processor.each_pair do |file, fixture|
|
26
|
-
|
27
|
-
tokens = File.basename(file).split(/_|\.json/)
|
28
|
-
|
29
|
-
describe tokens[0].downcase do
|
30
|
-
|
31
|
-
name = tokens[1].gsub(/([[:lower:]])([[:upper:]])/, '\1 \2').downcase
|
32
|
-
|
33
|
-
it name do
|
34
|
-
pending if tokens[0] =~ /^(position|disambiguate|integration|flipflop|collapse|parallel)/
|
35
|
-
|
36
|
-
proc.style = fixture['csl']
|
37
|
-
proc.import(fixture['input'])
|
38
|
-
proc.format = :html
|
39
|
-
|
40
|
-
if tokens[1] =~ /LocalizedDateFormats-([\w-]+)/
|
41
|
-
proc.locale = $1
|
42
|
-
end
|
43
|
-
|
44
|
-
proc.add_abbreviations(fixture['abbreviations']) if fixture['abbreviations']
|
45
|
-
|
46
|
-
case fixture['mode']
|
47
|
-
|
48
|
-
when 'citation'
|
49
|
-
# citations => process_citation_cluster
|
50
|
-
# citation_items || :all => make_citation_cluster
|
51
|
-
data = fixture['citation_items']
|
52
|
-
|
53
|
-
unless data
|
54
|
-
result = proc.cite((fixture['bibentries'] && fixture['bibentries'].last) || :all).map { |d| d[1] }.join
|
55
|
-
else
|
56
|
-
result = data.map { |d| proc.cite(d).map { |c| c[1] }.join }.join("\n")
|
57
|
-
end
|
58
|
-
|
59
|
-
when 'bibliography'
|
60
|
-
result = proc.bibliography(fixture['bibsection'] || :all).to_s
|
61
|
-
|
62
|
-
when 'bibliography-header'
|
63
|
-
pending('not yet implemented')
|
64
|
-
|
65
|
-
when 'bibliography-nosort'
|
66
|
-
pending('not yet implemented')
|
67
|
-
|
68
|
-
else
|
69
|
-
CiteProc.log.warn "unkown processor mode: #{fixture['mode']}"
|
70
|
-
pending('not yet implemented')
|
71
|
-
end
|
72
|
-
|
73
|
-
result.should == fixture['result']
|
74
|
-
|
75
|
-
end
|
76
|
-
end if filter(file, fixture)
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
data/spec/citeproc/date_spec.rb
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module CiteProc
|
4
|
-
|
5
|
-
describe Date do
|
6
|
-
|
7
|
-
describe '#new' do
|
8
|
-
it { should_not be_nil }
|
9
|
-
|
10
|
-
it 'accepts date-parts containing a single year' do
|
11
|
-
Date.new('date-parts' => [[1998]]).year.should == 1998
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '.create' do
|
17
|
-
it 'accepts parameters and returns a new instance' do
|
18
|
-
Date.create('date-parts' => [[2001, 1]]).year.should == 2001
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '#sort' do
|
23
|
-
|
24
|
-
let(:ad2k) { Date.create('date-parts' => [[2000]])}
|
25
|
-
let(:may) { Date.create('date-parts' => [[2000, 5]])}
|
26
|
-
let(:first_of_may) { Date.create('date-parts' => [[2000, 5, 1]])}
|
27
|
-
|
28
|
-
let(:bc100) { Date.create('date-parts' => [[-100]]) }
|
29
|
-
let(:bc50) { Date.create('date-parts' => [[-50]]) }
|
30
|
-
let(:ad50) { Date.create('date-parts' => [[50]]) }
|
31
|
-
let(:ad100) { Date.create('date-parts' => [[100]]) }
|
32
|
-
|
33
|
-
it 'dates with more date-parts will come after those with fewer parts' do
|
34
|
-
(ad2k < may && may < first_of_may).should be true
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'negative years are sorted inversely' do
|
38
|
-
[ad50, bc100, bc50, ad100].sort.map(&:year).should == [-100, -50, 50, 100]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
Test::Fixtures::Dates.keys.each do |feature|
|
43
|
-
describe feature do
|
44
|
-
Test::Fixtures::Dates[feature].each do |example|
|
45
|
-
|
46
|
-
it example['it'] do
|
47
|
-
dates = example['dates'].map { |date| Date.new(date) }
|
48
|
-
expected = example['expected']
|
49
|
-
options = example['options']
|
50
|
-
|
51
|
-
result = case feature
|
52
|
-
when 'display'
|
53
|
-
dates.map { |date| date.display(options) }
|
54
|
-
when 'json-api'
|
55
|
-
dates.map(&:to_json)
|
56
|
-
end
|
57
|
-
|
58
|
-
result.should == expected
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe 'literal dates' do
|
66
|
-
|
67
|
-
it 'is not literal by default' do
|
68
|
-
Date.new.should_not be_literal
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'is literal if it contains only a literal field' do
|
72
|
-
Date.create(:literal => 'foo').should be_literal
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'is literal if it contains a literal field' do
|
76
|
-
Date.create('date-parts' => [[2000]], :literal => 'foo').should be_literal
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe 'uncertain dates' do
|
81
|
-
it 'are uncertain' do
|
82
|
-
Date.new({ 'date-parts' => [[-225]], 'circa' => '1' }).should be_uncertain
|
83
|
-
Date.new { |d| d.parts = [[-225]]; d.circa = true }.should be_uncertain
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|