eye-of-newt 0.0.11 → 0.0.15
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/eye_of_newt.gemspec +7 -7
- data/lib/eye_of_newt/parser.rb +44 -44
- data/lib/eye_of_newt/tokenizer.rb +1 -0
- data/lib/eye_of_newt/units.rb +6 -1
- data/lib/eye_of_newt/version.rb +1 -1
- data/test/examples.txt +1 -0
- data/test/eye_of_newt_test.rb +11 -3
- metadata +32 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 273010052f34b67d89c3543a3b1111779d7fff441e75fc7d09a0ddcb4de27fcb
|
4
|
+
data.tar.gz: 1c273f1b42b1d555661f22548d557f00798f3f79d8fb1127af65bcd496ffe34d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b919b9775ce56dc136c4224a67d9bedad3aea134ccd1c2beb3438daad025ee5af8ac1db51b0d02d015da603a15a5a1404c3615fba0a96019f1a000f27bc80271
|
7
|
+
data.tar.gz: '09576ffd8e91cadbb26cdc82d43b7ed2e0d03f0cb5c7d278c0b53739474e57259a86df4bc543be168416b0a39c34acf1faf95e96bae9e3cb5317f9d2e275386a'
|
data/eye_of_newt.gemspec
CHANGED
@@ -18,12 +18,12 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "activesupport", "
|
21
|
+
spec.add_dependency "activesupport", ">= 5"
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler"
|
24
|
-
spec.add_development_dependency "rake"
|
25
|
-
spec.add_development_dependency "racc"
|
26
|
-
spec.add_development_dependency "pry"
|
27
|
-
spec.add_development_dependency "pry-byebug"
|
28
|
-
spec.add_development_dependency "pry-rescue"
|
23
|
+
spec.add_development_dependency "bundler"
|
24
|
+
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "racc"
|
26
|
+
spec.add_development_dependency "pry"
|
27
|
+
spec.add_development_dependency "pry-byebug"
|
28
|
+
spec.add_development_dependency "pry-rescue"
|
29
29
|
end
|
data/lib/eye_of_newt/parser.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# DO NOT MODIFY!!!!
|
3
|
-
# This file is automatically generated by Racc 1.
|
4
|
-
# from Racc
|
3
|
+
# This file is automatically generated by Racc 1.6.0
|
4
|
+
# from Racc grammar file "".
|
5
5
|
#
|
6
6
|
|
7
7
|
require 'racc/parser.rb'
|
@@ -37,28 +37,28 @@ module EyeOfNewt
|
|
37
37
|
##### State transition tables begin ###
|
38
38
|
|
39
39
|
racc_action_table = [
|
40
|
-
-47,
|
41
|
-
13, -47, 14, 19,
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
-47, 22, 19, 21, 12, 32, 20, -47, 11, -47,
|
41
|
+
13, -47, 14, 19, 12, 12, 35, 20, 38, 24,
|
42
|
+
36, 25, 14, 19, 19, 39, 40, 20, 20, 24,
|
43
|
+
24, 25, 25, 29, -35, 30, 31, 12, 42, 58,
|
44
|
+
46, 47, 30, 31, 30, 31, 44, 48, 31, 42,
|
45
|
+
42, 59, 60, 21, 21, 63, 46, 64, 65, 31,
|
46
46
|
31, 68, 69 ]
|
47
47
|
|
48
48
|
racc_action_check = [
|
49
|
-
11,
|
50
|
-
0, 11, 0, 2,
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
49
|
+
11, 1, 0, 0, 0, 4, 0, 11, 0, 11,
|
50
|
+
0, 11, 0, 2, 6, 7, 6, 2, 8, 2,
|
51
|
+
6, 2, 6, 18, 32, 9, 9, 18, 32, 18,
|
52
|
+
32, 18, 32, 3, 13, 3, 3, 33, 14, 33,
|
53
|
+
21, 21, 23, 23, 26, 26, 15, 22, 27, 30,
|
54
|
+
31, 34, 37, 39, 40, 41, 44, 46, 47, 49,
|
55
55
|
51, 55, 57 ]
|
56
56
|
|
57
57
|
racc_action_pointer = [
|
58
|
-
0,
|
59
|
-
nil, 0, nil,
|
60
|
-
nil,
|
61
|
-
|
58
|
+
0, 1, 11, 24, -2, nil, 10, 11, 12, 11,
|
59
|
+
nil, 0, nil, 30, 33, 43, nil, nil, 21, nil,
|
60
|
+
nil, 24, 47, 31, nil, nil, 33, 36, nil, nil,
|
61
|
+
44, 45, 22, 33, 45, nil, nil, 46, nil, 50,
|
62
62
|
51, 42, nil, nil, 40, nil, 54, 55, nil, 47,
|
63
63
|
nil, 48, nil, nil, nil, 48, nil, 56, nil, nil,
|
64
64
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ]
|
@@ -73,22 +73,22 @@ racc_action_default = [
|
|
73
73
|
-24, -37, -38, -36, -51, -52, -1, -3, -34, -16 ]
|
74
74
|
|
75
75
|
racc_goto_table = [
|
76
|
-
28, 9, 8,
|
77
|
-
41,
|
76
|
+
28, 9, 8, 1, 3, 27, 23, 7, 34, 37,
|
77
|
+
41, 2, 26, 33, 45, 6, 10, 43, nil, nil,
|
78
78
|
50, nil, nil, 52, 53, 49, 54, 55, 51, nil,
|
79
79
|
nil, nil, nil, nil, nil, 57, 56, nil, nil, nil,
|
80
80
|
61, 62, nil, nil, nil, nil, 66, nil, 67 ]
|
81
81
|
|
82
82
|
racc_goto_check = [
|
83
|
-
5, 12, 11,
|
84
|
-
14,
|
83
|
+
5, 12, 11, 1, 3, 4, 3, 10, 11, 11,
|
84
|
+
14, 2, 6, 10, 8, 9, 13, 16, nil, nil,
|
85
85
|
5, nil, nil, 5, 5, 4, 14, 14, 4, nil,
|
86
86
|
nil, nil, nil, nil, nil, 11, 3, nil, nil, nil,
|
87
87
|
12, 12, nil, nil, nil, nil, 5, nil, 5 ]
|
88
88
|
|
89
89
|
racc_goto_pointer = [
|
90
|
-
nil,
|
91
|
-
7, 2, 1,
|
90
|
+
nil, 3, 11, 4, 2, -3, 9, nil, -4, 15,
|
91
|
+
7, 2, 1, 16, -4, nil, 2, nil, nil ]
|
92
92
|
|
93
93
|
racc_goto_default = [
|
94
94
|
nil, nil, nil, nil, nil, nil, nil, 4, 5, nil,
|
@@ -169,7 +169,7 @@ racc_token_table = {
|
|
169
169
|
"(" => 12,
|
170
170
|
")" => 13,
|
171
171
|
"-" => 14,
|
172
|
-
"\
|
172
|
+
"\xE2\x80\x93" => 15,
|
173
173
|
"/" => 16,
|
174
174
|
"." => 17 }
|
175
175
|
|
@@ -209,7 +209,7 @@ Racc_token_to_s_table = [
|
|
209
209
|
"\"(\"",
|
210
210
|
"\")\"",
|
211
211
|
"\"-\"",
|
212
|
-
"\"\
|
212
|
+
"\"\\xE2\\x80\\x93\"",
|
213
213
|
"\"/\"",
|
214
214
|
"\".\"",
|
215
215
|
"$start",
|
@@ -267,7 +267,7 @@ Racc_debug_parser = false
|
|
267
267
|
# reduce 14 omitted
|
268
268
|
|
269
269
|
def _reduce_15(val, _values, result)
|
270
|
-
@ingredient.names << result
|
270
|
+
@ingredient.names << result
|
271
271
|
result
|
272
272
|
end
|
273
273
|
|
@@ -296,64 +296,64 @@ end
|
|
296
296
|
# reduce 27 omitted
|
297
297
|
|
298
298
|
def _reduce_28(val, _values, result)
|
299
|
-
@ingredient.amount = result
|
299
|
+
@ingredient.amount = result
|
300
300
|
result
|
301
301
|
end
|
302
302
|
|
303
303
|
def _reduce_29(val, _values, result)
|
304
|
-
@ingredient.amount = result
|
304
|
+
@ingredient.amount = result
|
305
305
|
result
|
306
306
|
end
|
307
307
|
|
308
308
|
def _reduce_30(val, _values, result)
|
309
|
-
@ingredient.amount = 1
|
309
|
+
@ingredient.amount = 1
|
310
310
|
result
|
311
311
|
end
|
312
312
|
|
313
313
|
def _reduce_31(val, _values, result)
|
314
|
-
@ingredient.unit = to_unit(result)
|
314
|
+
@ingredient.unit = to_unit(result)
|
315
315
|
result
|
316
316
|
end
|
317
317
|
|
318
318
|
def _reduce_32(val, _values, result)
|
319
|
-
@ingredient.unit = to_unit(result)
|
319
|
+
@ingredient.unit = to_unit(result)
|
320
320
|
result
|
321
321
|
end
|
322
322
|
|
323
323
|
def _reduce_33(val, _values, result)
|
324
|
-
@ingredient.style = val[1]
|
324
|
+
@ingredient.style = val[1]
|
325
325
|
result
|
326
326
|
end
|
327
327
|
|
328
328
|
def _reduce_34(val, _values, result)
|
329
|
-
@ingredient.note = val[1]
|
329
|
+
@ingredient.note = val[1]
|
330
330
|
result
|
331
331
|
end
|
332
332
|
|
333
333
|
def _reduce_35(val, _values, result)
|
334
|
-
@ingredient.unit_modifier = val[0]
|
334
|
+
@ingredient.unit_modifier = val[0]
|
335
335
|
result
|
336
336
|
end
|
337
337
|
|
338
338
|
def _reduce_36(val, _values, result)
|
339
|
-
@ingredient.unit_modifier = val[1]
|
339
|
+
@ingredient.unit_modifier = val[1]
|
340
340
|
result
|
341
341
|
end
|
342
342
|
|
343
343
|
def _reduce_37(val, _values, result)
|
344
|
-
result = [val[0], val[2]]
|
344
|
+
result = [val[0], val[2]]
|
345
345
|
result
|
346
346
|
end
|
347
347
|
|
348
348
|
def _reduce_38(val, _values, result)
|
349
|
-
result = [val[0], val[2]]
|
349
|
+
result = [val[0], val[2]]
|
350
350
|
result
|
351
351
|
end
|
352
352
|
|
353
353
|
# reduce 39 omitted
|
354
354
|
|
355
355
|
def _reduce_40(val, _values, result)
|
356
|
-
result = val[0] + val[1]
|
356
|
+
result = val[0] + val[1]
|
357
357
|
result
|
358
358
|
end
|
359
359
|
|
@@ -362,7 +362,7 @@ end
|
|
362
362
|
# reduce 42 omitted
|
363
363
|
|
364
364
|
def _reduce_43(val, _values, result)
|
365
|
-
result = val.join(' ')
|
365
|
+
result = val.join(' ')
|
366
366
|
result
|
367
367
|
end
|
368
368
|
|
@@ -379,17 +379,17 @@ end
|
|
379
379
|
# reduce 49 omitted
|
380
380
|
|
381
381
|
def _reduce_50(val, _values, result)
|
382
|
-
result = val[0].to_i
|
382
|
+
result = val[0].to_i
|
383
383
|
result
|
384
384
|
end
|
385
385
|
|
386
386
|
def _reduce_51(val, _values, result)
|
387
|
-
result = val[0].to_f / val[2].to_f
|
387
|
+
result = val[0].to_f / val[2].to_f
|
388
388
|
result
|
389
389
|
end
|
390
390
|
|
391
391
|
def _reduce_52(val, _values, result)
|
392
|
-
result = val.join.to_f
|
392
|
+
result = val.join.to_f
|
393
393
|
result
|
394
394
|
end
|
395
395
|
|
@@ -398,4 +398,4 @@ def _reduce_none(val, _values, result)
|
|
398
398
|
end
|
399
399
|
|
400
400
|
end # class Parser
|
401
|
-
|
401
|
+
end # module EyeOfNewt
|
data/lib/eye_of_newt/units.rb
CHANGED
@@ -56,7 +56,7 @@ module EyeOfNewt
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def setup(&block)
|
59
|
-
instance_eval
|
59
|
+
instance_eval(&block)
|
60
60
|
self
|
61
61
|
end
|
62
62
|
|
@@ -84,6 +84,9 @@ module EyeOfNewt
|
|
84
84
|
add_unit "g", "g.", "gr", "gr.", "gram", "grams"
|
85
85
|
add_unit "mg", "mg", "mg.", "milligram", "milligrams"
|
86
86
|
|
87
|
+
# english distance units
|
88
|
+
add_unit "inch", "inches"
|
89
|
+
|
87
90
|
# nonstandard units
|
88
91
|
add_unit "pinches", "pinch"
|
89
92
|
add_unit "dashes", "dash"
|
@@ -95,6 +98,7 @@ module EyeOfNewt
|
|
95
98
|
add_unit "cans", "can"
|
96
99
|
add_unit "packages", "package"
|
97
100
|
add_unit "containers", "container"
|
101
|
+
add_unit "sticks", "stick"
|
98
102
|
|
99
103
|
add_unit_modifier "big"
|
100
104
|
add_unit_modifier "large"
|
@@ -102,6 +106,7 @@ module EyeOfNewt
|
|
102
106
|
add_unit_modifier "small"
|
103
107
|
add_unit_modifier "heaping"
|
104
108
|
add_unit_modifier "level"
|
109
|
+
add_unit_modifier "scant"
|
105
110
|
|
106
111
|
# unquantified units
|
107
112
|
add_unit "to taste", unquantified: true
|
data/lib/eye_of_newt/version.rb
CHANGED
data/test/examples.txt
CHANGED
@@ -29,3 +29,4 @@ heaping tablespoon of sugar | sugar | 1 | tbsp | | | heaping
|
|
29
29
|
1 (46 oz) can tomato juice | tomato juice | 1 | cans | | | 46 oz
|
30
30
|
kale or chard or spinach | kale,chard,spinach | 1 | units
|
31
31
|
kale OR chard OR spinach | kale,chard,spinach | 1 | units
|
32
|
+
1 inch ginger | ginger | 1 | inch
|
data/test/eye_of_newt_test.rb
CHANGED
@@ -31,9 +31,9 @@ class EyeOfNewtTest < ActiveSupport::TestCase
|
|
31
31
|
assert_equal names, ingr.names, %Q{incorrect names}
|
32
32
|
assert_equal amount, ingr.amount, %Q{incorrect amount}
|
33
33
|
assert_equal unit, ingr.unit, %Q{incorrect unit}
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
assert_equal_or_nil style, ingr.style, %Q{incorrect style}
|
35
|
+
assert_equal_or_nil note, ingr.note, %Q{incorrect note}
|
36
|
+
assert_equal_or_nil unit_modifier, ingr.unit_modifier, %Q{incorrect unit modifier}
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -42,4 +42,12 @@ class EyeOfNewtTest < ActiveSupport::TestCase
|
|
42
42
|
EyeOfNewt.parse("1")
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
46
|
+
def assert_equal_or_nil(expected, actual, message)
|
47
|
+
if expected
|
48
|
+
assert_equal expected, actual, message
|
49
|
+
else
|
50
|
+
assert_nil actual, message
|
51
|
+
end
|
52
|
+
end
|
45
53
|
end
|
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eye-of-newt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter McCracken
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: racc
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry-byebug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: pry-rescue
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '0'
|
111
111
|
description: Parses natural ingredients (e.g. "1 1/2 pounds of potatoes, peeled")
|
112
112
|
into usable parts.
|
113
113
|
email:
|
@@ -145,7 +145,7 @@ homepage: http://github.com/peterjm/eye_of_newt
|
|
145
145
|
licenses:
|
146
146
|
- MIT
|
147
147
|
metadata: {}
|
148
|
-
post_install_message:
|
148
|
+
post_install_message:
|
149
149
|
rdoc_options: []
|
150
150
|
require_paths:
|
151
151
|
- lib
|
@@ -160,9 +160,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: '0'
|
162
162
|
requirements: []
|
163
|
-
|
164
|
-
|
165
|
-
signing_key:
|
163
|
+
rubygems_version: 3.2.20
|
164
|
+
signing_key:
|
166
165
|
specification_version: 4
|
167
166
|
summary: Natural language ingredient parser
|
168
167
|
test_files:
|