eye-of-newt 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a87891dfebdd9714906ffb7c01a29dde8fde509b
4
- data.tar.gz: 4e45fca82f3238bdcdaea08abbdcb592adcbbc00
3
+ metadata.gz: fa8794a5cef2066049431c1e0e171421b9f5fcca
4
+ data.tar.gz: 378020227175a0472e55f4ecb111c403b53549d2
5
5
  SHA512:
6
- metadata.gz: d99d9efe31f68381ef46217d076c9cb1dc8c757e2abeb8df6265e7700a4d6144e28744ff13cff2e578f23344a68cb70e9fafde517e46d888b16d570584325db3
7
- data.tar.gz: fe3c7f03519771454efaa7ad716fcdaeab9ff63362d6925da6810d19591d016a34ee88ef9af4a112222628299734783ad068a3f19971be355895d7ce8c8d3df4
6
+ metadata.gz: d9284a0c28614d6a8ef5a20c040879ed0a5db9f162ea6065556e3a25e68a91fb80d99ec2929cc4425b3d7ab1fbb0c8cf54981fccb322f8a3027ec033691d9bc0
7
+ data.tar.gz: f7b2184eb2a7bf627e7e6f9324a00c9f0a4ee453b9ecee3e452968b47c99ad5814aef31ace40fb2aa72a0b515b038fb8d6f8579768aff68794de95d6c8c1d7b8
@@ -32,69 +32,75 @@ module EyeOfNewt
32
32
  ##### State transition tables begin ###
33
33
 
34
34
  racc_action_table = [
35
- 9, 9, 10, 17, 18, 17, 24, 9, 20, 11,
36
- 23, 14, 14, 9, 17, 28, 9, 30, 31 ]
35
+ -19, 11, 15, 25, 14, 13, 11, -19, 11, 14,
36
+ 13, 14, 13, 11, 23, 14, 14, 13, 27, 28,
37
+ 20, 29, 20, 16, 14, 27, 33, 34 ]
37
38
 
38
39
  racc_action_check = [
39
- 8, 0, 0, 8, 5, 5, 11, 2, 6, 1,
40
- 10, 3, 12, 14, 15, 20, 21, 23, 28 ]
40
+ 9, 0, 0, 6, 0, 0, 2, 9, 20, 2,
41
+ 2, 20, 20, 10, 5, 5, 10, 10, 15, 15,
42
+ 3, 16, 17, 1, 21, 25, 27, 28 ]
41
43
 
42
44
  racc_action_pointer = [
43
- -1, 9, 5, 5, nil, 0, 5, nil, -2, nil,
44
- 2, 6, 6, nil, 11, 9, nil, nil, nil, nil,
45
- 8, 14, nil, 14, nil, nil, nil, nil, 15, nil,
46
- nil, nil ]
45
+ -1, 23, 4, 13, nil, 10, 0, nil, nil, 0,
46
+ 11, nil, nil, nil, nil, 10, 21, 15, nil, nil,
47
+ 6, 19, nil, nil, nil, 17, nil, 23, 24, nil,
48
+ nil, nil, nil, nil, nil ]
47
49
 
48
50
  racc_action_default = [
49
- -23, -23, -23, -4, -5, -9, -10, -12, -16, -18,
50
- -20, -23, -2, -3, -23, -7, -8, -17, -19, -11,
51
- -23, -23, -15, -23, 32, -1, -13, -6, -23, -14,
52
- -22, -21 ]
51
+ -27, -27, -27, -4, -5, -9, -10, -12, -13, -14,
52
+ -17, -18, -20, -21, -22, -24, -27, -2, -19, -3,
53
+ -27, -7, -8, -23, -11, -27, -16, -27, -27, 35,
54
+ -1, -15, -6, -25, -26 ]
53
55
 
54
56
  racc_goto_table = [
55
- 22, 16, 5, 13, 21, 3, 26, 12, 1, 15,
56
- 2, 27, 25, 29, 6, 19, 7 ]
57
+ 22, 19, 26, 7, 3, 21, 17, 5, 1, 24,
58
+ 6, 2, 31, 8, 9, 30, 32 ]
57
59
 
58
60
  racc_goto_check = [
59
- 5, 8, 6, 4, 8, 3, 5, 3, 1, 7,
60
- 2, 8, 4, 5, 9, 10, 11 ]
61
+ 8, 4, 5, 10, 3, 7, 3, 6, 1, 10,
62
+ 9, 2, 5, 11, 12, 4, 8 ]
61
63
 
62
64
  racc_goto_pointer = [
63
- nil, 8, 10, 5, 0, -8, 2, 4, -4, 14,
64
- 9, 16, nil ]
65
+ nil, 8, 11, 4, -2, -8, 7, 0, -5, 10,
66
+ 3, 13, 14, nil ]
65
67
 
66
68
  racc_goto_default = [
67
- nil, nil, nil, nil, nil, 4, nil, nil, nil, nil,
68
- nil, nil, 8 ]
69
+ nil, nil, nil, nil, nil, 4, nil, nil, 12, nil,
70
+ nil, nil, 18, 10 ]
69
71
 
70
72
  racc_reduce_table = [
71
73
  0, 0, :racc_error,
72
- 3, 10, :_reduce_none,
73
- 2, 10, :_reduce_none,
74
- 2, 10, :_reduce_none,
75
- 1, 10, :_reduce_none,
76
- 1, 12, :_reduce_5,
77
74
  3, 11, :_reduce_none,
78
75
  2, 11, :_reduce_none,
79
76
  2, 11, :_reduce_none,
80
77
  1, 11, :_reduce_none,
81
- 1, 15, :_reduce_10,
82
- 2, 15, :_reduce_11,
83
- 1, 15, :_reduce_12,
84
- 2, 13, :_reduce_13,
85
- 3, 14, :_reduce_14,
78
+ 1, 13, :_reduce_5,
79
+ 3, 12, :_reduce_none,
80
+ 2, 12, :_reduce_none,
81
+ 2, 12, :_reduce_none,
82
+ 1, 12, :_reduce_none,
83
+ 1, 16, :_reduce_10,
84
+ 2, 16, :_reduce_11,
85
+ 1, 16, :_reduce_12,
86
+ 1, 16, :_reduce_13,
87
+ 1, 16, :_reduce_14,
86
88
  2, 14, :_reduce_15,
87
- 1, 14, :_reduce_none,
88
- 1, 17, :_reduce_none,
89
- 1, 21, :_reduce_none,
90
- 1, 16, :_reduce_19,
91
- 1, 18, :_reduce_20,
92
- 3, 19, :_reduce_21,
93
- 3, 20, :_reduce_22 ]
94
-
95
- racc_reduce_n = 23
96
-
97
- racc_shift_n = 32
89
+ 2, 15, :_reduce_16,
90
+ 1, 15, :_reduce_none,
91
+ 1, 23, :_reduce_none,
92
+ 1, 23, :_reduce_none,
93
+ 1, 23, :_reduce_none,
94
+ 1, 22, :_reduce_none,
95
+ 1, 18, :_reduce_none,
96
+ 1, 17, :_reduce_23,
97
+ 1, 19, :_reduce_24,
98
+ 3, 20, :_reduce_25,
99
+ 3, 21, :_reduce_26 ]
100
+
101
+ racc_reduce_n = 27
102
+
103
+ racc_shift_n = 35
98
104
 
99
105
  racc_token_table = {
100
106
  false => 0,
@@ -103,11 +109,12 @@ racc_token_table = {
103
109
  :NUMBER => 3,
104
110
  :UNIT => 4,
105
111
  :OF => 5,
106
- "," => 6,
107
- "/" => 7,
108
- "." => 8 }
112
+ :A => 6,
113
+ "," => 7,
114
+ "/" => 8,
115
+ "." => 9 }
109
116
 
110
- racc_nt_base = 9
117
+ racc_nt_base = 10
111
118
 
112
119
  racc_use_result_var = true
113
120
 
@@ -134,6 +141,7 @@ Racc_token_to_s_table = [
134
141
  "NUMBER",
135
142
  "UNIT",
136
143
  "OF",
144
+ "A",
137
145
  "\",\"",
138
146
  "\"/\"",
139
147
  "\".\"",
@@ -149,6 +157,7 @@ Racc_token_to_s_table = [
149
157
  "number",
150
158
  "fraction",
151
159
  "decimal",
160
+ "a",
152
161
  "word" ]
153
162
 
154
163
  Racc_debug_parser = false
@@ -194,42 +203,53 @@ def _reduce_12(val, _values, result)
194
203
  end
195
204
 
196
205
  def _reduce_13(val, _values, result)
197
- @ingredient.style = val[1]
206
+ @ingredient.quantity = result
198
207
  result
199
208
  end
200
209
 
201
210
  def _reduce_14(val, _values, result)
202
- result = val.join(' ')
211
+ @ingredient.quantity = 1
203
212
  result
204
213
  end
205
214
 
206
215
  def _reduce_15(val, _values, result)
207
- result = val.join(' ')
216
+ @ingredient.style = val[1]
208
217
  result
209
218
  end
210
219
 
211
- # reduce 16 omitted
220
+ def _reduce_16(val, _values, result)
221
+ result = val.join(' ')
222
+ result
223
+ end
212
224
 
213
225
  # reduce 17 omitted
214
226
 
215
227
  # reduce 18 omitted
216
228
 
217
- def _reduce_19(val, _values, result)
229
+ # reduce 19 omitted
230
+
231
+ # reduce 20 omitted
232
+
233
+ # reduce 21 omitted
234
+
235
+ # reduce 22 omitted
236
+
237
+ def _reduce_23(val, _values, result)
218
238
  @ingredient.unit = to_unit(result)
219
239
  result
220
240
  end
221
241
 
222
- def _reduce_20(val, _values, result)
242
+ def _reduce_24(val, _values, result)
223
243
  result = val[0].to_i
224
244
  result
225
245
  end
226
246
 
227
- def _reduce_21(val, _values, result)
247
+ def _reduce_25(val, _values, result)
228
248
  result = val[0].to_f / val[2].to_f
229
249
  result
230
250
  end
231
251
 
232
- def _reduce_22(val, _values, result)
252
+ def _reduce_26(val, _values, result)
233
253
  result = val.join.to_f
234
254
  result
235
255
  end
@@ -1,5 +1,5 @@
1
1
  class EyeOfNewt::Parser
2
- token WORD NUMBER UNIT OF
2
+ token WORD NUMBER UNIT OF A
3
3
  rule
4
4
  ingredient
5
5
  : quantity ingredient_name style
@@ -19,16 +19,18 @@ rule
19
19
  amount
20
20
  : number { @ingredient.quantity = result }
21
21
  | number fraction { @ingredient.quantity = val[0] + val[1] }
22
+ | fraction { @ingredient.quantity = result }
22
23
  | decimal { @ingredient.quantity = result }
24
+ | a { @ingredient.quantity = 1 }
23
25
  ;
24
26
  style : ',' words { @ingredient.style = val[1] } ;
25
27
  words
26
- : word of words { result = val.join(' ') }
27
- | word words { result = val.join(' ') }
28
+ : word words { result = val.join(' ') }
28
29
  | word
29
30
  ;
31
+ word : WORD | a | of ;
32
+ a : A ;
30
33
  of : OF ;
31
- word : WORD ;
32
34
  unit : UNIT { @ingredient.unit = to_unit(result) } ;
33
35
  number : NUMBER { result = val[0].to_i } ;
34
36
  fraction : NUMBER '/' NUMBER { result = val[0].to_f / val[2].to_f } ;
@@ -9,6 +9,7 @@ module EyeOfNewt
9
9
  WORD = /[\w-]+/
10
10
  NUMBER = /\d+/
11
11
  OF = /of/
12
+ A = /an?/
12
13
 
13
14
  def initialize(string, units=Unit.all)
14
15
  @units = units
@@ -25,6 +26,8 @@ module EyeOfNewt
25
26
  [:NUMBER, text]
26
27
  when text = @ss.scan(/#{OF}\b/)
27
28
  [:OF, text]
29
+ when text = @ss.scan(/#{A}\b/)
30
+ [:A, text]
28
31
  when text = @ss.scan(/#{unit_matcher}\b/)
29
32
  [:UNIT, text]
30
33
  when text = @ss.scan(/#{WORD}\b/)
@@ -1,3 +1,3 @@
1
1
  module EyeOfNewt
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/script/console ADDED
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ irb -Ilib -reye_of_newt
data/test/examples.txt CHANGED
@@ -5,11 +5,13 @@ tomatoes | tomatoes | 1 | units
5
5
  2 cups flour | flour | 2 | cups
6
6
  1 cup all-purpose flour | all-purpose flour | 1 | cups
7
7
  1 1/2 cups all-purpose flour | all-purpose flour | 1.5 | cups
8
+ 1/2 cups all-purpose flour | all-purpose flour | .5 | cups
8
9
  1.5 cups tomatoes | tomatoes | 1.5 | cups
9
10
  1 tomato, diced | tomato | 1 | units | diced
10
11
  1 onion, finely chopped | onion | 1 | units | finely chopped
11
12
  1 cup of flour | flour | 1 | cups
12
13
  1 teaspoon of cream of tartar | cream of tartar | 1 | teaspoons
14
+ a pinch of salt | salt | 1 | pinches
13
15
 
14
16
  #1 (46 fluid ounce) can tomato juice' => ["1 (46 fluid ounce) can", "tomato juice"],
15
17
  #1 (29 ounce) can tomato sauce' => ["1 (29 ounce) can", "tomato sauce"],
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eye-of-newt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter McCracken
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-22 00:00:00.000000000 Z
11
+ date: 2014-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -131,6 +131,7 @@ files:
131
131
  - lib/eye_of_newt/tokenizer.rb
132
132
  - lib/eye_of_newt/unit.rb
133
133
  - lib/eye_of_newt/version.rb
134
+ - script/console
134
135
  - test/examples.txt
135
136
  - test/eye_of_newt/tokenizer_test.rb
136
137
  - test/eye_of_newt_test.rb