bibtex-ruby 1.3.6 → 1.3.7
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 +9 -1
- data/Manifest +1 -0
- data/features/names.feature +13 -1
- data/features/step_definitions/name_steps.rb +6 -1
- data/lib/bibtex.rb +1 -1
- data/lib/bibtex/lexer.rb +1 -1
- data/lib/bibtex/name_parser.output +238 -216
- data/lib/bibtex/name_parser.rb +102 -105
- data/lib/bibtex/names.rb +1 -1
- data/lib/bibtex/names.y +14 -16
- data/lib/bibtex/version.rb +1 -1
- data/test/bibtex/test_entry.rb +19 -0
- data/test/bibtex/test_name_parser.rb +25 -0
- data/test/bibtex/test_parser.rb +16 -0
- metadata +5 -3
data/lib/bibtex/name_parser.rb
CHANGED
@@ -11,7 +11,7 @@ require 'strscan'
|
|
11
11
|
module BibTeX
|
12
12
|
class NameParser < Racc::Parser
|
13
13
|
|
14
|
-
module_eval(<<'...end names.y/module_eval...', 'names.y',
|
14
|
+
module_eval(<<'...end names.y/module_eval...', 'names.y', 78)
|
15
15
|
|
16
16
|
def initialize(options = {})
|
17
17
|
self.options.merge!(options)
|
@@ -134,48 +134,54 @@ module_eval(<<'...end names.y/module_eval...', 'names.y', 80)
|
|
134
134
|
##### State transition tables begin ###
|
135
135
|
|
136
136
|
racc_action_table = [
|
137
|
-
-
|
138
|
-
-
|
139
|
-
|
140
|
-
|
141
|
-
33,
|
137
|
+
-15, -27, -15, -29, 27, -28, -15, -27, -27, -29,
|
138
|
+
-15, -28, 36, 24, -27, 34, 33, 35, 21, 19,
|
139
|
+
22, 10, 16, 11, 34, 33, 35, 34, 33, 35,
|
140
|
+
10, 8, 11, 21, 28, 22, 34, 33, 35, 34,
|
141
|
+
33, 35, 10, 8, 11, 21, 19, 22, 38, 23,
|
142
|
+
13, 12 ]
|
142
143
|
|
143
144
|
racc_action_check = [
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
145
|
+
19, 16, 19, 11, 18, 10, 19, 16, 8, 11,
|
146
|
+
8, 10, 26, 12, 8, 32, 32, 32, 6, 6,
|
147
|
+
6, 5, 5, 5, 36, 36, 36, 27, 27, 27,
|
148
|
+
13, 13, 13, 20, 20, 20, 38, 38, 38, 23,
|
149
|
+
23, 23, 0, 0, 0, 15, 15, 15, 30, 7,
|
150
|
+
2, 1 ]
|
149
151
|
|
150
152
|
racc_action_pointer = [
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
nil,
|
153
|
+
39, 51, 44, nil, nil, 18, 15, 47, 8, nil,
|
154
|
+
5, 3, 13, 27, nil, 42, 1, nil, 2, 0,
|
155
|
+
30, nil, nil, 36, nil, nil, 10, 24, nil, nil,
|
156
|
+
46, nil, 12, nil, nil, nil, 21, nil, 33, nil,
|
157
|
+
nil, nil ]
|
155
158
|
|
156
159
|
racc_action_default = [
|
157
|
-
-1, -
|
158
|
-
-
|
159
|
-
-
|
160
|
-
-
|
160
|
+
-1, -30, -2, -3, -5, -16, -30, -30, -12, -19,
|
161
|
+
-21, -22, -30, -30, -6, -30, -12, -20, -8, -13,
|
162
|
+
-16, -21, -22, -25, 42, -4, -7, -25, -14, -9,
|
163
|
+
-17, -23, -26, -27, -28, -29, -25, -10, -25, -24,
|
164
|
+
-11, -18 ]
|
161
165
|
|
162
166
|
racc_goto_table = [
|
163
|
-
17,
|
164
|
-
|
165
|
-
nil, nil,
|
167
|
+
4, 17, 3, 20, 29, 14, 15, 2, 37, 18,
|
168
|
+
41, 1, 20, 4, nil, 25, 17, 40, 26, nil,
|
169
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
170
|
+
nil, nil, 39 ]
|
166
171
|
|
167
172
|
racc_goto_check = [
|
168
|
-
|
169
|
-
|
170
|
-
nil, nil,
|
173
|
+
4, 10, 3, 5, 8, 4, 6, 2, 8, 7,
|
174
|
+
9, 1, 5, 4, nil, 3, 10, 8, 7, nil,
|
175
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
176
|
+
nil, nil, 4 ]
|
171
177
|
|
172
178
|
racc_goto_pointer = [
|
173
|
-
nil,
|
174
|
-
|
179
|
+
nil, 11, 7, 2, 0, -3, 1, 3, -19, -28,
|
180
|
+
-4, nil ]
|
175
181
|
|
176
182
|
racc_goto_default = [
|
177
|
-
nil, nil, nil, nil,
|
178
|
-
|
183
|
+
nil, nil, nil, nil, 31, 5, 6, 7, nil, 30,
|
184
|
+
9, 32 ]
|
179
185
|
|
180
186
|
racc_reduce_table = [
|
181
187
|
0, 0, :racc_error,
|
@@ -186,33 +192,32 @@ racc_reduce_table = [
|
|
186
192
|
1, 11, :_reduce_5,
|
187
193
|
2, 11, :_reduce_6,
|
188
194
|
3, 11, :_reduce_7,
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
1,
|
194
|
-
2,
|
195
|
-
|
195
|
+
2, 11, :_reduce_8,
|
196
|
+
3, 11, :_reduce_9,
|
197
|
+
4, 11, :_reduce_10,
|
198
|
+
5, 11, :_reduce_11,
|
199
|
+
1, 14, :_reduce_12,
|
200
|
+
2, 14, :_reduce_13,
|
201
|
+
3, 14, :_reduce_14,
|
196
202
|
1, 15, :_reduce_15,
|
197
|
-
|
198
|
-
1,
|
199
|
-
|
200
|
-
1,
|
201
|
-
|
202
|
-
1,
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
1,
|
209
|
-
1,
|
210
|
-
1,
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
racc_shift_n = 39
|
203
|
+
1, 15, :_reduce_16,
|
204
|
+
1, 16, :_reduce_17,
|
205
|
+
3, 16, :_reduce_18,
|
206
|
+
1, 13, :_reduce_19,
|
207
|
+
2, 13, :_reduce_20,
|
208
|
+
1, 18, :_reduce_21,
|
209
|
+
1, 18, :_reduce_22,
|
210
|
+
1, 19, :_reduce_23,
|
211
|
+
2, 19, :_reduce_24,
|
212
|
+
0, 17, :_reduce_25,
|
213
|
+
1, 17, :_reduce_26,
|
214
|
+
1, 12, :_reduce_27,
|
215
|
+
1, 12, :_reduce_28,
|
216
|
+
1, 12, :_reduce_29 ]
|
217
|
+
|
218
|
+
racc_reduce_n = 30
|
219
|
+
|
220
|
+
racc_shift_n = 42
|
216
221
|
|
217
222
|
racc_token_table = {
|
218
223
|
false => 0,
|
@@ -257,12 +262,11 @@ Racc_token_to_s_table = [
|
|
257
262
|
"result",
|
258
263
|
"names",
|
259
264
|
"name",
|
260
|
-
"
|
265
|
+
"word",
|
261
266
|
"u_words",
|
262
|
-
"sort",
|
263
|
-
"first",
|
264
267
|
"von",
|
265
|
-
"
|
268
|
+
"last",
|
269
|
+
"first",
|
266
270
|
"opt_words",
|
267
271
|
"u_word",
|
268
272
|
"words" ]
|
@@ -303,154 +307,154 @@ module_eval(<<'.,.,', 'names.y', 35)
|
|
303
307
|
|
304
308
|
module_eval(<<'.,.,', 'names.y', 37)
|
305
309
|
def _reduce_5(val, _values, result)
|
306
|
-
result = Name.new(:
|
310
|
+
result = Name.new(:last => val[0])
|
307
311
|
result
|
308
312
|
end
|
309
313
|
.,.,
|
310
314
|
|
311
315
|
module_eval(<<'.,.,', 'names.y', 38)
|
312
316
|
def _reduce_6(val, _values, result)
|
313
|
-
result = Name.new(:first => val[0], :
|
317
|
+
result = Name.new(:first => val[0], :last => val[1])
|
314
318
|
result
|
315
319
|
end
|
316
320
|
.,.,
|
317
321
|
|
318
322
|
module_eval(<<'.,.,', 'names.y', 39)
|
319
323
|
def _reduce_7(val, _values, result)
|
320
|
-
result = Name.new(:
|
324
|
+
result = Name.new(:first => val[0], :von => val[1], :last => val[2])
|
321
325
|
result
|
322
326
|
end
|
323
327
|
.,.,
|
324
328
|
|
325
|
-
module_eval(<<'.,.,', 'names.y',
|
329
|
+
module_eval(<<'.,.,', 'names.y', 40)
|
326
330
|
def _reduce_8(val, _values, result)
|
327
|
-
result = [
|
331
|
+
result = Name.new(:von => val[0], :last => val[1])
|
328
332
|
result
|
329
333
|
end
|
330
334
|
.,.,
|
331
335
|
|
332
|
-
module_eval(<<'.,.,', 'names.y',
|
336
|
+
module_eval(<<'.,.,', 'names.y', 41)
|
333
337
|
def _reduce_9(val, _values, result)
|
334
|
-
result = [
|
338
|
+
result = Name.new(:last => val[0], :jr => val[2][0], :first => val[2][1])
|
335
339
|
result
|
336
340
|
end
|
337
341
|
.,.,
|
338
342
|
|
339
|
-
module_eval(<<'.,.,', 'names.y',
|
343
|
+
module_eval(<<'.,.,', 'names.y', 42)
|
340
344
|
def _reduce_10(val, _values, result)
|
341
|
-
result = [val[0],val[1]
|
345
|
+
result = Name.new(:von => val[0], :last => val[1], :jr => val[3][0], :first => val[3][1])
|
342
346
|
result
|
343
347
|
end
|
344
348
|
.,.,
|
345
349
|
|
346
|
-
module_eval(<<'.,.,', 'names.y',
|
350
|
+
module_eval(<<'.,.,', 'names.y', 43)
|
347
351
|
def _reduce_11(val, _values, result)
|
348
|
-
result = [val[0],val[1]
|
352
|
+
result = Name.new(:von => val[0,2].join(' '), :last => val[2], :jr => val[4][0], :first => val[4][1])
|
349
353
|
result
|
350
354
|
end
|
351
355
|
.,.,
|
352
356
|
|
353
|
-
module_eval(<<'.,.,', 'names.y',
|
357
|
+
module_eval(<<'.,.,', 'names.y', 45)
|
354
358
|
def _reduce_12(val, _values, result)
|
355
|
-
result =
|
359
|
+
result = val[0]
|
356
360
|
result
|
357
361
|
end
|
358
362
|
.,.,
|
359
363
|
|
360
|
-
module_eval(<<'.,.,', 'names.y',
|
364
|
+
module_eval(<<'.,.,', 'names.y', 46)
|
361
365
|
def _reduce_13(val, _values, result)
|
362
|
-
result =
|
366
|
+
result = val.join(' ')
|
363
367
|
result
|
364
368
|
end
|
365
369
|
.,.,
|
366
370
|
|
367
|
-
module_eval(<<'.,.,', 'names.y',
|
371
|
+
module_eval(<<'.,.,', 'names.y', 47)
|
368
372
|
def _reduce_14(val, _values, result)
|
369
|
-
result =
|
373
|
+
result = val.join(' ')
|
370
374
|
result
|
371
375
|
end
|
372
376
|
.,.,
|
373
377
|
|
374
|
-
module_eval(<<'.,.,', 'names.y',
|
378
|
+
module_eval(<<'.,.,', 'names.y', 49)
|
375
379
|
def _reduce_15(val, _values, result)
|
376
|
-
result =
|
380
|
+
result = val[0]
|
377
381
|
result
|
378
382
|
end
|
379
383
|
.,.,
|
380
384
|
|
381
|
-
module_eval(<<'.,.,', 'names.y',
|
385
|
+
module_eval(<<'.,.,', 'names.y', 50)
|
382
386
|
def _reduce_16(val, _values, result)
|
383
|
-
result =
|
387
|
+
result = val[0]
|
384
388
|
result
|
385
389
|
end
|
386
390
|
.,.,
|
387
391
|
|
388
|
-
module_eval(<<'.,.,', 'names.y',
|
392
|
+
module_eval(<<'.,.,', 'names.y', 52)
|
389
393
|
def _reduce_17(val, _values, result)
|
390
|
-
result = val[0]
|
394
|
+
result = [nil,val[0]]
|
391
395
|
result
|
392
396
|
end
|
393
397
|
.,.,
|
394
398
|
|
395
|
-
module_eval(<<'.,.,', 'names.y',
|
399
|
+
module_eval(<<'.,.,', 'names.y', 53)
|
396
400
|
def _reduce_18(val, _values, result)
|
397
|
-
result = val[0,2]
|
401
|
+
result = [val[0],val[2]]
|
398
402
|
result
|
399
403
|
end
|
400
404
|
.,.,
|
401
405
|
|
402
|
-
module_eval(<<'.,.,', 'names.y',
|
406
|
+
module_eval(<<'.,.,', 'names.y', 55)
|
403
407
|
def _reduce_19(val, _values, result)
|
404
408
|
result = val[0]
|
405
409
|
result
|
406
410
|
end
|
407
411
|
.,.,
|
408
412
|
|
409
|
-
module_eval(<<'.,.,', 'names.y',
|
413
|
+
module_eval(<<'.,.,', 'names.y', 56)
|
410
414
|
def _reduce_20(val, _values, result)
|
411
|
-
result = val[0]
|
415
|
+
result = val[0,2].join(' ')
|
412
416
|
result
|
413
417
|
end
|
414
418
|
.,.,
|
415
419
|
|
416
|
-
module_eval(<<'.,.,', 'names.y',
|
420
|
+
module_eval(<<'.,.,', 'names.y', 58)
|
417
421
|
def _reduce_21(val, _values, result)
|
418
422
|
result = val[0]
|
419
423
|
result
|
420
424
|
end
|
421
425
|
.,.,
|
422
426
|
|
423
|
-
module_eval(<<'.,.,', 'names.y',
|
427
|
+
module_eval(<<'.,.,', 'names.y', 59)
|
424
428
|
def _reduce_22(val, _values, result)
|
425
|
-
result = val[0
|
429
|
+
result = val[0]
|
426
430
|
result
|
427
431
|
end
|
428
432
|
.,.,
|
429
433
|
|
430
434
|
module_eval(<<'.,.,', 'names.y', 61)
|
431
435
|
def _reduce_23(val, _values, result)
|
432
|
-
result = val[0
|
436
|
+
result = val[0]
|
433
437
|
result
|
434
438
|
end
|
435
439
|
.,.,
|
436
440
|
|
437
|
-
module_eval(<<'.,.,', 'names.y',
|
441
|
+
module_eval(<<'.,.,', 'names.y', 62)
|
438
442
|
def _reduce_24(val, _values, result)
|
439
|
-
result = val[0]
|
443
|
+
result = val[0,2].join(' ')
|
440
444
|
result
|
441
445
|
end
|
442
446
|
.,.,
|
443
447
|
|
444
448
|
module_eval(<<'.,.,', 'names.y', 64)
|
445
449
|
def _reduce_25(val, _values, result)
|
446
|
-
result =
|
450
|
+
result = nil
|
447
451
|
result
|
448
452
|
end
|
449
453
|
.,.,
|
450
454
|
|
451
|
-
module_eval(<<'.,.,', 'names.y',
|
455
|
+
module_eval(<<'.,.,', 'names.y', 65)
|
452
456
|
def _reduce_26(val, _values, result)
|
453
|
-
result =
|
457
|
+
result = val[0]
|
454
458
|
result
|
455
459
|
end
|
456
460
|
.,.,
|
@@ -462,27 +466,20 @@ module_eval(<<'.,.,', 'names.y', 67)
|
|
462
466
|
end
|
463
467
|
.,.,
|
464
468
|
|
465
|
-
module_eval(<<'.,.,', 'names.y',
|
469
|
+
module_eval(<<'.,.,', 'names.y', 68)
|
466
470
|
def _reduce_28(val, _values, result)
|
467
471
|
result = val[0]
|
468
472
|
result
|
469
473
|
end
|
470
474
|
.,.,
|
471
475
|
|
472
|
-
module_eval(<<'.,.,', 'names.y',
|
476
|
+
module_eval(<<'.,.,', 'names.y', 69)
|
473
477
|
def _reduce_29(val, _values, result)
|
474
478
|
result = val[0]
|
475
479
|
result
|
476
480
|
end
|
477
481
|
.,.,
|
478
482
|
|
479
|
-
module_eval(<<'.,.,', 'names.y', 71)
|
480
|
-
def _reduce_30(val, _values, result)
|
481
|
-
result = val[0]
|
482
|
-
result
|
483
|
-
end
|
484
|
-
.,.,
|
485
|
-
|
486
483
|
def _reduce_none(val, _values, result)
|
487
484
|
val[0]
|
488
485
|
end
|
data/lib/bibtex/names.rb
CHANGED
@@ -154,7 +154,7 @@ module BibTeX
|
|
154
154
|
hash['family'] = family unless family.nil?
|
155
155
|
hash['given'] = given unless given.nil?
|
156
156
|
hash['suffix'] = suffix unless suffix.nil?
|
157
|
-
hash['dropping-particle'] = prefix unless prefix.nil?
|
157
|
+
hash[options[:particle] || 'dropping-particle'] = prefix unless prefix.nil?
|
158
158
|
hash
|
159
159
|
end
|
160
160
|
|
data/lib/bibtex/names.y
CHANGED
@@ -35,18 +35,20 @@ rule
|
|
35
35
|
names : name { result = [val[0]] }
|
36
36
|
| names AND name { result << val[2] }
|
37
37
|
|
38
|
-
|
39
|
-
| u_words
|
40
|
-
|
|
41
|
-
|
42
|
-
|
43
|
-
|
|
44
|
-
| von
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
38
|
+
name : word { result = Name.new(:last => val[0]) }
|
39
|
+
| u_words word { result = Name.new(:first => val[0], :last => val[1]) }
|
40
|
+
| u_words von last { result = Name.new(:first => val[0], :von => val[1], :last => val[2]) }
|
41
|
+
| von last { result = Name.new(:von => val[0], :last => val[1]) }
|
42
|
+
| last COMMA first { result = Name.new(:last => val[0], :jr => val[2][0], :first => val[2][1]) }
|
43
|
+
| von last COMMA first { result = Name.new(:von => val[0], :last => val[1], :jr => val[3][0], :first => val[3][1]) }
|
44
|
+
| u_words von last COMMA first { result = Name.new(:von => val[0,2].join(' '), :last => val[2], :jr => val[4][0], :first => val[4][1]) }
|
45
|
+
|
46
|
+
von : LWORD { result = val[0] }
|
47
|
+
| von LWORD { result = val.join(' ') }
|
48
|
+
| von u_words LWORD { result = val.join(' ') }
|
49
|
+
|
50
|
+
last : LWORD { result = val[0] }
|
51
|
+
| u_words { result = val[0] }
|
50
52
|
|
51
53
|
first : opt_words { result = [nil,val[0]] }
|
52
54
|
| opt_words COMMA opt_words { result = [val[0],val[2]] }
|
@@ -57,10 +59,6 @@ rule
|
|
57
59
|
u_word : UWORD { result = val[0] }
|
58
60
|
| PWORD { result = val[0] }
|
59
61
|
|
60
|
-
von : LWORD { result = val[0] }
|
61
|
-
| von u_words LWORD { result = val[0,3].join(' ') }
|
62
|
-
| von LWORD { result = val[0,2].join(' ') }
|
63
|
-
|
64
62
|
words : word { result = val[0] }
|
65
63
|
| words word { result = val[0,2].join(' ') }
|
66
64
|
|
data/lib/bibtex/version.rb
CHANGED
data/test/bibtex/test_entry.rb
CHANGED
@@ -73,6 +73,25 @@ module BibTeX
|
|
73
73
|
assert_equal 'Melville', e['author'][0]['family']
|
74
74
|
end
|
75
75
|
end
|
76
|
+
|
77
|
+
context 'citeproc export' do
|
78
|
+
setup do
|
79
|
+
@entry = Entry.new do |e|
|
80
|
+
e.type = :book
|
81
|
+
e.key = :key
|
82
|
+
e.author = 'van Beethoven, Ludwig'
|
83
|
+
e.parse_names
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
should 'use dropping-particle by default' do
|
88
|
+
assert_equal 'van', @entry.to_citeproc['author'][0]['dropping-particle']
|
89
|
+
end
|
90
|
+
|
91
|
+
should 'accept option to use non-dropping-particle' do
|
92
|
+
assert_equal 'van', @entry.to_citeproc(:particle => 'non-dropping-particle')['author'][0]['non-dropping-particle']
|
93
|
+
end
|
94
|
+
end
|
76
95
|
|
77
96
|
def test_simple
|
78
97
|
bib = BibTeX::Bibliography.open(Test.fixtures(:entry), :debug => false)
|