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
data/BSDL ADDED
@@ -0,0 +1,29 @@
1
+ CiteProc-Ruby. A Ruby CSL cite processor.
2
+
3
+ Copyright 2012 President and Fellows of Harvard College.
4
+ Copyright 2009-2014 Sylvester Keil. All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice,
10
+ this list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR
17
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19
+ EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
20
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23
+ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
25
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+
27
+ The views and conclusions contained in the software and documentation are
28
+ those of the authors and should not be interpreted as representing official
29
+ policies, either expressed or implied, of the copyright holder.
data/Gemfile ADDED
@@ -0,0 +1,42 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ #gem 'citeproc', :github => 'inukshuk/citeproc.git'
5
+ #gem 'csl', :github => 'inukshuk/csl-ruby.git'
6
+
7
+ group :development, :test do
8
+ gem 'rake', '~>10.0'
9
+ gem 'rspec', '~>2.13'
10
+ gem 'cucumber', '~>1.2'
11
+ gem 'simplecov', '~>0.8'
12
+ gem 'rubinius-coverage', :platforms => [:rbx]
13
+ gem 'coveralls', :require => false
14
+ end
15
+
16
+ group :debug do
17
+ gem 'ruby-debug', :require => false, :platforms => [:jruby]
18
+ gem 'debugger', :require => false, :platforms => [:mri]
19
+ gem 'rubinius-debugger', :require => false, :platforms => [:rbx]
20
+ gem 'rubinius-compiler', :require => false, :platforms => [:rbx]
21
+ end
22
+
23
+ group :optional do
24
+ gem 'edtf'
25
+ gem 'chronic'
26
+ end
27
+
28
+ group :extra do
29
+ gem 'guard', '~>2.2'
30
+ gem 'guard-rspec'
31
+ gem 'guard-cucumber'
32
+ gem 'rb-fsevent', '~>0.9.1'
33
+ gem 'pry'
34
+ gem 'yard', '~>0.8', :platforms => [:mri]
35
+ gem 'redcarpet', '~>3.0', :platforms => [:mri]
36
+ end
37
+
38
+ platform :rbx do
39
+ gem 'rubysl'
40
+ gem 'racc'
41
+ gem 'json'
42
+ end
data/Guardfile ADDED
@@ -0,0 +1,14 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec' do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { 'spec' }
8
+ end
9
+
10
+ guard 'cucumber' do
11
+ watch(%r{^features/.+\.feature$})
12
+ watch(%r{^features/support/.+$}) { 'features' }
13
+ watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
14
+ end
data/README.md CHANGED
@@ -1,92 +1,48 @@
1
1
  CiteProc-Ruby
2
2
  =============
3
+ CiteProc-Ruby is a [Citation Style Language](http://citationstyles.org/) (CSL)
4
+ 1.0.1 cite processor written in pure Ruby. This Ruby gem contains the
5
+ processor's rendering engine only; for more documentation on the whole
6
+ cite processor, please refer to the documentation of the
7
+ [citeproc](https://rubygems.org/gems/citeproc) gem instead.
3
8
 
4
- CiteProc-Ruby is a CSL 1.0 ([Citation Style Language](http://citationstyles.org/))
5
- Processor written in Ruby.
9
+ [![Build Status](https://secure.travis-ci.org/inukshuk/citeproc-ruby.png)](http://travis-ci.org/inukshuk/citeproc-ruby)
10
+ [![Coverage Status](https://coveralls.io/repos/inukshuk/citeproc-ruby/badge.png?branch=master)](https://coveralls.io/r/inukshuk/citeproc-ruby?branch=master)
11
+ [![Dependency Status](https://gemnasium.com/inukshuk/citeproc-ruby.png)](https://gemnasium.com/inukshuk/citeproc-ruby)
6
12
 
7
- A word of caution: this release of CiteProc-Ruby is purely experimental; the API
8
- is not complete and liable to change frequently. This release is expected to
9
- work in Ruby version 1.9.2. only. CiteProc-Ruby currently passes approximately
10
- 350 of the 550 tests in the citeproc-test suite.
13
+ Development
14
+ -----------
15
+ The CiteProc-Ruby source code is
16
+ [hosted on GitHub](https://github.com/inukshuk/citeproc-ruby).
17
+ You can check out a copy of the latest code using Git:
11
18
 
12
- Note: the citeproc-ruby gem is going to be integrated with the separate `citeproc`
13
- and `citeproc-js` gems; meanwhile, however, these gems are not compatible, so if
14
- you want to use the current `citeproc-ruby` gem, make sure that neither of the
15
- other gems is installed.
19
+ $ git clone https://github.com/inukshuk/citeproc-ruby.git
16
20
 
17
- Unicode support may be provided by the `unicode-utils` gem (on Ruby 1.9 only),
18
- by ActiveSupport, by the `unicode` gem (on Ruby 1.8 only), by the Java-based
19
- support in JRuby, or naively by the `upcase` and `downcase` methods present
20
- in Ruby by default. These gems are not installed automatically; install one
21
- manually if you want enhanced Unicode support.
21
+ To get started, install the development dependencies and run all tests:
22
22
 
23
+ $ cd citeproc-ruby
24
+ $ bundle install
25
+ $ rake
23
26
 
24
- Quickstart
25
- ----------
26
-
27
- $ [sudo] gem install citeproc-ruby
28
- $ [sudo] gem install unicode-utils # Ruby 1.9
29
- $ [sudo] gem install unicode # Ruby 1.8
30
- $ irb
31
- >> require 'citeproc'
32
- >> book = {
33
- 'author' => [{ 'given' => 'Edgar Allen', 'family' => 'Poe' }],
34
- 'title' => 'Poetry, Tales, and Selected Essays',
35
- 'type' => 'book',
36
- 'issued' => { 'date-parts' => [[1996]] },
37
- 'editor' => [{ 'family' => 'Quinn', 'given' => 'Patrick F.'}, { 'family' => 'Thompson', 'given' => 'G.R.' }],
38
- 'publisher' => 'Library of America',
39
- 'publisher-place' => 'New York'
40
- }
41
- >> CiteProc.process(book)
42
- => "Poe, E. A. (1996). Poetry, Tales, and Selected Essays. (P. F. Quinn & G. R. Thompson, Eds.). New York: Library of America."
43
- >> CiteProc.process(book, :format => :html)
44
- => "Poe, E. A. (1996). <i>Poetry, Tales, and Selected Essays</i>. (P. F. Quinn &#38; G. R. Thompson, Eds.). New York: Library of America."
45
- >> CiteProc.process(book, :mode => :citation)
46
- => ["(Poe, 1996)"]
47
- >> CiteProc.process(book, :style => "https://github.com/citation-style-language/styles/raw/master/chicago-author-date.csl")
48
- => "Poe, Edgar Allen. 1996. Poetry, Tales, and Selected Essays. Ed. Patrick F. Quinn and G.R. Thompson. New York: Library of America."
49
-
50
-
51
- The RSpec examples are a valuable resource of usage examples.
52
-
27
+ If you've found a bug or have a question, please open an issue on the
28
+ [issue tracker](https://github.com/inukshuk/citeproc-ruby/issues).
29
+ Or, for extra credit, clone the CiteProc-Ruby repository, write a failing
30
+ example, fix the bug and submit a pull request.
53
31
 
54
32
  Credits
55
33
  -------
34
+ Thanks to Rintze M. Zelle, Sebastian Karcher, Frank G. Bennett, Jr.,
35
+ and Bruce D'Arcus of CSL and citeproc-js fame for their support!
36
+
37
+ Thanks to Google and the Berkman Center at Harvard University for supporting
38
+ this project as part of [Google Summer of Code](https://developers.google.com/open-source/soc/).
56
39
 
57
- CiteProc-Ruby was written by [Sylvester Keil](http://sylvester.keil.or.at);
58
- thanks to the excellent documentation and specifications of the
59
- [CSL](http://citationstyles.org), [citeproc-js](http://bitbucket.org/fbennett/citeproc-js/wiki/Home),
60
- the [citeproc-test suite](https://bitbucket.org/bdarcus/citeproc-test), and the
61
- kind feedback and support at the [xbiblio mailing list](http://sourceforge.net/mail/?group_id=117435).
40
+ Copyright
41
+ ---------
42
+ Copyright 2009-2014 Sylvester Keil. All rights reserved.
62
43
 
44
+ Copyright 2012 President and Fellows of Harvard College.
63
45
 
64
46
  License
65
47
  -------
66
-
67
- Copyright 2009-2011 Sylvester Keil. All rights reserved.
68
-
69
- Redistribution and use in source and binary forms, with or without
70
- modification, are permitted provided that the following conditions are met:
71
-
72
- 1. Redistributions of source code must retain the above copyright notice,
73
- this list of conditions and the following disclaimer.
74
-
75
- 2. Redistributions in binary form must reproduce the above copyright notice,
76
- this list of conditions and the following disclaimer in the documentation
77
- and/or other materials provided with the distribution.
78
-
79
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR
80
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
81
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
82
- EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
83
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
84
- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
85
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
86
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
87
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
88
- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
89
-
90
- The views and conclusions contained in the software and documentation are
91
- those of the authors and should not be interpreted as representing official
92
- policies, either expressed or implied, of the copyright holder.
48
+ CiteProc-Ruby is dual licensed under the AGPL and the FreeBSD license.
data/Rakefile ADDED
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bundler'
4
+ begin
5
+ Bundler.setup
6
+ rescue Bundler::BundlerError => e
7
+ $stderr.puts e.message
8
+ $stderr.puts "Run `bundle install` to install missing gems"
9
+ exit e.status_code
10
+ end
11
+
12
+ $:.unshift(File.join(File.dirname(__FILE__), './lib'))
13
+ require 'citeproc/ruby/version'
14
+
15
+
16
+ desc 'Run a Pry session with CiteProc-Ruby loaded'
17
+ task :console do
18
+ require 'pry'
19
+ require 'citeproc/ruby'
20
+
21
+ Pry.start
22
+ end
23
+
24
+ task :check_warnings do
25
+ $VERBOSE = true
26
+ require 'citeproc/ruby'
27
+
28
+ puts CiteProc::Ruby::VERSION
29
+ end
30
+
31
+ require 'rspec/core'
32
+ require 'rspec/core/rake_task'
33
+ RSpec::Core::RakeTask.new(:spec) do |spec|
34
+ spec.pattern = FileList['spec/**/*_spec.rb']
35
+ end
36
+
37
+ require 'cucumber/rake/task'
38
+ Cucumber::Rake::Task.new(:cucumber) do |t|
39
+ t.profile = 'default'
40
+ end
41
+
42
+ require 'coveralls/rake/task'
43
+ Coveralls::RakeTask.new
44
+ task :test_with_coveralls => [:spec, :cucumber, 'coveralls:push']
45
+
46
+ task :release do |t|
47
+ system "gem build citeproc-ruby.gemspec"
48
+ system "git tag #{CiteProc::Ruby::VERSION}"
49
+ system "git push --tags"
50
+ system "gem push citeproc-ruby-#{CiteProc::Ruby::VERSION}.gem"
51
+ end
52
+
53
+ task :default => [:spec, :cucumber]
54
+
55
+ begin
56
+ require 'yard'
57
+ YARD::Rake::YardocTask.new
58
+ rescue LoadError => e
59
+ # ignore
60
+ end
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $:.unshift lib unless $:.include?(lib)
4
+
5
+ require 'citeproc/ruby/version'
6
+
7
+ EXCLUDES = %w{
8
+ .coveralls.yml
9
+ .gitignore
10
+ .travis.yml
11
+ citeproc-ruby.gemspec
12
+ }
13
+
14
+ Gem::Specification.new do |s|
15
+ s.name = 'citeproc-ruby'
16
+ s.version = CiteProc::Ruby::VERSION.dup
17
+ s.platform = Gem::Platform::RUBY
18
+
19
+ s.authors = ['Sylvester Keil']
20
+ s.email = ['http://sylvester.keil.or.at']
21
+
22
+ s.homepage = 'https://github.com/inukshuk/citeproc-ruby'
23
+ s.summary = 'A Citation Style Language (CSL) cite processor'
24
+ s.description =
25
+ """
26
+ CiteProc-Ruby is a Citation Style Language (CSL) 1.0.1 compatible cite
27
+ processor implementation written in pure Ruby.
28
+ """.gsub(/^\s+/, '')
29
+
30
+ s.license = 'AGPL'
31
+ s.date = Time.now.strftime('%Y-%m-%d')
32
+
33
+ s.required_ruby_version = '>= 1.9.3'
34
+
35
+ s.add_dependency 'citeproc', '~> 1.0'
36
+ s.add_dependency 'csl', '~> 1.2'
37
+
38
+ s.files = `git ls-files`.split("\n")
39
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
40
+ s.executables = []
41
+ s.require_path = 'lib'
42
+
43
+ s.has_rdoc = 'yard'
44
+ end
45
+
46
+ # vim: syntax=ruby
data/cucumber.yml ADDED
@@ -0,0 +1 @@
1
+ default: --format progress --require features --color
@@ -0,0 +1,25 @@
1
+ Feature: Rendering bibliography nodes
2
+ As a hacker of cite processors
3
+ I want to render citation items
4
+ Using bibliography nodes
5
+
6
+ Scenario: Rendering APA style bibliographies as text
7
+ Given the "apa" style's bibliography node
8
+ When I render the following citation items as "text":
9
+ | type | author | title | issued | publisher | container-title | page | issue |
10
+ | book | Thomas Pynchon | The crying of lot 49 | November 7, 2006 | Harper Perennial | | | |
11
+ | article-journal | Derrida, Jacques | The purveyor of truth | 1975 | Yale University Press | Yale French Studies | 31-113 | 52 |
12
+ Then the results should be:
13
+ | Pynchon, T. (2006). The crying of lot 49. Harper Perennial. |
14
+ | Derrida, J. (1975). The purveyor of truth. Yale French Studies, (52), 31–113. |
15
+
16
+ Scenario: Rendering APA style bibliographies as HTML
17
+ Given the "apa" style's bibliography node
18
+ When I render the following citation item as "html":
19
+ | type | book |
20
+ | author | Vladimir Nabokov |
21
+ | title | Pale fire |
22
+ | issued | April 23, 1989 |
23
+ | publisher | Vintage |
24
+ | publisher-place | London |
25
+ Then the result should be: Nabokov, V. (1989). <i>Pale fire</i>. London: Vintage.
@@ -0,0 +1,37 @@
1
+ Feature: Inheritance of Name Options
2
+ As a style author
3
+ I want name nodes to inherit attributes
4
+ From the citation/bibliography and style nodes
5
+
6
+ Scenario: Name options from bibliography node
7
+ Given the following style node:
8
+ """
9
+ <bibliography name-form="short">
10
+ <layout>
11
+ <names variable="author">
12
+ <name />
13
+ </names>
14
+ </layout>
15
+ </bibliography>
16
+ """
17
+ When I render the following citation items as "html":
18
+ | author |
19
+ | John Doe |
20
+ Then the results should be:
21
+ | Doe |
22
+
23
+ Given the following style node:
24
+ """
25
+ <bibliography name-form="short">
26
+ <layout>
27
+ <names variable="author"/>
28
+ <!--it works without a name node-->
29
+ </layout>
30
+ </bibliography>
31
+ """
32
+ When I render the following citation items as "html":
33
+ | author |
34
+ | John Doe |
35
+ Then the results should be:
36
+ | Doe |
37
+
@@ -0,0 +1,192 @@
1
+ Feature: CSL Name Rendering
2
+ As a CSL hacker
3
+ I want to render names
4
+ Using names nodes
5
+
6
+ Scenario: Names Rendering
7
+ Given the following style node:
8
+ """
9
+ <names variable="translator" delimiter=", " prefix="(" suffix=")">
10
+ <name and="symbol" delimiter=", "/>
11
+ <label form="short" prefix=", " text-case="capitalize-first" suffix=""/>
12
+ </names>
13
+ """
14
+ When I render the following citation items as "text":
15
+ | translator |
16
+ | Romy Schneider and Peter Sellers |
17
+ Then the results should be:
18
+ | (Romy Schneider & Peter Sellers, Trans.) |
19
+
20
+
21
+ Scenario: Initials
22
+ Given the following style node:
23
+ """
24
+ <names variable="translator author" delimiter=", " prefix="(" suffix=")">
25
+ <name and="symbol" delimiter=", " initialize-with=". "/>
26
+ <label form="short" prefix=", " text-case="capitalize-first" suffix=""/>
27
+ </names>
28
+ """
29
+ When I render the following citation items as "text":
30
+ | translator | author |
31
+ | Romy Schneider and Peter Sellers | |
32
+ Then the results should be:
33
+ | (R. Schneider & P. Sellers, Trans.) |
34
+
35
+ Scenario: Initials when given part is uppercased
36
+ Given the following style node:
37
+ """
38
+ <names variable="author" suffix=".">
39
+ <name name-as-sort-order="all" sort-separator=", " initialize-with=". " delimiter="; " delimiter-precedes-last="always">
40
+ <name-part name="family" text-case="uppercase"/>
41
+ <name-part name="given" text-case="uppercase"/>
42
+ </name>
43
+ <et-al prefix=" " font-style="italic"/>
44
+ <label form="short" prefix=" (" suffix=".)" text-case="uppercase"/>
45
+ </names>
46
+ """
47
+ When I render the following citation items as "html":
48
+ | author |
49
+ | Cole, Steven J. and Moore, Robert |
50
+ Then the results should be:
51
+ | COLE, S. J.; MOORE, R. |
52
+
53
+
54
+ Scenario: Name as sort order
55
+ Given the following style node:
56
+ """
57
+ <names variable="author">
58
+ <name and="text" delimiter=", " delimiter-precedes-last="always" name-as-sort-order="first" sort-separator=", " />
59
+ </names>
60
+ """
61
+ When I render the following citation items as "html":
62
+ | author |
63
+ | John Doe |
64
+ | John Doe and Jane Doe |
65
+ Then the results should be:
66
+ | Doe, John |
67
+ | Doe, John, and Jane Doe |
68
+
69
+
70
+ Scenario: Substitutions
71
+ Given the following style node:
72
+ """
73
+ <names variable="author">
74
+ <name and="text" delimiter=", " delimiter-precedes-last="always" name-as-sort-order="first" sort-separator=", " />
75
+ <substitute>
76
+ <names variable="editor"/>
77
+ <text value="UNKNOWN"/>
78
+ </substitute>
79
+ </names>
80
+ """
81
+ When I render the following citation items as "html":
82
+ | editor |
83
+ | John Doe |
84
+ | |
85
+ | John Doe and Jane Doe |
86
+ Then the results should be:
87
+ | Doe, John |
88
+ | UNKNOWN |
89
+ | Doe, John, and Jane Doe |
90
+
91
+ Scenario: Suppression after substitutions
92
+ Given the following style node:
93
+ """
94
+ <group delimiter=", ">
95
+ <names variable="author">
96
+ <name and="text" delimiter=", " delimiter-precedes-last="always" name-as-sort-order="first" sort-separator=", " />
97
+ <substitute>
98
+ <names variable="editor"/>
99
+ <text variable="title"/>
100
+ </substitute>
101
+ </names>
102
+ <names variable="editor">
103
+ <label prefix=" (" suffix=")"/>
104
+ </names>
105
+ <text variable="title" text-case="uppercase"/>
106
+ </group>
107
+ """
108
+ When I render the following citation items as "html":
109
+ | editor | author | title |
110
+ | John Doe | Jane Doe | The Title |
111
+ | John Doe | | The Title |
112
+ | | | The Title |
113
+ Then the results should be:
114
+ | Doe, Jane, John Doe (editor), THE TITLE |
115
+ | Doe, John, THE TITLE |
116
+ | The Title |
117
+
118
+ Scenario: Subsequent author substitutes complete-all with different roles
119
+ Given the following style node:
120
+ """
121
+ <bibliography subsequent-author-substitute="---">
122
+ <layout>
123
+ <group delimiter=" ">
124
+ <names variable="author" delimiter=", " suffix=".">
125
+ <name name-as-sort-order="first"/>
126
+ <substitute>
127
+ <names variable="editor">
128
+ <name name-as-sort-order="first"/>
129
+ <label form="short" prefix=" " suffix="."/>
130
+ </names>
131
+ </substitute>
132
+ </names>
133
+ <text variable="title" suffix="."/>
134
+ </group>
135
+ </layout>
136
+ </bibliography>
137
+ """
138
+ When I render the following citation items as "text":
139
+ | editor | author | title |
140
+ | | Jane Doe | Title A |
141
+ | | Jane Doe | Title B |
142
+ | | John Doe | Title C |
143
+ | John Doe | | Title D |
144
+ | | Jane Doe and John Doe | Title E |
145
+ | | Jane Doe and John Doe | Title F |
146
+ Then the results should be:
147
+ | Doe, Jane. Title A. |
148
+ | ---. Title B. |
149
+ | Doe, John. Title C. |
150
+ | --- ed. Title D. |
151
+ | Doe, Jane, John Doe. Title E. |
152
+ | ---. Title F. |
153
+
154
+ Scenario: Name / Label Order
155
+ Given the following style node:
156
+ """
157
+ <group delimiter=". ">
158
+ <names variable="author" delimiter=". ">
159
+ <name and="symbol" delimiter=", "/>
160
+ <label prefix=" (" suffix=")"/>
161
+ </names>
162
+ <names variable="translator" delimiter=". ">
163
+ <label form="verb-short" text-case="capitalize-first" suffix=" "/>
164
+ <name and="symbol" delimiter=", "/>
165
+ </names>
166
+ </group>
167
+ """
168
+ When I render the following citation items as "text":
169
+ | translator | author |
170
+ | John Doe | Jane Doe |
171
+ | John Doe and Jack Doe | Jane Doe and Jill Doe |
172
+ Then the results should be:
173
+ | Jane Doe (author). Trans. John Doe |
174
+ | Jane Doe & Jill Doe (authors). Trans. John Doe & Jack Doe |
175
+
176
+ Scenario: EtAlUseFirst options
177
+ Given the following style node:
178
+ """
179
+ <group delimiter=" // ">
180
+ <names variable="author">
181
+ <name et-al-min="2" et-al-use-first="0"/>
182
+ </names>
183
+ <names variable="author">
184
+ <name et-al-min="2" et-al-use-first="1"/>
185
+ </names>
186
+ </group>
187
+ """
188
+ When I render the following citation item as "text":
189
+ | author | John Doe and Jane Roe |
190
+ Then the result should be: John Doe et al.
191
+
192
+