reactive_record 0.0.2 → 0.0.4
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 +8 -8
- data/.gitignore +0 -1
- data/README.md +2 -0
- data/lib/code_generator.rb +12 -0
- data/lib/lexer.rb +2 -0
- data/lib/parser.rb +360 -0
- data/lib/parser.y +3 -1
- data/lib/reactive_record/version.rb +1 -1
- data/reactive_record.gemspec +1 -1
- data/spec/lexer_spec.rb +22 -0
- data/spec/parser_spec.rb +5 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDg0ZjdmNjhkNmJmYTE2OWQ0ODFkMzkwYmNiNmEwMjdkODY4NWZjOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmNkZjQ3OGVlZjJhNDM3MGQ0YmE0YmJmN2RkNGYzYmJiNjBlMDVkOA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MDM2NDQxMDFiMTZlYjA2ZGM2ZDBlNjc1OTJhOWRhYTY4NTdjYzlhMDIxNTI5
|
10
|
+
N2NhYzJiZGIxMWFjMDJhOTJmNDZlOGZmOGFmYTNkNjQ0ODMyOTAxOTkwYmI1
|
11
|
+
ZGIzNTBiM2QxZjc0MWQ5OWJmOWVkYmI3NzkwNTE1MWE0NjkwNTA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTgzZTk5ZDNjODliZDhiZjAxN2ZkYmI0NzAwMjdhYmFmYjNlOThhOTVmZDM5
|
14
|
+
ZGUyZDQzZGQwNWFjODJmNWY3ZGRkYWJkMWZjYzk0MjhkOTVlNTJmYzgyMzA5
|
15
|
+
YWYzMjliMGExM2I5YTBjNWNhMTBlN2RmMzlkYzc3ZDliYzZlMjk=
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
alt="Reactive record logo">
|
4
4
|
</p>
|
5
5
|
|
6
|
+
[](http://badge.fury.io/rb/reactive_record)
|
7
|
+
|
6
8
|
Generates ActiveRecord models to fit a pre-existing Postgres database.
|
7
9
|
Now you can use Rails with the db schema you always wanted. It's
|
8
10
|
**your** convention over configuration.
|
data/lib/code_generator.rb
CHANGED
@@ -156,6 +156,8 @@ class OperatorNode < Node
|
|
156
156
|
MathExpr.new @value, @expr1, @expr2
|
157
157
|
when :match
|
158
158
|
MatchExpr.new @expr1, @expr2
|
159
|
+
when :and
|
160
|
+
AndExpr.new @expr1, @expr2
|
159
161
|
end
|
160
162
|
end
|
161
163
|
|
@@ -203,6 +205,16 @@ class ComparisonExpr
|
|
203
205
|
end
|
204
206
|
end
|
205
207
|
|
208
|
+
class AndExpr
|
209
|
+
def initialize e1, e2
|
210
|
+
@e1, @e2 = e1, e2
|
211
|
+
end
|
212
|
+
|
213
|
+
def gen
|
214
|
+
"#{@e1.gen} && #{@e2.gen}"
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
206
218
|
class MathExpr
|
207
219
|
def initialize op, e1, e2
|
208
220
|
@e1, @e2 = e1, e2
|
data/lib/lexer.rb
CHANGED
@@ -2,6 +2,7 @@ require 'strscan'
|
|
2
2
|
|
3
3
|
module ConstraintParser
|
4
4
|
class Lexer
|
5
|
+
AND = /AND/
|
5
6
|
CASCADE = /CASCADE/
|
6
7
|
CHECK = /CHECK/
|
7
8
|
COMMA = /,/
|
@@ -50,6 +51,7 @@ module ConstraintParser
|
|
50
51
|
when text = @ss.scan(EQ) then [:EQ, text]
|
51
52
|
when text = @ss.scan(PLUS) then [:PLUS, text]
|
52
53
|
when text = @ss.scan(MATCH_OP) then [:MATCH_OP, text]
|
54
|
+
when text = @ss.scan(AND) then [:AND, text]
|
53
55
|
|
54
56
|
# SQL Keywords
|
55
57
|
when text = @ss.scan(CHECK) then [:CHECK, text]
|
data/lib/parser.rb
ADDED
@@ -0,0 +1,360 @@
|
|
1
|
+
#
|
2
|
+
# DO NOT MODIFY!!!!
|
3
|
+
# This file is automatically generated by Racc 1.4.9
|
4
|
+
# from Racc grammer file "".
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'racc/parser.rb'
|
8
|
+
module ConstraintParser
|
9
|
+
class Parser < Racc::Parser
|
10
|
+
|
11
|
+
|
12
|
+
require 'lexer'
|
13
|
+
require 'code_generator'
|
14
|
+
|
15
|
+
def initialize tokenizer, handler = nil
|
16
|
+
@tokenizer = tokenizer
|
17
|
+
super()
|
18
|
+
end
|
19
|
+
|
20
|
+
def next_token
|
21
|
+
@tokenizer.next_token
|
22
|
+
end
|
23
|
+
|
24
|
+
def parse
|
25
|
+
do_parse
|
26
|
+
end
|
27
|
+
##### State transition tables begin ###
|
28
|
+
|
29
|
+
racc_action_table = [
|
30
|
+
27, 28, 21, 22, 23, 24, 25, 26, 29, 27,
|
31
|
+
28, 21, 22, 23, 24, 25, 26, 29, 46, 12,
|
32
|
+
14, 11, 12, 14, 11, 30, 36, 32, 6, 13,
|
33
|
+
45, 7, 13, 33, 30, 27, 28, 21, 22, 23,
|
34
|
+
24, 25, 26, 29, 5, 12, 14, 11, 16, 18,
|
35
|
+
17, 9, 39, 40, 8, 13, 42, 37, 16, 44,
|
36
|
+
30, 34 ]
|
37
|
+
|
38
|
+
racc_action_check = [
|
39
|
+
10, 10, 10, 10, 10, 10, 10, 10, 10, 35,
|
40
|
+
35, 35, 35, 35, 35, 35, 35, 35, 44, 11,
|
41
|
+
11, 11, 20, 20, 20, 10, 30, 15, 0, 11,
|
42
|
+
44, 0, 20, 16, 35, 31, 31, 31, 31, 31,
|
43
|
+
31, 31, 31, 31, 0, 6, 6, 6, 7, 9,
|
44
|
+
8, 5, 32, 33, 1, 6, 38, 31, 39, 42,
|
45
|
+
31, 18 ]
|
46
|
+
|
47
|
+
racc_action_pointer = [
|
48
|
+
16, 54, nil, nil, nil, 33, 29, 30, 50, 33,
|
49
|
+
-2, 3, nil, nil, nil, 5, 17, nil, 37, nil,
|
50
|
+
6, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
51
|
+
10, 33, 36, 29, nil, 7, nil, nil, 36, 40,
|
52
|
+
nil, nil, 45, nil, 7, nil, nil ]
|
53
|
+
|
54
|
+
racc_action_default = [
|
55
|
+
-29, -29, -1, -2, -3, -29, -6, -29, -29, -29,
|
56
|
+
-5, -6, -10, -11, -12, -29, -29, 47, -29, -8,
|
57
|
+
-6, -13, -14, -15, -16, -17, -18, -19, -20, -21,
|
58
|
+
-29, -29, -29, -29, -4, -9, -22, -7, -23, -29,
|
59
|
+
-25, -24, -29, -26, -29, -27, -28 ]
|
60
|
+
|
61
|
+
racc_goto_table = [
|
62
|
+
15, 10, 1, 4, 3, 2, 31, 38, 41, nil,
|
63
|
+
nil, nil, nil, nil, nil, 35, nil, nil, nil, nil,
|
64
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
65
|
+
nil, nil, 43 ]
|
66
|
+
|
67
|
+
racc_goto_check = [
|
68
|
+
8, 5, 1, 4, 3, 2, 5, 9, 10, nil,
|
69
|
+
nil, nil, nil, nil, nil, 5, nil, nil, nil, nil,
|
70
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
71
|
+
nil, nil, 8 ]
|
72
|
+
|
73
|
+
racc_goto_pointer = [
|
74
|
+
nil, 2, 5, 4, 3, -5, nil, nil, -7, -25,
|
75
|
+
-30 ]
|
76
|
+
|
77
|
+
racc_goto_default = [
|
78
|
+
nil, nil, nil, nil, nil, nil, 19, 20, nil, nil,
|
79
|
+
nil ]
|
80
|
+
|
81
|
+
racc_reduce_table = [
|
82
|
+
0, 0, :racc_error,
|
83
|
+
1, 30, :_reduce_1,
|
84
|
+
1, 30, :_reduce_2,
|
85
|
+
1, 30, :_reduce_3,
|
86
|
+
4, 31, :_reduce_4,
|
87
|
+
2, 32, :_reduce_5,
|
88
|
+
0, 34, :_reduce_6,
|
89
|
+
3, 34, :_reduce_7,
|
90
|
+
2, 34, :_reduce_8,
|
91
|
+
3, 34, :_reduce_9,
|
92
|
+
1, 34, :_reduce_10,
|
93
|
+
1, 34, :_reduce_11,
|
94
|
+
1, 34, :_reduce_12,
|
95
|
+
1, 36, :_reduce_13,
|
96
|
+
1, 36, :_reduce_14,
|
97
|
+
1, 36, :_reduce_15,
|
98
|
+
1, 36, :_reduce_16,
|
99
|
+
1, 36, :_reduce_17,
|
100
|
+
1, 36, :_reduce_18,
|
101
|
+
1, 36, :_reduce_19,
|
102
|
+
1, 36, :_reduce_20,
|
103
|
+
1, 36, :_reduce_21,
|
104
|
+
2, 35, :_reduce_22,
|
105
|
+
4, 33, :_reduce_23,
|
106
|
+
5, 33, :_reduce_24,
|
107
|
+
3, 37, :_reduce_25,
|
108
|
+
2, 38, :_reduce_26,
|
109
|
+
3, 39, :_reduce_27,
|
110
|
+
3, 39, :_reduce_28 ]
|
111
|
+
|
112
|
+
racc_reduce_n = 29
|
113
|
+
|
114
|
+
racc_shift_n = 47
|
115
|
+
|
116
|
+
racc_token_table = {
|
117
|
+
false => 0,
|
118
|
+
:error => 1,
|
119
|
+
:PLUS => 2,
|
120
|
+
:MATCH_OP => 3,
|
121
|
+
:GTEQ => 4,
|
122
|
+
:LTEQ => 5,
|
123
|
+
:NEQ => 6,
|
124
|
+
:EQ => 7,
|
125
|
+
:GT => 8,
|
126
|
+
:LT => 9,
|
127
|
+
:AND => 10,
|
128
|
+
:CASCADE => 11,
|
129
|
+
:CHECK => 12,
|
130
|
+
:COMMA => 13,
|
131
|
+
:DELETE => 14,
|
132
|
+
:FOREIGN_KEY => 15,
|
133
|
+
:IDENT => 16,
|
134
|
+
:INT => 17,
|
135
|
+
:LPAREN => 18,
|
136
|
+
:NEWLINE => 19,
|
137
|
+
:ON => 20,
|
138
|
+
:PRIMARY_KEY => 21,
|
139
|
+
:REFERENCES => 22,
|
140
|
+
:RESTRICT => 23,
|
141
|
+
:RPAREN => 24,
|
142
|
+
:SPACE => 25,
|
143
|
+
:STRLIT => 26,
|
144
|
+
:TYPE => 27,
|
145
|
+
:UNIQUE => 28 }
|
146
|
+
|
147
|
+
racc_nt_base = 29
|
148
|
+
|
149
|
+
racc_use_result_var = true
|
150
|
+
|
151
|
+
Racc_arg = [
|
152
|
+
racc_action_table,
|
153
|
+
racc_action_check,
|
154
|
+
racc_action_default,
|
155
|
+
racc_action_pointer,
|
156
|
+
racc_goto_table,
|
157
|
+
racc_goto_check,
|
158
|
+
racc_goto_default,
|
159
|
+
racc_goto_pointer,
|
160
|
+
racc_nt_base,
|
161
|
+
racc_reduce_table,
|
162
|
+
racc_token_table,
|
163
|
+
racc_shift_n,
|
164
|
+
racc_reduce_n,
|
165
|
+
racc_use_result_var ]
|
166
|
+
|
167
|
+
Racc_token_to_s_table = [
|
168
|
+
"$end",
|
169
|
+
"error",
|
170
|
+
"PLUS",
|
171
|
+
"MATCH_OP",
|
172
|
+
"GTEQ",
|
173
|
+
"LTEQ",
|
174
|
+
"NEQ",
|
175
|
+
"EQ",
|
176
|
+
"GT",
|
177
|
+
"LT",
|
178
|
+
"AND",
|
179
|
+
"CASCADE",
|
180
|
+
"CHECK",
|
181
|
+
"COMMA",
|
182
|
+
"DELETE",
|
183
|
+
"FOREIGN_KEY",
|
184
|
+
"IDENT",
|
185
|
+
"INT",
|
186
|
+
"LPAREN",
|
187
|
+
"NEWLINE",
|
188
|
+
"ON",
|
189
|
+
"PRIMARY_KEY",
|
190
|
+
"REFERENCES",
|
191
|
+
"RESTRICT",
|
192
|
+
"RPAREN",
|
193
|
+
"SPACE",
|
194
|
+
"STRLIT",
|
195
|
+
"TYPE",
|
196
|
+
"UNIQUE",
|
197
|
+
"$start",
|
198
|
+
"constraint",
|
199
|
+
"unique_column",
|
200
|
+
"check_statement",
|
201
|
+
"foreign_key",
|
202
|
+
"expr",
|
203
|
+
"type_signature",
|
204
|
+
"operator",
|
205
|
+
"column_spec",
|
206
|
+
"table_spec",
|
207
|
+
"action_spec" ]
|
208
|
+
|
209
|
+
Racc_debug_parser = false
|
210
|
+
|
211
|
+
##### State transition tables end #####
|
212
|
+
|
213
|
+
# reduce 0 omitted
|
214
|
+
|
215
|
+
def _reduce_1(val, _values, result)
|
216
|
+
result = val[0]
|
217
|
+
result
|
218
|
+
end
|
219
|
+
|
220
|
+
def _reduce_2(val, _values, result)
|
221
|
+
result = val[0]
|
222
|
+
result
|
223
|
+
end
|
224
|
+
|
225
|
+
def _reduce_3(val, _values, result)
|
226
|
+
result = val[0]
|
227
|
+
result
|
228
|
+
end
|
229
|
+
|
230
|
+
def _reduce_4(val, _values, result)
|
231
|
+
result = UniqueNode.new(IdentNode.new(val[2]))
|
232
|
+
result
|
233
|
+
end
|
234
|
+
|
235
|
+
def _reduce_5(val, _values, result)
|
236
|
+
result = CheckNode.new(val[1])
|
237
|
+
result
|
238
|
+
end
|
239
|
+
|
240
|
+
def _reduce_6(val, _values, result)
|
241
|
+
result = EmptyExprNode.new :empty
|
242
|
+
result
|
243
|
+
end
|
244
|
+
|
245
|
+
def _reduce_7(val, _values, result)
|
246
|
+
result = ExprNode.new(val[1])
|
247
|
+
result
|
248
|
+
end
|
249
|
+
|
250
|
+
def _reduce_8(val, _values, result)
|
251
|
+
result = TypedExprNode.new(val[0], val[1])
|
252
|
+
result
|
253
|
+
end
|
254
|
+
|
255
|
+
def _reduce_9(val, _values, result)
|
256
|
+
result = OperatorNode.new(val[1], val[0], val[2])
|
257
|
+
result
|
258
|
+
end
|
259
|
+
|
260
|
+
def _reduce_10(val, _values, result)
|
261
|
+
result = IdentNode.new(val[0])
|
262
|
+
result
|
263
|
+
end
|
264
|
+
|
265
|
+
def _reduce_11(val, _values, result)
|
266
|
+
result = StrLitNode.new(val[0])
|
267
|
+
result
|
268
|
+
end
|
269
|
+
|
270
|
+
def _reduce_12(val, _values, result)
|
271
|
+
result = IntNode.new(val[0])
|
272
|
+
result
|
273
|
+
end
|
274
|
+
|
275
|
+
def _reduce_13(val, _values, result)
|
276
|
+
result = :gteq
|
277
|
+
result
|
278
|
+
end
|
279
|
+
|
280
|
+
def _reduce_14(val, _values, result)
|
281
|
+
result = :lteq
|
282
|
+
result
|
283
|
+
end
|
284
|
+
|
285
|
+
def _reduce_15(val, _values, result)
|
286
|
+
result = :neq
|
287
|
+
result
|
288
|
+
end
|
289
|
+
|
290
|
+
def _reduce_16(val, _values, result)
|
291
|
+
result = :eq
|
292
|
+
result
|
293
|
+
end
|
294
|
+
|
295
|
+
def _reduce_17(val, _values, result)
|
296
|
+
result = :gt
|
297
|
+
result
|
298
|
+
end
|
299
|
+
|
300
|
+
def _reduce_18(val, _values, result)
|
301
|
+
result = :lt
|
302
|
+
result
|
303
|
+
end
|
304
|
+
|
305
|
+
def _reduce_19(val, _values, result)
|
306
|
+
result = :plus
|
307
|
+
result
|
308
|
+
end
|
309
|
+
|
310
|
+
def _reduce_20(val, _values, result)
|
311
|
+
result = :match
|
312
|
+
result
|
313
|
+
end
|
314
|
+
|
315
|
+
def _reduce_21(val, _values, result)
|
316
|
+
result = :and
|
317
|
+
result
|
318
|
+
end
|
319
|
+
|
320
|
+
def _reduce_22(val, _values, result)
|
321
|
+
result = IdentNode.new(val[1])
|
322
|
+
result
|
323
|
+
end
|
324
|
+
|
325
|
+
def _reduce_23(val, _values, result)
|
326
|
+
result = ForeignKeyNode.new(val[1], val[3])
|
327
|
+
result
|
328
|
+
end
|
329
|
+
|
330
|
+
def _reduce_24(val, _values, result)
|
331
|
+
result = ForeignKeyNode.new(val[1], val[3], val[4])
|
332
|
+
result
|
333
|
+
end
|
334
|
+
|
335
|
+
def _reduce_25(val, _values, result)
|
336
|
+
result = IdentNode.new(val[1])
|
337
|
+
result
|
338
|
+
end
|
339
|
+
|
340
|
+
def _reduce_26(val, _values, result)
|
341
|
+
result = TableNode.new(IdentNode.new(val[0]), val[1])
|
342
|
+
result
|
343
|
+
end
|
344
|
+
|
345
|
+
def _reduce_27(val, _values, result)
|
346
|
+
result = ActionNode.new(:delete, :restrict)
|
347
|
+
result
|
348
|
+
end
|
349
|
+
|
350
|
+
def _reduce_28(val, _values, result)
|
351
|
+
result = ActionNode.new(:delete, :cascade)
|
352
|
+
result
|
353
|
+
end
|
354
|
+
|
355
|
+
def _reduce_none(val, _values, result)
|
356
|
+
val[0]
|
357
|
+
end
|
358
|
+
|
359
|
+
end # class Parser
|
360
|
+
end # module ConstraintParser
|
data/lib/parser.y
CHANGED
@@ -4,7 +4,8 @@ prechigh
|
|
4
4
|
left GTEQ LTEQ NEQ EQ GT LT
|
5
5
|
preclow
|
6
6
|
|
7
|
-
token
|
7
|
+
token AND
|
8
|
+
CASCADE
|
8
9
|
CHECK
|
9
10
|
COMMA
|
10
11
|
DELETE
|
@@ -59,6 +60,7 @@ rule
|
|
59
60
|
| LT { result = :lt }
|
60
61
|
| PLUS { result = :plus }
|
61
62
|
| MATCH_OP { result = :match }
|
63
|
+
| AND { result = :and }
|
62
64
|
;
|
63
65
|
|
64
66
|
type_signature : TYPE IDENT { result = IdentNode.new(val[1]) }
|
data/reactive_record.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.homepage = "https://github.com/twopoint718/reactive_record"
|
14
14
|
gem.licenses = ['MIT']
|
15
15
|
|
16
|
-
gem.files =
|
16
|
+
gem.files = `git ls-files`.split("\n")
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
data/spec/lexer_spec.rb
CHANGED
@@ -142,4 +142,26 @@ describe ConstraintParser::Lexer do
|
|
142
142
|
[:RPAREN, ')'],
|
143
143
|
]
|
144
144
|
end
|
145
|
+
it "CHECK (((port >= 1024) AND (port <= 65634)))" do
|
146
|
+
@lex = lex.new StringIO.new "CHECK (((port >= 1024) AND (port <= 65634)))"
|
147
|
+
@lex.tokenize.should == [
|
148
|
+
[:CHECK, 'CHECK'],
|
149
|
+
[:LPAREN, '('],
|
150
|
+
[:LPAREN, '('],
|
151
|
+
[:LPAREN, '('],
|
152
|
+
[:IDENT, 'port'],
|
153
|
+
[:GTEQ, '>='],
|
154
|
+
[:INT, "1024"],
|
155
|
+
[:RPAREN, ')'],
|
156
|
+
[:AND, 'AND'],
|
157
|
+
[:LPAREN, '('],
|
158
|
+
[:IDENT, 'port'],
|
159
|
+
[:LTEQ, '<='],
|
160
|
+
[:INT, "65634"],
|
161
|
+
[:RPAREN, ')'],
|
162
|
+
[:RPAREN, ')'],
|
163
|
+
[:RPAREN, ')'],
|
164
|
+
]
|
165
|
+
end
|
166
|
+
|
145
167
|
end
|
data/spec/parser_spec.rb
CHANGED
@@ -32,6 +32,11 @@ describe ConstraintParser::Parser do
|
|
32
32
|
@parser.parse.gen.should == 'validate { errors.add(:start_date, "Expected TODO") unless start_date <= Time.now.to_date + 365 }'
|
33
33
|
end
|
34
34
|
|
35
|
+
it "CHECK (((port >= 1024) AND (port <= 65634)))" do
|
36
|
+
@parser = par.new(lex.new StringIO.new "CHECK (((port >= 1024) AND (port <= 65634)))")
|
37
|
+
@parser.parse.gen.should == 'validate { errors.add(:port, "Expected TODO") unless port >= 1024 && port <= 65634 }'
|
38
|
+
end
|
39
|
+
|
35
40
|
it "FOREIGN KEY (employee_id) REFERENCES employees(employee_id) ON DELETE RESTRICT" do
|
36
41
|
@parser = par.new(lex.new StringIO.new "FOREIGN KEY (employee_id) REFERENCES employees(employee_id) ON DELETE RESTRICT")
|
37
42
|
@parser.parse.gen.should == "belongs_to :employees, foreign_key: 'employee_id', class: 'Employees', primary_key: 'employee_id'"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reactive_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Nelson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pg
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- lib/code_generator.rb
|
86
86
|
- lib/generators/reactive_record/install_generator.rb
|
87
87
|
- lib/lexer.rb
|
88
|
+
- lib/parser.rb
|
88
89
|
- lib/parser.y
|
89
90
|
- lib/reactive_record.rb
|
90
91
|
- lib/reactive_record/version.rb
|
@@ -93,7 +94,6 @@ files:
|
|
93
94
|
- spec/parser_spec.rb
|
94
95
|
- spec/reactive_record_spec.rb
|
95
96
|
- spec/seed/database.sql
|
96
|
-
- lib/parser.rb
|
97
97
|
homepage: https://github.com/twopoint718/reactive_record
|
98
98
|
licenses:
|
99
99
|
- MIT
|