bibtex-ruby 2.1.2 → 2.2.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.
Potentially problematic release.
This version of bibtex-ruby might be problematic. Click here for more details.
- data/Gemfile.lock +1 -1
- data/History.txt +6 -0
- data/lib/bibtex/bibliography.rb +76 -71
- data/lib/bibtex/elements.rb +12 -1
- data/lib/bibtex/entry.rb +166 -121
- data/lib/bibtex/value.rb +26 -3
- data/lib/bibtex/version.rb +2 -2
- data/test/bibtex/test_bibliography.rb +53 -38
- data/test/bibtex/test_entry.rb +90 -57
- data/test/bibtex/test_names.rb +14 -0
- data/test/bibtex/test_value.rb +22 -12
- metadata +4 -4
data/test/bibtex/test_names.rb
CHANGED
@@ -87,6 +87,20 @@ module BibTeX
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
+
describe '#merge!' do
|
91
|
+
it 'does not merge duplicates' do
|
92
|
+
n1 = Names.new(@poe)
|
93
|
+
n2 = Names.new(@poe)
|
94
|
+
assert_equal @poe.to_s, n1.merge!(n2).to_s
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'merges different names' do
|
98
|
+
n1 = Names.new(@poe)
|
99
|
+
n2 = Names.new(Name.new(:last => 'Plato'))
|
100
|
+
assert_equal "#{@poe.to_s} and Plato", n1.merge!(n2).to_s
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
90
104
|
describe '#extend_initials' do
|
91
105
|
it 'extends the first name if the last name and initials match' do
|
92
106
|
Name.new(:first => 'E.A.', :last => 'Poe').extend_initials('Edgar Allen', 'Poe').first.must_equal 'Edgar Allen'
|
data/test/bibtex/test_value.rb
CHANGED
@@ -16,7 +16,7 @@ module BibTeX
|
|
16
16
|
assert_equal Value.new('value'), Value.create('value')
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
describe "when empty" do
|
21
21
|
it "should be equal to an empty string" do
|
22
22
|
assert Value.new == ''
|
@@ -31,7 +31,7 @@ module BibTeX
|
|
31
31
|
assert Value.new('') =~ //
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
describe "#join" do
|
36
36
|
it "should return empty string when empty" do
|
37
37
|
assert_equal '', Value.new.join.to_s
|
@@ -61,7 +61,17 @@ module BibTeX
|
|
61
61
|
assert_equal value, value.join
|
62
62
|
end
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
|
+
describe '#merge!' do
|
66
|
+
it 'merges two strings by combining them' do
|
67
|
+
assert_equal '"foo" # "bar"', Value.new('foo').merge!(Value.new('bar')).to_s
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'does not duplicate existing tokens' do
|
71
|
+
assert_equal 'foo', Value.new('foo').merge!(Value.new('foo')).to_s
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
65
75
|
describe "#to_s" do
|
66
76
|
it "should return the string if atomic" do
|
67
77
|
assert_equal 'foo bar', Value.new('foo bar').to_s
|
@@ -80,7 +90,7 @@ module BibTeX
|
|
80
90
|
assert_equal '"foo" # bar', Value.new('foo', :bar).to_s
|
81
91
|
end
|
82
92
|
end
|
83
|
-
|
93
|
+
|
84
94
|
describe "conversions" do
|
85
95
|
before do
|
86
96
|
class Upcase < BibTeX::Filter
|
@@ -90,12 +100,12 @@ module BibTeX
|
|
90
100
|
end
|
91
101
|
@values = [Value.new('foo'), Value.new('foo', :bar)]
|
92
102
|
end
|
93
|
-
|
103
|
+
|
94
104
|
describe "#convert" do
|
95
105
|
it "converts the value when given a filter instance" do
|
96
106
|
assert_equal ['FOO', '"FOO" # bar'], @values.map { |v| v.convert(Upcase.instance).to_s }
|
97
107
|
end
|
98
|
-
|
108
|
+
|
99
109
|
it "converts the value when given a filter class" do
|
100
110
|
assert_equal ['FOO', '"FOO" # bar'], @values.map { |v| v.convert(Upcase).to_s }
|
101
111
|
end
|
@@ -108,7 +118,7 @@ module BibTeX
|
|
108
118
|
it "converts the value when using a ghost method" do
|
109
119
|
assert_equal ['FOO', '"FOO" # bar'], @values.map { |v| v.convert_upcase.to_s }
|
110
120
|
end
|
111
|
-
|
121
|
+
|
112
122
|
it "does not alter the value when using a filter name" do
|
113
123
|
@values.each { |v| v.convert(:upcase) }
|
114
124
|
assert_equal ['foo', '"foo" # bar'], @values.map(&:to_s)
|
@@ -119,12 +129,12 @@ module BibTeX
|
|
119
129
|
assert_equal ['foo', '"foo" # bar'], @values.map(&:to_s)
|
120
130
|
end
|
121
131
|
end
|
122
|
-
|
132
|
+
|
123
133
|
describe "#convert!" do
|
124
134
|
it "converts the value when given the name of a filter" do
|
125
135
|
assert_equal ['FOO', '"FOO" # bar'], @values.map { |v| v.convert!(:upcase).to_s }
|
126
136
|
end
|
127
|
-
|
137
|
+
|
128
138
|
it "alters the value when given the name of a filter" do
|
129
139
|
@values.each { |v| v.convert!(:upcase) }
|
130
140
|
assert_equal ['FOO', '"FOO" # bar'], @values.map(&:to_s)
|
@@ -134,9 +144,9 @@ module BibTeX
|
|
134
144
|
@values.each { |v| v.convert_upcase! }
|
135
145
|
assert_equal ['FOO', '"FOO" # bar'], @values.map(&:to_s)
|
136
146
|
end
|
137
|
-
|
147
|
+
|
138
148
|
end
|
139
|
-
|
149
|
+
|
140
150
|
describe "#to_s" do
|
141
151
|
it 'accepts a :filter option and convert the values accordingly without changing the value' do
|
142
152
|
assert_equal '"FOO" # bar', @values[1].to_s(:filter => :upcase)
|
@@ -144,6 +154,6 @@ module BibTeX
|
|
144
154
|
end
|
145
155
|
end
|
146
156
|
end
|
147
|
-
|
157
|
+
|
148
158
|
end
|
149
159
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bibtex-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: latex-decode
|
@@ -162,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
162
|
version: '0'
|
163
163
|
segments:
|
164
164
|
- 0
|
165
|
-
hash:
|
165
|
+
hash: 3526166777560005
|
166
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
167
|
none: false
|
168
168
|
requirements:
|
@@ -171,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
171
|
version: '0'
|
172
172
|
segments:
|
173
173
|
- 0
|
174
|
-
hash:
|
174
|
+
hash: 3526166777560005
|
175
175
|
requirements: []
|
176
176
|
rubyforge_project:
|
177
177
|
rubygems_version: 1.8.24
|