citeproc-ruby 0.0.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.document +4 -0
  4. data/.gitignore +10 -0
  5. data/.rspec +3 -0
  6. data/.simplecov +4 -0
  7. data/.travis.yml +17 -0
  8. data/.yardopts +2 -0
  9. data/AGPL +662 -0
  10. data/BSDL +29 -0
  11. data/Gemfile +42 -0
  12. data/Guardfile +14 -0
  13. data/README.md +32 -76
  14. data/Rakefile +60 -0
  15. data/citeproc-ruby.gemspec +46 -0
  16. data/cucumber.yml +1 -0
  17. data/features/bibliography.feature +25 -0
  18. data/features/name_options.feature +37 -0
  19. data/features/names.feature +192 -0
  20. data/features/renderer.feature +74 -0
  21. data/features/sort.feature +50 -0
  22. data/features/step_definitions/renderer.rb +80 -0
  23. data/features/support/env.rb +33 -0
  24. data/features/support/hooks.rb +10 -0
  25. data/lib/citeproc/ruby.rb +32 -0
  26. data/lib/citeproc/ruby/engine.rb +122 -0
  27. data/lib/citeproc/ruby/format.rb +303 -0
  28. data/lib/citeproc/ruby/formats/default.rb +25 -0
  29. data/lib/citeproc/ruby/formats/html.rb +221 -0
  30. data/lib/citeproc/ruby/renderer.rb +140 -0
  31. data/lib/citeproc/ruby/renderer/choose.rb +106 -0
  32. data/lib/citeproc/ruby/renderer/date.rb +90 -0
  33. data/lib/citeproc/ruby/renderer/format.rb +129 -0
  34. data/lib/citeproc/ruby/renderer/group.rb +34 -0
  35. data/lib/citeproc/ruby/renderer/history.rb +40 -0
  36. data/lib/citeproc/ruby/renderer/label.rb +66 -0
  37. data/lib/citeproc/ruby/renderer/layout.rb +20 -0
  38. data/lib/citeproc/ruby/renderer/locale.rb +26 -0
  39. data/lib/citeproc/ruby/renderer/macro.rb +20 -0
  40. data/lib/citeproc/ruby/renderer/names.rb +401 -0
  41. data/lib/citeproc/ruby/renderer/number.rb +41 -0
  42. data/lib/citeproc/ruby/renderer/observer.rb +44 -0
  43. data/lib/citeproc/ruby/renderer/state.rb +96 -0
  44. data/lib/citeproc/ruby/renderer/text.rb +62 -0
  45. data/lib/citeproc/ruby/sort.rb +82 -0
  46. data/lib/citeproc/ruby/version.rb +5 -0
  47. data/spec/citeproc/ruby/engine_spec.rb +94 -0
  48. data/spec/citeproc/ruby/formats/default_spec.rb +159 -0
  49. data/spec/citeproc/ruby/formats/html_spec.rb +162 -0
  50. data/spec/citeproc/ruby/renderer/choose_spec.rb +293 -0
  51. data/spec/citeproc/ruby/renderer/date_spec.rb +173 -0
  52. data/spec/citeproc/ruby/renderer/group_spec.rb +88 -0
  53. data/spec/citeproc/ruby/renderer/history_spec.rb +38 -0
  54. data/spec/citeproc/ruby/renderer/label_spec.rb +225 -0
  55. data/spec/citeproc/ruby/renderer/layout_spec.rb +41 -0
  56. data/spec/citeproc/ruby/renderer/macro_spec.rb +31 -0
  57. data/spec/citeproc/ruby/renderer/names_spec.rb +396 -0
  58. data/spec/citeproc/ruby/renderer/number_spec.rb +120 -0
  59. data/spec/citeproc/ruby/renderer/text_spec.rb +120 -0
  60. data/spec/citeproc/ruby/renderer_spec.rb +65 -0
  61. data/spec/fixtures/items.rb +80 -0
  62. data/{resource/locale → spec/fixtures/locales}/locales-en-US.xml +2 -11
  63. data/{resource/locale → spec/fixtures/locales}/locales-fr-FR.xml +77 -66
  64. data/{resource/style → spec/fixtures/styles}/apa.csl +5 -5
  65. data/spec/spec_helper.rb +67 -14
  66. metadata +121 -211
  67. data/lib/citeproc.rb +0 -100
  68. data/lib/citeproc/bibliography.rb +0 -57
  69. data/lib/citeproc/data.rb +0 -149
  70. data/lib/citeproc/date.rb +0 -133
  71. data/lib/citeproc/formatter.rb +0 -38
  72. data/lib/citeproc/item.rb +0 -53
  73. data/lib/citeproc/name.rb +0 -284
  74. data/lib/citeproc/processor.rb +0 -166
  75. data/lib/citeproc/selector.rb +0 -61
  76. data/lib/citeproc/variable.rb +0 -82
  77. data/lib/citeproc/version.rb +0 -3
  78. data/lib/csl/locale.rb +0 -223
  79. data/lib/csl/node.rb +0 -72
  80. data/lib/csl/nodes.rb +0 -1418
  81. data/lib/csl/renderer.rb +0 -88
  82. data/lib/csl/sort.rb +0 -61
  83. data/lib/csl/style.rb +0 -110
  84. data/lib/csl/term.rb +0 -124
  85. data/lib/extensions/core.rb +0 -43
  86. data/lib/plugins/filters/bibtex.rb +0 -12
  87. data/lib/plugins/formats/default.rb +0 -134
  88. data/lib/plugins/formats/html.rb +0 -67
  89. data/lib/support/attributes.rb +0 -99
  90. data/lib/support/compatibility.rb +0 -83
  91. data/lib/support/tree.rb +0 -80
  92. data/resource/locale/locales-af-ZA.xml +0 -305
  93. data/resource/locale/locales-ar-AR.xml +0 -306
  94. data/resource/locale/locales-bg-BG.xml +0 -305
  95. data/resource/locale/locales-ca-AD.xml +0 -305
  96. data/resource/locale/locales-cs-CZ.xml +0 -305
  97. data/resource/locale/locales-da-DK.xml +0 -305
  98. data/resource/locale/locales-de-AT.xml +0 -304
  99. data/resource/locale/locales-de-CH.xml +0 -304
  100. data/resource/locale/locales-de-DE.xml +0 -332
  101. data/resource/locale/locales-el-GR.xml +0 -305
  102. data/resource/locale/locales-en-GB.xml +0 -304
  103. data/resource/locale/locales-es-ES.xml +0 -305
  104. data/resource/locale/locales-et-EE.xml +0 -304
  105. data/resource/locale/locales-eu.xml +0 -305
  106. data/resource/locale/locales-fa-IR.xml +0 -304
  107. data/resource/locale/locales-fi-FI.xml +0 -304
  108. data/resource/locale/locales-fr-CA.xml +0 -306
  109. data/resource/locale/locales-he-IL.xml +0 -304
  110. data/resource/locale/locales-hu-HU.xml +0 -305
  111. data/resource/locale/locales-is-IS.xml +0 -304
  112. data/resource/locale/locales-it-IT.xml +0 -305
  113. data/resource/locale/locales-ja-JP.xml +0 -305
  114. data/resource/locale/locales-kh-KH.xml +0 -303
  115. data/resource/locale/locales-km-KH.xml +0 -304
  116. data/resource/locale/locales-ko-KR.xml +0 -305
  117. data/resource/locale/locales-mn-MN.xml +0 -306
  118. data/resource/locale/locales-nb-NO.xml +0 -304
  119. data/resource/locale/locales-nl-NL.xml +0 -304
  120. data/resource/locale/locales-nn-NO.xml +0 -304
  121. data/resource/locale/locales-pl-PL.xml +0 -305
  122. data/resource/locale/locales-pt-BR.xml +0 -304
  123. data/resource/locale/locales-pt-PT.xml +0 -305
  124. data/resource/locale/locales-ro-RO.xml +0 -305
  125. data/resource/locale/locales-ru-RU.xml +0 -306
  126. data/resource/locale/locales-sk-SK.xml +0 -304
  127. data/resource/locale/locales-sl-SI.xml +0 -305
  128. data/resource/locale/locales-sr-RS.xml +0 -305
  129. data/resource/locale/locales-sv-SE.xml +0 -305
  130. data/resource/locale/locales-th-TH.xml +0 -304
  131. data/resource/locale/locales-tr-TR.xml +0 -305
  132. data/resource/locale/locales-uk-UA.xml +0 -306
  133. data/resource/locale/locales-vi-VN.xml +0 -305
  134. data/resource/locale/locales-zh-CN.xml +0 -304
  135. data/resource/locale/locales-zh-TW.xml +0 -305
  136. data/resource/schema/csl-categories.rnc +0 -39
  137. data/resource/schema/csl-data.rnc +0 -98
  138. data/resource/schema/csl-terms.rnc +0 -106
  139. data/resource/schema/csl-types.rnc +0 -39
  140. data/resource/schema/csl-variables.rnc +0 -182
  141. data/resource/schema/csl.rnc +0 -941
  142. data/resource/style/bibtex.csl +0 -177
  143. data/resource/style/chicago-annotated-bibliography.csl +0 -513
  144. data/resource/style/chicago-author-date-basque.csl +0 -707
  145. data/resource/style/chicago-author-date-de.csl +0 -394
  146. data/resource/style/chicago-author-date-listing.csl +0 -434
  147. data/resource/style/chicago-author-date.csl +0 -425
  148. data/resource/style/chicago-dated-note-biblio-no-ibid.csl +0 -472
  149. data/resource/style/chicago-fullnote-bibliography-bb.csl +0 -928
  150. data/resource/style/chicago-fullnote-bibliography-delimiter-fixes.csl +0 -972
  151. data/resource/style/chicago-fullnote-bibliography-no-ibid-delimiter-fixes.csl +0 -963
  152. data/resource/style/chicago-fullnote-bibliography-no-ibid.csl +0 -785
  153. data/resource/style/chicago-fullnote-bibliography.csl +0 -803
  154. data/resource/style/chicago-library-list.csl +0 -511
  155. data/resource/style/chicago-note-biblio-no-ibid.csl +0 -514
  156. data/resource/style/chicago-note-bibliography.csl +0 -530
  157. data/resource/style/chicago-note.csl +0 -388
  158. data/resource/style/chicago-quick-copy.csl +0 -685
  159. data/resource/style/ieee.csl +0 -299
  160. data/resource/style/mla-notes.csl +0 -796
  161. data/resource/style/mla-underline.csl +0 -175
  162. data/resource/style/mla-url.csl +0 -214
  163. data/resource/style/mla.csl +0 -394
  164. data/resource/style/vancouver-brackets.csl +0 -256
  165. data/resource/style/vancouver-superscript-bracket-only-year.csl +0 -165
  166. data/resource/style/vancouver-superscript.csl +0 -256
  167. data/resource/style/vancouver.csl +0 -256
  168. data/spec/citeproc/bibliography_spec.rb +0 -45
  169. data/spec/citeproc/citeproc_spec.rb +0 -80
  170. data/spec/citeproc/date_spec.rb +0 -89
  171. data/spec/citeproc/formatter_spec.rb +0 -101
  172. data/spec/citeproc/item_spec.rb +0 -71
  173. data/spec/citeproc/name_spec.rb +0 -30
  174. data/spec/citeproc/processor_spec.rb +0 -61
  175. data/spec/citeproc/selector_spec.rb +0 -82
  176. data/spec/citeproc/variable_spec.rb +0 -69
  177. data/spec/csl/locale_spec.rb +0 -208
  178. data/spec/csl/node_spec.rb +0 -25
  179. data/spec/csl/nodes_spec.rb +0 -145
  180. data/spec/csl/style_spec.rb +0 -62
  181. data/spec/csl/term_spec.rb +0 -56
  182. data/spec/fixtures/dates.yaml +0 -80
  183. data/spec/fixtures/names.yaml +0 -115
  184. data/spec/fixtures/nodes.yaml +0 -245
  185. data/spec/support/attributes_spec.rb +0 -39
  186. data/spec/support/tree_spec.rb +0 -163
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ module CiteProc
4
+ module Ruby
5
+
6
+ describe "Renderer#render_number" do
7
+ let(:renderer) { Renderer.new }
8
+
9
+ let(:node) { CSL::Style::Number.new }
10
+
11
+ let(:item) {
12
+ i = CiteProc::CitationItem.new(:id => 'ID-1')
13
+ i.data = CiteProc::Item.new(:id => 'ID-1')
14
+ i
15
+ }
16
+
17
+ describe 'given an empty node' do
18
+ it 'returns an empty string for an empty item' do
19
+ renderer.render_number(item, node).should == ''
20
+ end
21
+
22
+ it 'returns an empty string for an item with variables' do
23
+ item.data.edition = 'foo'
24
+ renderer.render_number(item, node).should == ''
25
+ end
26
+ end
27
+
28
+ describe 'given a node with a variable' do
29
+ before(:each) { node[:variable] = :edition }
30
+
31
+ it 'returns an empty string for an empty item' do
32
+ renderer.render_number(item, node).should == ''
33
+ end
34
+
35
+ describe 'and an item with a corresponding text value' do
36
+ before(:each) { item.data.edition = 'foo,bar' }
37
+
38
+ it 'returns the text value as is' do
39
+ renderer.render_number(item, node).should == 'foo,bar'
40
+ end
41
+ end
42
+
43
+ describe 'and an item with a simple number' do
44
+ before(:each) { item.data.edition = '42' }
45
+
46
+ it 'returns the number as a string' do
47
+ renderer.render_number(item, node).should == '42'
48
+ end
49
+
50
+ describe 'when the node is set to roman' do
51
+ before(:each) { node[:form] = :roman }
52
+
53
+ it 'returns the number romanized' do
54
+ renderer.render_number(item, node).should == 'xlii'
55
+ end
56
+ end
57
+
58
+ describe 'when the node is set to ordinal' do
59
+ before(:each) { node[:form] = :ordinal }
60
+
61
+ it 'returns the number ordinalized' do
62
+ renderer.render_number(item, node).should == '42nd'
63
+ end
64
+ end
65
+
66
+ end
67
+
68
+ describe 'and an item with a list of numbers' do
69
+ before(:each) { item.data.edition = '42, 43 , 44 ,45,46 , 47, 48' }
70
+
71
+ it 'returns the numbers as a normalized list' do
72
+ renderer.render_number(item, node).should == '42, 43, 44, 45, 46, 47, 48'
73
+ end
74
+
75
+ describe 'when the node is set to roman' do
76
+ before(:each) { node[:form] = :roman }
77
+
78
+ it 'returns the romanized list' do
79
+ renderer.render_number(item, node).should == 'xlii, xliii, xliv, xlv, xlvi, xlvii, xlviii'
80
+ end
81
+ end
82
+
83
+ describe 'when the node is set to ordinal' do
84
+ before(:each) { node[:form] = :ordinal }
85
+
86
+ it 'returns the ordinalized list' do
87
+ renderer.render_number(item, node).should == '42nd, 43rd, 44th, 45th, 46th, 47th, 48th'
88
+ end
89
+ end
90
+ end
91
+
92
+ describe 'and an item with a list of ranges' do
93
+ before(:each) { item.data.edition = '42-44, 46 -51 & 52 - 65& 66- 68' }
94
+
95
+ it 'returns the numbers as a normalized list' do
96
+ renderer.render_number(item, node).should == '42-44, 46-51 & 52-65 & 66-68'
97
+ end
98
+ end
99
+
100
+ describe 'and an item with complex numeric values' do
101
+ before(:each) { item.data.edition = 'A42 - B44, 46-51 & 52-65ff' }
102
+
103
+ it 'returns the numbers as a normalized list' do
104
+ renderer.render_number(item, node).should == 'A42-B44, 46-51 & 52-65ff'
105
+ end
106
+
107
+ describe 'when the node is set to roman' do
108
+ before(:each) { node[:form] = :roman }
109
+
110
+ it 'returns the list with only the simple numbers romanized' do
111
+ renderer.render_number(item, node).should == 'A42-B44, xlvi-li & lii-65ff'
112
+ end
113
+ end
114
+ end
115
+
116
+ end
117
+ end
118
+
119
+ end
120
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ module CiteProc
4
+ module Ruby
5
+
6
+ describe 'Renderer#render_text' do
7
+ let(:renderer) { Renderer.new }
8
+
9
+ let(:item) {
10
+ i = CiteProc::CitationItem.new(:id => 'ID-1')
11
+ i.data = CiteProc::Item.new(:id => 'ID-1')
12
+ i
13
+ }
14
+
15
+ describe 'given an empty text node' do
16
+ let(:node) { CSL::Style::Text.new }
17
+
18
+ it 'returns an empty string for an empty item' do
19
+ renderer.render_text(item, node).should == ''
20
+ end
21
+
22
+ it 'returns an empty string for an item with variables' do
23
+ item.data.title = 'foo'
24
+ renderer.render_text(item, node).should == ''
25
+ end
26
+ end
27
+
28
+ describe 'given a text node with a value' do
29
+ let(:node) { CSL::Style::Text.new(:value => 'foobar') }
30
+
31
+ it 'returns the value for an empty item' do
32
+ renderer.render_text(item, node).should == 'foobar'
33
+ end
34
+
35
+ it 'returns the value for an item with variables' do
36
+ item.data.title = 'foo'
37
+ renderer.render_text(item, node).should == 'foobar'
38
+ end
39
+ end
40
+
41
+ describe 'given a text node with a variable' do
42
+ let(:node) { CSL::Style::Text.new(:variable => 'title') }
43
+
44
+ it 'returns an empty strong for an empty item' do
45
+ renderer.render_text(item, node).should == ''
46
+ end
47
+
48
+ it 'returns an empty strong for an item with no matching variable' do
49
+ item.data.publisher = 'the full title'
50
+ renderer.render_text(item, node).should == ''
51
+ end
52
+
53
+ it "returns the variable's value for an item with a matching variable" do
54
+ item.data.title = 'the full title'
55
+ renderer.render_text(item, node).should == 'the full title'
56
+ end
57
+
58
+ describe 'when the form attribute is set to :short' do
59
+ before(:each) {
60
+ item.data.title = 'the full title'
61
+ node[:form] = :short
62
+ }
63
+
64
+ it "prefers the short version if available" do
65
+ item.data.title_short = 'the short title'
66
+ renderer.render_text(item, node).should == 'the short title'
67
+ end
68
+
69
+ it "falls back to the variable if unavailable" do
70
+ renderer.render_text(item, node).should == 'the full title'
71
+ end
72
+ end
73
+ end
74
+
75
+ describe 'given a text node with a variable' do
76
+ let(:node) { CSL::Style::Text.new(:term => 'anonymous') }
77
+
78
+ it "returns the term's long form by default" do
79
+ renderer.render_text(item, node).should == 'anonymous'
80
+ end
81
+
82
+ describe 'when the form attribute is set to :short' do
83
+ before(:each) { node[:form] = 'short' }
84
+
85
+ it "returns the term's short form by default" do
86
+ renderer.render_text(item, node).should == 'anon.'
87
+ end
88
+
89
+ it 'falls back to the long version if there is no short version' do
90
+ node[:term] = 'et-al'
91
+ renderer.render_text(item, node).should == 'et al.'
92
+ end
93
+ end
94
+ end
95
+
96
+ describe 'given a text node with a macro reference' do
97
+ let(:node) { CSL::Style::Text.new(:macro => 'foo') }
98
+
99
+ let(:macro) do
100
+ CSL::Style::Macro.new(:name => 'foo') do |m|
101
+ m << CSL::Style::Text.new(:value => 'foobar')
102
+ end
103
+ end
104
+
105
+ it 'renders the macro' do
106
+ node.stub(:macro).and_return(macro)
107
+ renderer.render(item, node).should == 'foobar'
108
+ end
109
+
110
+ it 'applies formats to the result' do
111
+ node.stub(:macro).and_return(macro)
112
+ node[:prefix] = '('
113
+ node[:suffix] = ')'
114
+ renderer.render(item, node).should == '(foobar)'
115
+ end
116
+ end
117
+ end
118
+
119
+ end
120
+ end
@@ -0,0 +1,65 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'spec_helper'
4
+
5
+ module CiteProc
6
+ module Ruby
7
+
8
+ describe Renderer do
9
+ let(:renderer) { Renderer.new }
10
+
11
+ describe '#format_page_range' do
12
+ it 'supports "minimal" format' do
13
+ renderer.format_page_range('42-45', 'minimal').should == '42–5'
14
+ renderer.format_page_range('321-328', 'minimal').should == '321–8'
15
+ renderer.format_page_range('2787-2816', 'minimal').should == '2787–816'
16
+ renderer.format_page_range('8-45', 'minimal').should == '8–45'
17
+
18
+ renderer.format_page_range('42-5', 'minimal').should == '42–5'
19
+ renderer.format_page_range('321-28', 'minimal').should == '321–8'
20
+ renderer.format_page_range('321-8', 'minimal').should == '321–8'
21
+ renderer.format_page_range('2787-816', 'minimal').should == '2787–816'
22
+ end
23
+
24
+ it 'supports "minimal-two" format' do
25
+ renderer.format_page_range('42-45', 'minimal-two').should == '42–45'
26
+ renderer.format_page_range('321-328', 'minimal-two').should == '321–28'
27
+ renderer.format_page_range('2787-2816', 'minimal-two').should == '2787–816'
28
+ renderer.format_page_range('2-5', 'minimal-two').should == '2–5'
29
+ renderer.format_page_range('2-402', 'minimal-two').should == '2–402'
30
+
31
+ renderer.format_page_range('42-5', 'minimal-two').should == '42–45'
32
+ renderer.format_page_range('321-28', 'minimal-two').should == '321–28'
33
+ renderer.format_page_range('321-8', 'minimal-two').should == '321–28'
34
+ renderer.format_page_range('2787-816', 'minimal-two').should == '2787–816'
35
+ end
36
+
37
+ it 'supports "expanded" format' do
38
+ renderer.format_page_range('42-45', 'expanded').should == '42–45'
39
+ renderer.format_page_range('321-328', 'expanded').should == '321–328'
40
+ renderer.format_page_range('2787-2816', 'expanded').should == '2787–2816'
41
+ renderer.format_page_range('2-5', 'expanded').should == '2–5'
42
+ renderer.format_page_range('2-402', 'expanded').should == '2–402'
43
+
44
+ renderer.format_page_range('42-5', 'expanded').should == '42–45'
45
+ renderer.format_page_range('321 - 28', 'expanded').should == '321–328'
46
+ renderer.format_page_range('321 -8', 'expanded').should == '321–328'
47
+ renderer.format_page_range('2787- 816', 'expanded').should == '2787–2816'
48
+ end
49
+
50
+ it 'supports "chicago" format' do
51
+ renderer.format_page_range('3-10; 71-72', 'chicago').should == '3–10; 71–72'
52
+ renderer.format_page_range('100-104; 600-613; 1100-23', 'chicago').should == '100–104; 600–613; 1100–1123'
53
+ renderer.format_page_range('107-08; 505-517; 1002-006', 'chicago').should == '107–8; 505–17; 1002–6'
54
+ renderer.format_page_range('321-325; 415-532; 11564-11568; 13792-803', 'chicago').should == '321–25; 415–532; 11564–68; 13792–803'
55
+ renderer.format_page_range('1496-504; 2787-2816', 'chicago').should == '1496–1504; 2787–2816'
56
+ end
57
+
58
+ it 'formats multiple page ranges' do
59
+ renderer.format_page_range('42-45 and 57; 81-3 & 123-4', 'minimal-two').should == '42–45 and 57; 81–83 & 123–24'
60
+ end
61
+ end
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,80 @@
1
+ # coding: utf-8
2
+
3
+ module Fixtures
4
+
5
+ module_function
6
+
7
+ def people(name)
8
+ DB.people[name.to_sym].dup
9
+ end
10
+
11
+ def items(name)
12
+ item = CiteProc::CitationItem.new(:id => name)
13
+ item.data = DB.items[name.to_sym].dup
14
+ item
15
+ end
16
+
17
+ class DB
18
+ class << self
19
+ attr_reader :people, :items
20
+ end
21
+
22
+ @people = {
23
+ :poe => CiteProc::Names.new(:family => 'Poe', :given => 'Edgar Allen'),
24
+
25
+ :plato => CiteProc::Names.new(:given => 'Plato'),
26
+
27
+ :japanese => CiteProc::Names.new(:family => '穂積', :given => '陳重'),
28
+
29
+ :humboldt => CiteProc::Names.new(:given => 'Alexander',
30
+ :dropping_particle => 'von', :family => 'Humboldt'),
31
+
32
+ :la_fontaine => CiteProc::Names.new(:family => 'Fontaine', :given => 'Jean',
33
+ :particle => 'La', :dropping_particle => 'de'),
34
+
35
+ :van_gogh => CiteProc::Names.new(:family => 'Gogh',
36
+ :given => 'Vincent', :particle => 'van'),
37
+
38
+ :derrida => CiteProc::Names.new(:given => 'Jacques', :family => 'Derrida')
39
+ }
40
+
41
+ @items = {
42
+ :knuth1968 => CiteProc::Item.new(
43
+ :id => 'knuth1968',
44
+ :type => 'book',
45
+ :title => 'The art of computer programming',
46
+ :author => 'Donald Knuth',
47
+ :publisher => 'Addison-Wesley',
48
+ :volume => 1,
49
+ :issued => 1968,
50
+ :'publisher-place' => 'Boston'
51
+ ),
52
+
53
+ :grammatology => CiteProc::Item.new(
54
+ :id => 'grammatology',
55
+ :type => 'book',
56
+ :title => 'Of Grammatology',
57
+ :author => @people[:derrida],
58
+ :edition => 'corrected ed',
59
+ :issued => 1976,
60
+ :publisher => 'Johns Hopkins University Press',
61
+ :'publisher-place' => 'Baltimore'
62
+ ),
63
+
64
+ :difference => CiteProc::Item.new(
65
+ :id => 'difference',
66
+ :type => 'book',
67
+ :title => 'L’écriture et la différence',
68
+ :author => @people[:derrida],
69
+ :issued => 1967,
70
+ :edition => 1,
71
+ :pages => 446,
72
+ :language => 'fr',
73
+ :publisher => 'Éditions du Seuil',
74
+ :'publisher-place' => 'Paris'
75
+ )
76
+
77
+ }
78
+ end
79
+
80
+ end
@@ -61,19 +61,10 @@
61
61
  <term name="close-inner-quote">’</term>
62
62
 
63
63
  <!-- ORDINALS -->
64
- <term name="ordinal-00">th</term>
65
64
  <term name="ordinal-01">st</term>
66
65
  <term name="ordinal-02">nd</term>
67
66
  <term name="ordinal-03">rd</term>
68
67
  <term name="ordinal-04">th</term>
69
- <term name="ordinal-05">th</term>
70
- <term name="ordinal-06">th</term>
71
- <term name="ordinal-07">th</term>
72
- <term name="ordinal-08">th</term>
73
- <term name="ordinal-09">th</term>
74
- <term name="ordinal-11">th</term>
75
- <term name="ordinal-12">th</term>
76
- <term name="ordinal-13">th</term>
77
68
 
78
69
  <!-- LONG ORDINALS -->
79
70
  <term name="long-ordinal-01">first</term>
@@ -219,8 +210,8 @@
219
210
 
220
211
  <!-- LONG ROLE FORMS -->
221
212
  <term name="author">
222
- <single/>
223
- <multiple/>
213
+ <single>author</single>
214
+ <multiple>authors</multiple>
224
215
  </term>
225
216
  <term name="editor">
226
217
  <single>editor</single>
@@ -1,6 +1,13 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="fr-FR">
3
- <style-options punctuation-in-quote="false"/>
3
+ <info>
4
+ <translator>
5
+ <name>Grégoire Colly</name>
6
+ </translator>
7
+ <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
8
+ <updated>2012-07-04T23:31:02+00:00</updated>
9
+ </info>
10
+ <style-options punctuation-in-quote="false" limit-day-ordinals-to-day-1="true"/>
4
11
  <date form="text">
5
12
  <date-part name="day" suffix=" "/>
6
13
  <date-part name="month" suffix=" "/>
@@ -12,24 +19,25 @@
12
19
  <date-part name="year"/>
13
20
  </date>
14
21
  <terms>
15
- <term name="accessed">consulté</term>
22
+ <term name="accessed">consulté le</term>
16
23
  <term name="and">et</term>
17
24
  <term name="and others">et autres</term>
18
25
  <term name="anonymous">anonyme</term>
19
26
  <term name="anonymous" form="short">anon.</term>
20
- <term name="at">à</term>
27
+ <term name="at">sur</term>
28
+ <term name="available at">disponible sur</term>
21
29
  <term name="by">par</term>
22
30
  <term name="circa">vers</term>
23
31
  <term name="circa" form="short">v.</term>
24
32
  <term name="cited">cité</term>
25
- <term name="edition">
33
+ <term name="edition" gender="feminine">
26
34
  <single>édition</single>
27
35
  <multiple>éditions</multiple>
28
36
  </term>
29
37
  <term name="edition" form="short">éd.</term>
30
38
  <term name="et-al">et al.</term>
31
39
  <term name="forthcoming">à paraître</term>
32
- <term name="from">de</term>
40
+ <term name="from">à l'adresse</term>
33
41
  <term name="ibid">ibid.</term>
34
42
  <term name="in">in</term>
35
43
  <term name="in press">sous presse</term>
@@ -37,7 +45,7 @@
37
45
  <term name="interview">entretien</term>
38
46
  <term name="letter">lettre</term>
39
47
  <term name="no date">sans date</term>
40
- <term name="no date" form="short">sd.</term>
48
+ <term name="no date" form="short">s.&#160;d.</term>
41
49
  <term name="online">en ligne</term>
42
50
  <term name="presented at">présenté à</term>
43
51
  <term name="reference">
@@ -49,23 +57,25 @@
49
57
  <multiple>réf.</multiple>
50
58
  </term>
51
59
  <term name="retrieved">consulté</term>
60
+ <term name="scale">échelle</term>
61
+ <term name="version">version</term>
52
62
 
53
63
  <!-- ANNO DOMINI; BEFORE CHRIST -->
54
64
  <term name="ad">apr. J.-C.</term>
55
65
  <term name="bc">av. J.-C.</term>
56
66
 
57
- <!-- QUOTES -->
58
- <term name="open-quote">« </term>
59
- <term name="close-quote"> »</term>
67
+ <!-- PUNCTUATION -->
68
+ <term name="open-quote">«&#160;</term>
69
+ <term name="close-quote">&#160;»</term>
60
70
  <term name="open-inner-quote">“</term>
61
71
  <term name="close-inner-quote">”</term>
72
+ <term name="page-range-delimiter">&#8209;</term> <!-- non-breaking hyphen -->
62
73
 
63
74
  <!-- ORDINALS -->
64
- <term name="ordinal-01">ᵉʳ</term>
65
- <term name="ordinal-02">ᵉ</term>
66
- <term name="ordinal-03">ᵉ</term>
67
- <term name="ordinal-04">ᵉ</term>
68
-
75
+ <term name="ordinal">ᵉ</term>
76
+ <term name="ordinal-01" gender-form="feminine" match="whole-number">ʳᵉ</term>
77
+ <term name="ordinal-01" gender-form="masculine" match="whole-number">ᵉʳ</term>
78
+
69
79
  <!-- LONG ORDINALS -->
70
80
  <term name="long-ordinal-01">premier</term>
71
81
  <term name="long-ordinal-02">deuxième</term>
@@ -78,32 +88,6 @@
78
88
  <term name="long-ordinal-09">neuvième</term>
79
89
  <term name="long-ordinal-10">dixième</term>
80
90
 
81
- <!-- CATEGORIES -->
82
- <term name="anthropology">anthropologie</term>
83
- <term name="astronomy">astronomie</term>
84
- <term name="biology">biologie</term>
85
- <term name="botany">botanique</term>
86
- <term name="chemistry">chimie</term>
87
- <term name="engineering">ingénierie</term>
88
- <term name="generic-base">base générique</term>
89
- <term name="geography">géographie</term>
90
- <term name="geology">géologie</term>
91
- <term name="history">histoire</term>
92
- <term name="humanities">lettres et sciences humaines</term>
93
- <term name="linguistics">linguistique</term>
94
- <term name="literature">littérature</term>
95
- <term name="math">mathématiques</term>
96
- <term name="medicine">médecine</term>
97
- <term name="philosophy">philosophie</term>
98
- <term name="physics">physique</term>
99
- <term name="psychology">psychologie</term>
100
- <term name="sociology">sociologie</term>
101
- <term name="science">sciences de la nature</term>
102
- <term name="political_science">science politique</term>
103
- <term name="social_science">sciences sociales</term>
104
- <term name="theology">théologie</term>
105
- <term name="zoology">zoologie</term>
106
-
107
91
  <!-- LONG LOCATOR FORMS -->
108
92
  <term name="book">
109
93
  <single>livre</single>
@@ -125,7 +109,7 @@
125
109
  <single>folio</single>
126
110
  <multiple>folios</multiple>
127
111
  </term>
128
- <term name="issue">
112
+ <term name="issue" gender="masculine">
129
113
  <single>numéro</single>
130
114
  <multiple>numéros</multiple>
131
115
  </term>
@@ -145,6 +129,10 @@
145
129
  <single>page</single>
146
130
  <multiple>pages</multiple>
147
131
  </term>
132
+ <term name="number-of-pages">
133
+ <single>page</single>
134
+ <multiple>pages</multiple>
135
+ </term>
148
136
  <term name="paragraph">
149
137
  <single>paragraphe</single>
150
138
  <multiple>paragraphes</multiple>
@@ -165,7 +153,7 @@
165
153
  <single>verset</single>
166
154
  <multiple>versets</multiple>
167
155
  </term>
168
- <term name="volume">
156
+ <term name="volume" gender="masculine">
169
157
  <single>volume</single>
170
158
  <multiple>volumes</multiple>
171
159
  </term>
@@ -175,8 +163,14 @@
175
163
  <term name="chapter" form="short">chap.</term>
176
164
  <term name="column" form="short">col.</term>
177
165
  <term name="figure" form="short">fig.</term>
178
- <term name="folio" form="short">fᵒ</term>
179
- <term name="issue" form="short">nᵒ</term>
166
+ <term name="folio" form="short">
167
+ <single>fᵒ</single>
168
+ <multiple>fᵒˢ</multiple>
169
+ </term>
170
+ <term name="issue" form="short">
171
+ <single>nᵒ</single>
172
+ <multiple>nᵒˢ</multiple>
173
+ </term>
180
174
  <term name="line" form="short">l.</term>
181
175
  <term name="note" form="short">n.</term>
182
176
  <term name="opus" form="short">op.</term>
@@ -184,12 +178,16 @@
184
178
  <single>p.</single>
185
179
  <multiple>p.</multiple>
186
180
  </term>
181
+ <term name="number-of-pages" form="short">
182
+ <single>p.</single>
183
+ <multiple>p.</multiple>
184
+ </term>
187
185
  <term name="paragraph" form="short">paragr.</term>
188
186
  <term name="part" form="short">part.</term>
189
187
  <term name="section" form="short">sect.</term>
190
188
  <term name="sub verbo" form="short">
191
- <single>sv.</single>
192
- <multiple>svv.</multiple>
189
+ <single>s.&#160;v.</single>
190
+ <multiple>s.&#160;vv.</multiple>
193
191
  </term>
194
192
  <term name="verse" form="short">
195
193
  <single>v.</single>
@@ -211,9 +209,9 @@
211
209
  </term>
212
210
 
213
211
  <!-- LONG ROLE FORMS -->
214
- <term name="author">
215
- <single/>
216
- <multiple/>
212
+ <term name="director">
213
+ <single>réalisateur</single>
214
+ <multiple>réalisateurs</multiple>
217
215
  </term>
218
216
  <term name="editor">
219
217
  <single>éditeur</single>
@@ -223,6 +221,10 @@
223
221
  <single>directeur</single>
224
222
  <multiple>directeurs</multiple>
225
223
  </term>
224
+ <term name="illustrator">
225
+ <single>illustrateur</single>
226
+ <multiple>illustrateurs</multiple>
227
+ </term>
226
228
  <term name="translator">
227
229
  <single>traducteur</single>
228
230
  <multiple>traducteurs</multiple>
@@ -233,9 +235,9 @@
233
235
  </term>
234
236
 
235
237
  <!-- SHORT ROLE FORMS -->
236
- <term name="author" form="short">
237
- <single/>
238
- <multiple/>
238
+ <term name="director" form="short">
239
+ <single>réal.</single>
240
+ <multiple>réal.</multiple>
239
241
  </term>
240
242
  <term name="editor" form="short">
241
243
  <single>éd.</single>
@@ -245,6 +247,10 @@
245
247
  <single>dir.</single>
246
248
  <multiple>dir.</multiple>
247
249
  </term>
250
+ <term name="illustrator" form="short">
251
+ <single>ill.</single>
252
+ <multiple>ill.</multiple>
253
+ </term>
248
254
  <term name="translator" form="short">
249
255
  <single>trad.</single>
250
256
  <multiple>trad.</multiple>
@@ -255,33 +261,38 @@
255
261
  </term>
256
262
 
257
263
  <!-- VERB ROLE FORMS -->
264
+ <term name="director" form="verb">réalisé par</term>
258
265
  <term name="editor" form="verb">édité par</term>
259
266
  <term name="editorial-director" form="verb">sous la direction de</term>
267
+ <term name="illustrator" form="verb">illustré par</term>
268
+ <term name="interviewer" form="verb">entretien réalisé par</term>
269
+ <term name="recipient" form="verb">à</term>
270
+ <term name="reviewed-author" form="verb">par</term>
260
271
  <term name="translator" form="verb">traduit par</term>
261
272
  <term name="editortranslator" form="verb">édité et traduit par</term>
262
- <term name="recipient" form="verb">à</term>
263
- <term name="interviewer" form="verb">entretien réalisé par</term>
264
273
 
265
274
  <!-- SHORT VERB ROLE FORMS -->
266
275
  <term name="container-author" form="verb-short">par</term>
276
+ <term name="director" form="verb-short">réal. par</term>
267
277
  <term name="editor" form="verb-short">éd. par</term>
268
278
  <term name="editorial-director" form="verb-short">ss la dir. de</term>
279
+ <term name="illustrator" form="verb-short">ill. par</term>
269
280
  <term name="translator" form="verb-short">trad. par</term>
270
281
  <term name="editortranslator" form="verb-short">éd. et trad. par</term>
271
282
 
272
283
  <!-- LONG MONTH FORMS -->
273
- <term name="month-01">janvier</term>
274
- <term name="month-02">février</term>
275
- <term name="month-03">mars</term>
276
- <term name="month-04">avril</term>
277
- <term name="month-05">mai</term>
278
- <term name="month-06">juin</term>
279
- <term name="month-07">juillet</term>
280
- <term name="month-08">août</term>
281
- <term name="month-09">septembre</term>
282
- <term name="month-10">octobre</term>
283
- <term name="month-11">novembre</term>
284
- <term name="month-12">décembre</term>
284
+ <term name="month-01" gender="masculine">janvier</term>
285
+ <term name="month-02" gender="masculine">février</term>
286
+ <term name="month-03" gender="masculine">mars</term>
287
+ <term name="month-04" gender="masculine">avril</term>
288
+ <term name="month-05" gender="masculine">mai</term>
289
+ <term name="month-06" gender="masculine">juin</term>
290
+ <term name="month-07" gender="masculine">juillet</term>
291
+ <term name="month-08" gender="masculine">août</term>
292
+ <term name="month-09" gender="masculine">septembre</term>
293
+ <term name="month-10" gender="masculine">octobre</term>
294
+ <term name="month-11" gender="masculine">novembre</term>
295
+ <term name="month-12" gender="masculine">décembre</term>
285
296
 
286
297
  <!-- SHORT MONTH FORMS -->
287
298
  <term name="month-01" form="short">janv.</term>