citeproc-ruby 1.1.7 → 1.1.13
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.
- checksums.yaml +5 -5
- data/BSDL +1 -1
- data/Gemfile +10 -32
- data/README.md +5 -2
- data/lib/citeproc/ruby.rb +1 -0
- data/lib/citeproc/ruby/format.rb +1 -1
- data/lib/citeproc/ruby/formats/latex.rb +136 -0
- data/lib/citeproc/ruby/renderer.rb +2 -1
- data/lib/citeproc/ruby/renderer/date.rb +9 -4
- data/lib/citeproc/ruby/renderer/format.rb +1 -0
- data/lib/citeproc/ruby/version.rb +1 -1
- metadata +18 -88
- data/.rspec +0 -3
- data/.rubocop.yml +0 -1156
- data/.simplecov +0 -4
- data/Guardfile +0 -14
- data/features/bibliography.feature +0 -25
- data/features/locale_overrides.feature +0 -31
- data/features/name_options.feature +0 -37
- data/features/names.feature +0 -198
- data/features/renderer.feature +0 -94
- data/features/sort.feature +0 -50
- data/features/step_definitions/engine.rb +0 -21
- data/features/step_definitions/renderer.rb +0 -85
- data/features/style_immanent_locale_terms.feature +0 -30
- data/features/support/env.rb +0 -35
- data/features/support/hooks.rb +0 -10
- data/spec/citeproc/ruby/engine_spec.rb +0 -120
- data/spec/citeproc/ruby/formats/default_spec.rb +0 -168
- data/spec/citeproc/ruby/formats/html_spec.rb +0 -167
- data/spec/citeproc/ruby/renderer/choose_spec.rb +0 -293
- data/spec/citeproc/ruby/renderer/date_spec.rb +0 -173
- data/spec/citeproc/ruby/renderer/group_spec.rb +0 -114
- data/spec/citeproc/ruby/renderer/history_spec.rb +0 -47
- data/spec/citeproc/ruby/renderer/label_spec.rb +0 -225
- data/spec/citeproc/ruby/renderer/layout_spec.rb +0 -41
- data/spec/citeproc/ruby/renderer/macro_spec.rb +0 -31
- data/spec/citeproc/ruby/renderer/names_spec.rb +0 -396
- data/spec/citeproc/ruby/renderer/number_spec.rb +0 -120
- data/spec/citeproc/ruby/renderer/text_spec.rb +0 -125
- data/spec/citeproc/ruby/renderer_spec.rb +0 -65
- data/spec/fixtures/items.rb +0 -113
- data/spec/fixtures/locales/locales-de-DE.xml +0 -298
- data/spec/fixtures/locales/locales-en-US.xml +0 -304
- data/spec/fixtures/locales/locales-fr-FR.xml +0 -317
- data/spec/fixtures/styles/apa-with-different-translations.csl +0 -451
- data/spec/fixtures/styles/apa.csl +0 -443
- data/spec/fixtures/styles/modern-language-association-8th-edition.csl +0 -293
- data/spec/spec_helper.rb +0 -73
@@ -1,21 +0,0 @@
|
|
1
|
-
Given(/^the following style:$/) do |string|
|
2
|
-
@style = CSL::Style.parse!(string)
|
3
|
-
end
|
4
|
-
|
5
|
-
Given(/^the "(.*?)" style$/) do |style|
|
6
|
-
@style = CSL::Style.load(style)
|
7
|
-
end
|
8
|
-
|
9
|
-
When(/^I (cite|reference) the following items as "(.*?)":$/) do |mode, format, items|
|
10
|
-
processor = CiteProc::Processor.new :style => @style, format: format, locale: @locale
|
11
|
-
mode = if mode == 'cite' then :citation else :bibliography end
|
12
|
-
|
13
|
-
processor.import items.hashes.map.with_index { |data, idx|
|
14
|
-
data[:id] = "ID-#{idx}"
|
15
|
-
data
|
16
|
-
}
|
17
|
-
|
18
|
-
@results = processor.items.keys.map { |id|
|
19
|
-
processor.render mode, :id => id
|
20
|
-
}.flatten
|
21
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
|
2
|
-
Given(/^the "(.*?)" style's (bibliography|citation) node$/) do |style, mode|
|
3
|
-
@node = CSL::Style.load(style).send(mode).layout
|
4
|
-
end
|
5
|
-
|
6
|
-
Given(/^the following style node:$/) do |string|
|
7
|
-
@node = CSL.parse!(string, CSL::Style)
|
8
|
-
end
|
9
|
-
|
10
|
-
Given(/^the following sort keys:$/) do |string|
|
11
|
-
@sort = CSL.parse!(string, CSL::Style)
|
12
|
-
end
|
13
|
-
|
14
|
-
Given(/^the following macro:$/) do |string|
|
15
|
-
@macro = CSL.parse!(string, CSL::Style)
|
16
|
-
end
|
17
|
-
|
18
|
-
Given(/^the "(.*?)" locale$/) do |locale|
|
19
|
-
@locale = locale
|
20
|
-
end
|
21
|
-
|
22
|
-
When(/^I render the following citation items as "(.*?)":$/) do |format, items|
|
23
|
-
@locale ||= 'en'
|
24
|
-
r = CiteProc::Ruby::Renderer.new(:format => format, :locale => @locale)
|
25
|
-
|
26
|
-
@results = items.hashes.map.with_index do |data, idx|
|
27
|
-
i = CiteProc::CitationItem.new(:id => "ID-#{idx}")
|
28
|
-
|
29
|
-
data[:id] = "ID-#{idx}"
|
30
|
-
i.data = CiteProc::Item.new(data)
|
31
|
-
|
32
|
-
r.render i, @node
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
When(/^I render the following citation item as "(.*?)":$/) do |format, item|
|
37
|
-
r = CiteProc::Ruby::Renderer.new(:format => format)
|
38
|
-
|
39
|
-
i = CiteProc::CitationItem.new(:id => 'ID-1')
|
40
|
-
i.data = CiteProc::Item.new(item.rows_hash.merge(:id => 'ID-1'))
|
41
|
-
|
42
|
-
@result = r.render i, @node
|
43
|
-
end
|
44
|
-
|
45
|
-
When(/^I sort the following items:$/) do |items|
|
46
|
-
engine = CiteProc::Ruby::Engine.new
|
47
|
-
|
48
|
-
@order = items.hashes.map.with_index do |data, idx|
|
49
|
-
data[:id] = "ID-#{idx}"
|
50
|
-
CiteProc::Item.new(data)
|
51
|
-
end
|
52
|
-
|
53
|
-
unless @macro.nil?
|
54
|
-
@sort.each_child do |key|
|
55
|
-
allow(key).to receive(:macro).and_return(@macro)
|
56
|
-
allow(key).to receive(:macro?).and_return(true)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
engine.sort! @order, @sort.children
|
61
|
-
end
|
62
|
-
|
63
|
-
Then(/^the results should be:$/) do |expected|
|
64
|
-
expected = expected.raw.map(&:first)
|
65
|
-
|
66
|
-
expect(@results.length).to eq(expected.length)
|
67
|
-
|
68
|
-
@results.zip(expected).each do |result, expectation|
|
69
|
-
expect(result).to eq(expectation)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
Then(/^the result should be: (.*)$/) do |expected|
|
74
|
-
expect(@result).to eq(expected)
|
75
|
-
end
|
76
|
-
|
77
|
-
Then(/^the order should be:$/) do |expected|
|
78
|
-
expected = expected.raw.map(&:first)
|
79
|
-
|
80
|
-
expect(@order.length).to eq(expected.length)
|
81
|
-
|
82
|
-
@order.zip(expected).each do |order, expectation|
|
83
|
-
expect(order['id']).to eq(expectation)
|
84
|
-
end
|
85
|
-
end
|
@@ -1,30 +0,0 @@
|
|
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 in English
|
7
|
-
Given the "apa-with-different-translations" style
|
8
|
-
When I reference the following items as "text":
|
9
|
-
| type | author | title | issued | translator |
|
10
|
-
| book | Thomas Pynchon | The crying of lot 49 | July 7, 2006 | Harald Hard |
|
11
|
-
Then the results should be:
|
12
|
-
| Pynchon, T. (2006). The crying of lot 49. (H. Hard, Who translated this piece on her/his own). |
|
13
|
-
|
14
|
-
Scenario: Rendering APA style bibliographies as text in French
|
15
|
-
Given the "apa-with-different-translations" style
|
16
|
-
Given the "fr" locale
|
17
|
-
When I reference the following items as "text":
|
18
|
-
| type | author | title | issued | translator |
|
19
|
-
| book | Thomas Pynchon | The crying of lot 49 | July 7, 2006 | Harald Hard |
|
20
|
-
Then the results should be:
|
21
|
-
| Pynchon, T. (2006). The crying of lot 49. (H. Hard, Le merveilleux traducteur). |
|
22
|
-
|
23
|
-
Scenario: Rendering APA style bibliographies as text in German (a language where the style has no explicit terms for)
|
24
|
-
Given the "apa-with-different-translations" style
|
25
|
-
Given the "de" locale
|
26
|
-
When I reference the following items as "text":
|
27
|
-
| type | author | title | issued | translator |
|
28
|
-
| book | Thomas Pynchon | The crying of lot 49 | July 7, 2006 | Harald Hard |
|
29
|
-
Then the results should be:
|
30
|
-
| Pynchon, T. (2006). The crying of lot 49. (H. Hard, Übers.). |
|
data/features/support/env.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'simplecov'
|
3
|
-
require 'coveralls' if ENV['CI']
|
4
|
-
rescue LoadError
|
5
|
-
# ignore
|
6
|
-
end
|
7
|
-
|
8
|
-
begin
|
9
|
-
case
|
10
|
-
when RUBY_PLATFORM < 'java'
|
11
|
-
require 'debug'
|
12
|
-
Debugger.start
|
13
|
-
when defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
14
|
-
require 'rubinius/debugger'
|
15
|
-
when RUBY_VERSION < '2.0'
|
16
|
-
require 'debugger'
|
17
|
-
else
|
18
|
-
require 'byebug'
|
19
|
-
end
|
20
|
-
rescue LoadError
|
21
|
-
# ignore
|
22
|
-
end
|
23
|
-
|
24
|
-
require 'rspec/mocks/standalone'
|
25
|
-
require 'citeproc/ruby'
|
26
|
-
|
27
|
-
module Fixtures
|
28
|
-
PATH = File.expand_path('../../../spec/fixtures', __FILE__)
|
29
|
-
|
30
|
-
Dir[File.join(PATH, '*.rb')].each do |fixture|
|
31
|
-
require fixture
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
World(Fixtures)
|
data/features/support/hooks.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
Before do
|
2
|
-
@style_root, @locale_root = CSL::Style.root, CSL::Locale.root
|
3
|
-
|
4
|
-
CSL::Style.root = File.join(Fixtures::PATH, 'styles')
|
5
|
-
CSL::Locale.root = File.join(Fixtures::PATH, 'locales')
|
6
|
-
end
|
7
|
-
|
8
|
-
After do
|
9
|
-
CSL::Style.root, CSL::Locale.root = @style_root, @locale_root
|
10
|
-
end
|
@@ -1,120 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
module CiteProc
|
6
|
-
module Ruby
|
7
|
-
|
8
|
-
describe 'The CiteProc-Ruby Engine' do
|
9
|
-
let(:cp) { CiteProc::Processor.new :style => 'apa', :format => 'text' }
|
10
|
-
let(:engine) { cp.engine }
|
11
|
-
|
12
|
-
it 'registers itself as "citeproc-ruby"' do
|
13
|
-
expect(CiteProc::Engine.available).to include('citeproc-ruby')
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'is the default engine' do
|
17
|
-
expect(CiteProc::Engine.default).to equal(CiteProc::Ruby::Engine)
|
18
|
-
expect(engine).to be_a(CiteProc::Ruby::Engine)
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#bibliography' do
|
22
|
-
|
23
|
-
describe 'when there are no items in the processor' do
|
24
|
-
it 'returns an empty bibliography for any selector' do
|
25
|
-
expect(cp.bibliography()).to be_empty
|
26
|
-
expect(cp.bibliography(:all => {})).to be_empty
|
27
|
-
expect(cp.bibliography(:none => {})).to be_empty
|
28
|
-
end
|
29
|
-
end
|
30
|
-
describe 'should order entries correctly' do
|
31
|
-
describe 'mla 8' do
|
32
|
-
let(:cp_mla) { CiteProc::Processor.new :style => 'modern-language-association-8th-edition', :format => 'html' }
|
33
|
-
before(:each) do
|
34
|
-
cp_mla << items(:aaron2).data
|
35
|
-
cp_mla << items(:abbott).data
|
36
|
-
cp_mla << items(:knuth1968).data
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'should not add quotes around text items when rendering for sorting purposes' do
|
40
|
-
cp_bib1_hash = cp_mla.bibliography.to_citeproc
|
41
|
-
bib_entries = cp_bib1_hash[1]
|
42
|
-
expect(bib_entries[0]).to start_with('Aaron')
|
43
|
-
# no author specified on Abbott. In MLA8 title is a substitute for name, thus it was being rendered in text
|
44
|
-
# format to get a sortable value for author. This produced a string starting with a quote character which
|
45
|
-
# messed up sorting. Have created a special sort format which is overridden to not inject these quotes.
|
46
|
-
# may be other things that could be prevented here (suffix/prefix) but I haven't run across them yet
|
47
|
-
expect(bib_entries[1]).to start_with('“Abbott')
|
48
|
-
expect(bib_entries[2]).to start_with('Knuth')
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '#render' do
|
55
|
-
|
56
|
-
describe 'when there are no items in the processor' do
|
57
|
-
end
|
58
|
-
|
59
|
-
describe 'when there are items in the processor' do
|
60
|
-
before(:each) do
|
61
|
-
cp << items(:grammatology).data
|
62
|
-
cp << items(:knuth1968).data
|
63
|
-
cp << items(:difference).data
|
64
|
-
cp << items(:literal_date).data
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'renders the reference for the given id' do
|
68
|
-
expect(cp.render(:bibliography, :id => 'grammatology')).to eq(['Derrida, J. (1976). Of Grammatology (corrected ed.). Baltimore: Johns Hopkins University Press.'])
|
69
|
-
expect(cp.render(:citation, :id => 'grammatology', :locator => '3-4')).to eq('(Derrida, 1976, pp. 3-4)')
|
70
|
-
expect(cp.render(:bibliography, :id => 'knuth1968')).to eq(['Knuth, D. (1968). The art of computer programming (Vol. 1). Boston: Addison-Wesley.'])
|
71
|
-
|
72
|
-
node = cp.engine.style.macros['author']
|
73
|
-
(node > 'names' > 'name')[:initialize] = 'false'
|
74
|
-
|
75
|
-
cp.engine.format = 'html'
|
76
|
-
expect(cp.render(:bibliography, :id => 'knuth1968')).to eq(['Knuth, Donald. (1968). <i>The art of computer programming</i> (Vol. 1). Boston: Addison-Wesley.'])
|
77
|
-
|
78
|
-
expect(cp.render(:citation, :id => 'knuth1968', :locator => '23')).to eq('(Knuth, 1968, p. 23)')
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'overrides locales if the processor option is set' do
|
82
|
-
expect(cp.render(:bibliography, :id => 'difference')).to eq(['Derrida, J. (1967). L’écriture et la différence (1st ed.). Paris: Éditions du Seuil.'])
|
83
|
-
|
84
|
-
cp.options[:allow_locale_overrides] = true
|
85
|
-
expect(cp.render(:bibliography, :id => 'difference')).to eq(['Derrida, J. (1967). L’écriture et la différence (1ʳᵉ éd.). Paris: Éditions du Seuil.'])
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'can handle literal dates' do
|
89
|
-
expect(cp.render(:bibliography, :id => 'literal_date')).to eq(['Derrida, J. (sometime in 1967). L’écriture et la différence (1st ed.). Paris: Éditions du Seuil.'])
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe '#process' do
|
95
|
-
describe 'when there are no items in the processor' do
|
96
|
-
end
|
97
|
-
|
98
|
-
describe 'when there are items in the processor' do
|
99
|
-
before(:each) do
|
100
|
-
cp << items(:grammatology).data
|
101
|
-
cp << items(:knuth1968).data
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'renders the citation for the given id' do
|
105
|
-
expect(cp.process(:id => 'knuth1968', :locator => '23')).to eq('(Knuth, 1968, p. 23)')
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'combines and sorts multiple cite items' do
|
109
|
-
expect(cp.process([
|
110
|
-
{:id => 'knuth1968', :locator => '23'},
|
111
|
-
{:id => 'grammatology', :locator => '11-14'}
|
112
|
-
])).to eq('(Derrida, 1976, pp. 11-14; Knuth, 1968, p. 23)')
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
120
|
-
end
|
@@ -1,168 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
module CiteProc
|
6
|
-
module Ruby
|
7
|
-
|
8
|
-
describe 'Formats::Text#apply' do
|
9
|
-
let(:format) { Format.load 'text' }
|
10
|
-
let(:node) { CSL::Style::Text.new }
|
11
|
-
|
12
|
-
it 'returns an empty string if input is nil' do
|
13
|
-
expect(format.apply(nil, node)).to eq('')
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'returns the string unchanged if empty' do
|
17
|
-
input = ''
|
18
|
-
expect(format.apply(input, node)).to be_equal(input)
|
19
|
-
expect(input).to eq('')
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'returns the string unchanged if node is nil' do
|
23
|
-
input = 'foo'
|
24
|
-
expect(format.apply(input, nil)).to be_equal(input)
|
25
|
-
expect(input).to eq('foo')
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'supports localized quotes' do
|
29
|
-
locale = double(:locale)
|
30
|
-
allow(locale).to receive(:punctuation_in_quotes?).and_return(true)
|
31
|
-
allow(locale).to receive(:quote).and_return('bar')
|
32
|
-
|
33
|
-
node[:quotes] = true
|
34
|
-
|
35
|
-
expect(format.apply('foo', node, locale)).to eq('bar')
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'disregards localized closing quotes when squeezing affixes' do
|
39
|
-
locale = double(:locale)
|
40
|
-
allow(locale).to receive(:punctuation_in_quotes?).and_return(true)
|
41
|
-
allow(locale).to receive(:quote) { |t| '"' << t << '"' }
|
42
|
-
allow(locale).to receive(:t) { |t| t == 'close-quote' ? '"' : "'" }
|
43
|
-
|
44
|
-
node[:quotes] = true
|
45
|
-
node[:suffix] = '.'
|
46
|
-
|
47
|
-
expect(format.apply('foo', node, locale)).to eq('"foo."')
|
48
|
-
expect(format.apply("'foo'", node, locale)).to eq("\"'foo.'\"")
|
49
|
-
end
|
50
|
-
|
51
|
-
describe 'text-case formats' do
|
52
|
-
it 'supports lowercase' do
|
53
|
-
node[:'text-case'] = 'lowercase'
|
54
|
-
expect(format.apply('Foo BAR', node)).to eq('foo bar')
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'supports lowercase for non-ascii letters' do
|
58
|
-
node[:'text-case'] = 'lowercase'
|
59
|
-
expect(format.apply('SCHÖN!', node)).to eq('schön!')
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'supports uppercase' do
|
63
|
-
node[:'text-case'] = 'uppercase'
|
64
|
-
expect(format.apply('Foo BAR', node)).to eq('FOO BAR')
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'supports uppercase for non-ascii letters' do
|
68
|
-
node[:'text-case'] = 'uppercase'
|
69
|
-
expect(format.apply('schön!', node)).to eq('SCHÖN!')
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'does not alter the original string' do
|
73
|
-
node[:'text-case'] = 'lowercase'
|
74
|
-
input = 'fooBar'
|
75
|
-
|
76
|
-
expect(format.apply(input, node)).to eq('foobar')
|
77
|
-
expect(input).to eq('fooBar')
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'supports capitalize-first' do
|
81
|
-
node[:'text-case'] = 'capitalize-first'
|
82
|
-
|
83
|
-
expect(format.apply('foo bar', node)).to eq('Foo bar')
|
84
|
-
expect(format.apply('Foo bar', node)).to eq('Foo bar')
|
85
|
-
expect(format.apply('!foo bar', node)).to eq('!Foo bar')
|
86
|
-
expect(format.apply('én foo bar', node)).to eq('Én foo bar')
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'supports capitalize-all' do
|
90
|
-
node[:'text-case'] = 'capitalize-all'
|
91
|
-
|
92
|
-
expect(format.apply('foo bar', node)).to eq('Foo Bar')
|
93
|
-
expect(format.apply('!foo bar', node)).to eq('!Foo Bar')
|
94
|
-
expect(format.apply('én foo bar', node)).to eq('Én Foo Bar')
|
95
|
-
end
|
96
|
-
|
97
|
-
it 'supports sentence case' do
|
98
|
-
node[:'text-case'] = 'sentence'
|
99
|
-
|
100
|
-
expect(format.apply('FOO bar', node)).to eq('Foo bar')
|
101
|
-
expect(format.apply('foo Bar BAR', node)).to eq('Foo Bar Bar')
|
102
|
-
expect(format.apply('én Foo bar', node)).to eq('Én Foo bar')
|
103
|
-
end
|
104
|
-
|
105
|
-
it 'supports title case' do
|
106
|
-
node[:'text-case'] = 'title'
|
107
|
-
|
108
|
-
expect(format.apply('The adventures of Huckleberry Finn', node)).to eq('The Adventures of Huckleberry Finn')
|
109
|
-
expect(format.apply('This IS a pen that is a smith pencil', node)).to eq('This IS a Pen That Is a Smith Pencil')
|
110
|
-
expect(format.apply('of mice and men', node)).to eq('Of Mice and Men')
|
111
|
-
expect(format.apply('history of the word the', node)).to eq('History of the Word The')
|
112
|
-
expect(format.apply('faster than the speed of sound', node)).to eq('Faster than the Speed of Sound')
|
113
|
-
expect(format.apply('on the drug-resistance of enteric bacteria', node)).to eq('On the Drug-Resistance of Enteric Bacteria')
|
114
|
-
expect(format.apply("The Mote in God's eye", node)).to eq("The Mote in God's Eye")
|
115
|
-
expect(format.apply("The Mote in God eye", node)).to eq("The Mote in God Eye")
|
116
|
-
expect(format.apply("Music community mourns death of one of its leaders", node)).to eq("Music Community Mourns Death of One of Its Leaders")
|
117
|
-
expect(format.apply("Pride and Prejudice", node)).to eq("Pride and Prejudice")
|
118
|
-
expect(format.apply("Check the page: easybib.com", node)).to eq("Check the Page: Easybib.com")
|
119
|
-
expect(format.apply("Dogs life.obviously the best guide for pet owners", node)).to eq("Dogs Life.obviously the Best Guide for Pet Owners")
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
describe 'strip-periods' do
|
124
|
-
before { node[:'strip-periods'] = true }
|
125
|
-
|
126
|
-
it 'strips all periods from the output' do
|
127
|
-
expect(format.apply('hello there...! how.are.you?', node)).to eq('hello there! howareyou?')
|
128
|
-
expect(format.apply('foo bar!', node)).to eq('foo bar!')
|
129
|
-
end
|
130
|
-
|
131
|
-
it 'does not strip periods from affixes' do
|
132
|
-
node[:prefix] = '...('
|
133
|
-
node[:suffix] = ').'
|
134
|
-
|
135
|
-
expect(format.apply('foo.bar.', node)).to eq('...(foobar).')
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
describe 'affixes' do
|
140
|
-
it 'are added after text formats have been applied' do
|
141
|
-
node[:prefix] = 'foo'
|
142
|
-
node[:suffix] = 'ooo'
|
143
|
-
node[:'text-case'] = 'uppercase'
|
144
|
-
|
145
|
-
expect(format.apply('ooo', node)).to eq('fooOOOooo')
|
146
|
-
end
|
147
|
-
|
148
|
-
it 'drop squeezable characters at start/end' do
|
149
|
-
node[:suffix] = ' '
|
150
|
-
|
151
|
-
expect(format.apply('foo', node)).to eq('foo ')
|
152
|
-
expect(format.apply('foo ', node)).to eq('foo ')
|
153
|
-
|
154
|
-
node[:suffix] = '. '
|
155
|
-
expect(format.apply('foo', node)).to eq('foo. ')
|
156
|
-
expect(format.apply('foo.', node)).to eq('foo. ')
|
157
|
-
expect(format.apply('foo?', node)).to eq('foo? ')
|
158
|
-
|
159
|
-
node[:prefix] = '.'
|
160
|
-
expect(format.apply('foo', node)).to eq('.foo. ')
|
161
|
-
expect(format.apply('.foo', node)).to eq('.foo. ')
|
162
|
-
expect(format.apply(',foo', node)).to eq('.,foo. ')
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
end
|
168
|
-
end
|