csv_plus_plus 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -1
  3. data/README.md +18 -62
  4. data/lib/csv_plus_plus/benchmarked_compiler.rb +62 -0
  5. data/lib/csv_plus_plus/can_define_references.rb +88 -0
  6. data/lib/csv_plus_plus/can_resolve_references.rb +8 -0
  7. data/lib/csv_plus_plus/cell.rb +3 -3
  8. data/lib/csv_plus_plus/cli.rb +24 -7
  9. data/lib/csv_plus_plus/color.rb +12 -6
  10. data/lib/csv_plus_plus/compiler.rb +156 -0
  11. data/lib/csv_plus_plus/data_validation.rb +138 -0
  12. data/lib/csv_plus_plus/{language → entities}/ast_builder.rb +5 -7
  13. data/lib/csv_plus_plus/entities/boolean.rb +31 -0
  14. data/lib/csv_plus_plus/{language → entities}/builtins.rb +2 -4
  15. data/lib/csv_plus_plus/entities/cell_reference.rb +60 -0
  16. data/lib/csv_plus_plus/entities/date.rb +30 -0
  17. data/lib/csv_plus_plus/entities/entity.rb +84 -0
  18. data/lib/csv_plus_plus/entities/function.rb +33 -0
  19. data/lib/csv_plus_plus/entities/function_call.rb +35 -0
  20. data/lib/csv_plus_plus/entities/number.rb +34 -0
  21. data/lib/csv_plus_plus/entities/runtime_value.rb +26 -0
  22. data/lib/csv_plus_plus/entities/string.rb +29 -0
  23. data/lib/csv_plus_plus/entities/variable.rb +25 -0
  24. data/lib/csv_plus_plus/entities.rb +33 -0
  25. data/lib/csv_plus_plus/error/error.rb +10 -0
  26. data/lib/csv_plus_plus/error/formula_syntax_error.rb +36 -0
  27. data/lib/csv_plus_plus/error/modifier_syntax_error.rb +27 -0
  28. data/lib/csv_plus_plus/error/modifier_validation_error.rb +49 -0
  29. data/lib/csv_plus_plus/{language → error}/syntax_error.rb +6 -14
  30. data/lib/csv_plus_plus/error/writer_error.rb +9 -0
  31. data/lib/csv_plus_plus/error.rb +9 -2
  32. data/lib/csv_plus_plus/expand.rb +3 -1
  33. data/lib/csv_plus_plus/google_api_client.rb +4 -0
  34. data/lib/csv_plus_plus/lexer/lexer.rb +19 -11
  35. data/lib/csv_plus_plus/modifier/conditional_formatting.rb +17 -0
  36. data/lib/csv_plus_plus/modifier.rb +73 -70
  37. data/lib/csv_plus_plus/options.rb +3 -0
  38. data/lib/csv_plus_plus/parser/cell_value.tab.rb +305 -0
  39. data/lib/csv_plus_plus/parser/code_section.tab.rb +410 -0
  40. data/lib/csv_plus_plus/parser/modifier.tab.rb +484 -0
  41. data/lib/csv_plus_plus/references.rb +68 -0
  42. data/lib/csv_plus_plus/row.rb +0 -3
  43. data/lib/csv_plus_plus/runtime.rb +199 -0
  44. data/lib/csv_plus_plus/scope.rb +196 -0
  45. data/lib/csv_plus_plus/template.rb +21 -5
  46. data/lib/csv_plus_plus/validated_modifier.rb +164 -0
  47. data/lib/csv_plus_plus/version.rb +1 -1
  48. data/lib/csv_plus_plus/writer/file_backer_upper.rb +6 -4
  49. data/lib/csv_plus_plus/writer/google_sheet_builder.rb +24 -29
  50. data/lib/csv_plus_plus/writer/google_sheet_modifier.rb +33 -12
  51. data/lib/csv_plus_plus/writer/rubyxl_builder.rb +3 -6
  52. data/lib/csv_plus_plus.rb +41 -16
  53. metadata +34 -24
  54. data/lib/csv_plus_plus/code_section.rb +0 -68
  55. data/lib/csv_plus_plus/language/benchmarked_compiler.rb +0 -65
  56. data/lib/csv_plus_plus/language/cell_value.tab.rb +0 -332
  57. data/lib/csv_plus_plus/language/code_section.tab.rb +0 -442
  58. data/lib/csv_plus_plus/language/compiler.rb +0 -157
  59. data/lib/csv_plus_plus/language/entities/boolean.rb +0 -33
  60. data/lib/csv_plus_plus/language/entities/cell_reference.rb +0 -33
  61. data/lib/csv_plus_plus/language/entities/entity.rb +0 -86
  62. data/lib/csv_plus_plus/language/entities/function.rb +0 -35
  63. data/lib/csv_plus_plus/language/entities/function_call.rb +0 -26
  64. data/lib/csv_plus_plus/language/entities/number.rb +0 -36
  65. data/lib/csv_plus_plus/language/entities/runtime_value.rb +0 -28
  66. data/lib/csv_plus_plus/language/entities/string.rb +0 -31
  67. data/lib/csv_plus_plus/language/entities/variable.rb +0 -25
  68. data/lib/csv_plus_plus/language/entities.rb +0 -28
  69. data/lib/csv_plus_plus/language/references.rb +0 -70
  70. data/lib/csv_plus_plus/language/runtime.rb +0 -205
  71. data/lib/csv_plus_plus/language/scope.rb +0 -188
  72. data/lib/csv_plus_plus/modifier.tab.rb +0 -907
@@ -1,332 +0,0 @@
1
- #
2
- # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.6.2
4
- # from Racc grammar file "".
5
- #
6
-
7
- require 'racc/parser.rb'
8
-
9
- require_relative '../lexer'
10
-
11
- module CSVPlusPlus
12
- module Language
13
- class CellValueParser < Racc::Parser
14
-
15
- module_eval(<<'...end cell_value.y/module_eval...', 'cell_value.y', 48)
16
- include ::CSVPlusPlus::Lexer
17
-
18
- protected
19
-
20
- def anything_to_parse?(input)
21
- input.strip.start_with?('=')
22
- end
23
-
24
- def parse_subject
25
- 'cell value'
26
- end
27
-
28
- def return_value
29
- @ast
30
- end
31
-
32
- def tokenizer
33
- ::CSVPlusPlus::Lexer::Tokenizer.new(
34
- catchall: /[\(\)\/\*\+\-,=&]/,
35
- ignore: /\s+/,
36
- tokens: [
37
- [/true/i, :TRUE],
38
- [/false/i, :FALSE],
39
- [/"(?:[^"\\]|\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4}))*"/, :STRING],
40
- [/-?[\d.]+/, :NUMBER],
41
- [/\$\$/, :VAR_REF],
42
- [/[\$\w_]+/, :ID]
43
- ]
44
- )
45
- end
46
- ...end cell_value.y/module_eval...
47
- ##### State transition tables begin ###
48
-
49
- racc_action_table = [
50
- 33, 16, 17, 20, 18, 19, 15, 7, 16, 17,
51
- 20, 18, 19, 7, 34, 12, 13, 10, 9, 11,
52
- 8, 12, 13, 10, 9, 11, 8, 7, 16, 17,
53
- 20, 18, 19, 7, 2, 12, 13, 10, 9, 11,
54
- 8, 12, 13, 10, 9, 11, 8, 7, 16, 17,
55
- 20, 3, 14, 7, 22, 12, 13, 10, 9, 11,
56
- 8, 12, 13, 10, 9, 11, 8, 7, 16, 17,
57
- 20, 23, 16, 7, 31, 12, 13, 10, 9, 11,
58
- 8, 12, 13, 10, 9, 11, 8, 7, 29, 16,
59
- 17, 20, 18, 19, 16, 12, 13, 10, 9, 11,
60
- 8 ]
61
-
62
- racc_action_check = [
63
- 30, 4, 4, 4, 4, 4, 4, 2, 32, 32,
64
- 32, 32, 32, 7, 30, 2, 2, 2, 2, 2,
65
- 2, 7, 7, 7, 7, 7, 7, 16, 35, 35,
66
- 35, 35, 35, 17, 0, 16, 16, 16, 16, 16,
67
- 16, 17, 17, 17, 17, 17, 17, 18, 26, 26,
68
- 26, 1, 3, 19, 8, 18, 18, 18, 18, 18,
69
- 18, 19, 19, 19, 19, 19, 19, 20, 27, 27,
70
- 27, 13, 25, 23, 23, 20, 20, 20, 20, 20,
71
- 20, 23, 23, 23, 23, 23, 23, 34, 21, 21,
72
- 21, 21, 21, 21, 28, 34, 34, 34, 34, 34,
73
- 34 ]
74
-
75
- racc_action_pointer = [
76
- 18, 51, 5, 52, -3, nil, nil, 11, 43, nil,
77
- nil, nil, nil, 69, nil, nil, 25, 31, 45, 51,
78
- 65, 85, nil, 71, nil, 68, 44, 64, 90, nil,
79
- -3, nil, 4, nil, 85, 24 ]
80
-
81
- racc_action_default = [
82
- -20, -20, -20, -20, -20, -2, -3, -20, -20, -6,
83
- -7, -8, -9, -10, 36, -1, -20, -20, -20, -20,
84
- -20, -20, -5, -20, -15, -16, -17, -18, -19, -4,
85
- -20, -12, -14, -11, -20, -13 ]
86
-
87
- racc_goto_table = [
88
- 4, 1, 30, nil, nil, 21, nil, nil, nil, nil,
89
- nil, nil, nil, nil, 24, 25, 26, 27, 28, nil,
90
- nil, 32, nil, nil, nil, nil, nil, nil, nil, nil,
91
- nil, nil, 35 ]
92
-
93
- racc_goto_check = [
94
- 2, 1, 5, nil, nil, 2, nil, nil, nil, nil,
95
- nil, nil, nil, nil, 2, 2, 2, 2, 2, nil,
96
- nil, 2, nil, nil, nil, nil, nil, nil, nil, nil,
97
- nil, nil, 2 ]
98
-
99
- racc_goto_pointer = [
100
- nil, 1, -2, nil, nil, -21 ]
101
-
102
- racc_goto_default = [
103
- nil, nil, nil, 5, 6, nil ]
104
-
105
- racc_reduce_table = [
106
- 0, 0, :racc_error,
107
- 3, 19, :_reduce_1,
108
- 1, 20, :_reduce_none,
109
- 1, 20, :_reduce_none,
110
- 3, 20, :_reduce_4,
111
- 2, 20, :_reduce_5,
112
- 1, 20, :_reduce_6,
113
- 1, 20, :_reduce_7,
114
- 1, 20, :_reduce_8,
115
- 1, 20, :_reduce_9,
116
- 1, 20, :_reduce_10,
117
- 4, 21, :_reduce_11,
118
- 3, 21, :_reduce_12,
119
- 3, 23, :_reduce_13,
120
- 1, 23, :_reduce_14,
121
- 3, 22, :_reduce_15,
122
- 3, 22, :_reduce_16,
123
- 3, 22, :_reduce_17,
124
- 3, 22, :_reduce_18,
125
- 3, 22, :_reduce_19 ]
126
-
127
- racc_reduce_n = 20
128
-
129
- racc_shift_n = 36
130
-
131
- racc_token_table = {
132
- false => 0,
133
- :error => 1,
134
- "(" => 2,
135
- ")" => 3,
136
- "&" => 4,
137
- "*" => 5,
138
- "/" => 6,
139
- "+" => 7,
140
- "-" => 8,
141
- :EOL => 9,
142
- :FALSE => 10,
143
- :ID => 11,
144
- :NUMBER => 12,
145
- :STRING => 13,
146
- :TRUE => 14,
147
- :VAR_REF => 15,
148
- "=" => 16,
149
- "," => 17 }
150
-
151
- racc_nt_base = 18
152
-
153
- racc_use_result_var = true
154
-
155
- Racc_arg = [
156
- racc_action_table,
157
- racc_action_check,
158
- racc_action_default,
159
- racc_action_pointer,
160
- racc_goto_table,
161
- racc_goto_check,
162
- racc_goto_default,
163
- racc_goto_pointer,
164
- racc_nt_base,
165
- racc_reduce_table,
166
- racc_token_table,
167
- racc_shift_n,
168
- racc_reduce_n,
169
- racc_use_result_var ]
170
-
171
- Racc_token_to_s_table = [
172
- "$end",
173
- "error",
174
- "\"(\"",
175
- "\")\"",
176
- "\"&\"",
177
- "\"*\"",
178
- "\"/\"",
179
- "\"+\"",
180
- "\"-\"",
181
- "EOL",
182
- "FALSE",
183
- "ID",
184
- "NUMBER",
185
- "STRING",
186
- "TRUE",
187
- "VAR_REF",
188
- "\"=\"",
189
- "\",\"",
190
- "$start",
191
- "cell_value",
192
- "exp",
193
- "fn_call",
194
- "infix_fn_call",
195
- "fn_call_args" ]
196
-
197
- Racc_debug_parser = false
198
-
199
- ##### State transition tables end #####
200
-
201
- # reduce 0 omitted
202
-
203
- module_eval(<<'.,.,', 'cell_value.y', 17)
204
- def _reduce_1(val, _values, result)
205
- @ast = val[1]
206
- result
207
- end
208
- .,.,
209
-
210
- # reduce 2 omitted
211
-
212
- # reduce 3 omitted
213
-
214
- module_eval(<<'.,.,', 'cell_value.y', 21)
215
- def _reduce_4(val, _values, result)
216
- result = val[1]
217
- result
218
- end
219
- .,.,
220
-
221
- module_eval(<<'.,.,', 'cell_value.y', 22)
222
- def _reduce_5(val, _values, result)
223
- result = e(:variable, val[1])
224
- result
225
- end
226
- .,.,
227
-
228
- module_eval(<<'.,.,', 'cell_value.y', 23)
229
- def _reduce_6(val, _values, result)
230
- result = e(:string, val[0])
231
- result
232
- end
233
- .,.,
234
-
235
- module_eval(<<'.,.,', 'cell_value.y', 24)
236
- def _reduce_7(val, _values, result)
237
- result = e(:number, val[0])
238
- result
239
- end
240
- .,.,
241
-
242
- module_eval(<<'.,.,', 'cell_value.y', 25)
243
- def _reduce_8(val, _values, result)
244
- result = e(:boolean, true)
245
- result
246
- end
247
- .,.,
248
-
249
- module_eval(<<'.,.,', 'cell_value.y', 26)
250
- def _reduce_9(val, _values, result)
251
- result = e(:boolean, false)
252
- result
253
- end
254
- .,.,
255
-
256
- module_eval(<<'.,.,', 'cell_value.y', 27)
257
- def _reduce_10(val, _values, result)
258
- result = e(:cell_reference, val[0])
259
- result
260
- end
261
- .,.,
262
-
263
- module_eval(<<'.,.,', 'cell_value.y', 29)
264
- def _reduce_11(val, _values, result)
265
- result = e(:function_call, val[0], val[2])
266
- result
267
- end
268
- .,.,
269
-
270
- module_eval(<<'.,.,', 'cell_value.y', 30)
271
- def _reduce_12(val, _values, result)
272
- result = e(:function_call, val[0], [])
273
- result
274
- end
275
- .,.,
276
-
277
- module_eval(<<'.,.,', 'cell_value.y', 32)
278
- def _reduce_13(val, _values, result)
279
- result = val[0] << val[2]
280
- result
281
- end
282
- .,.,
283
-
284
- module_eval(<<'.,.,', 'cell_value.y', 33)
285
- def _reduce_14(val, _values, result)
286
- result = [val[0]]
287
- result
288
- end
289
- .,.,
290
-
291
- module_eval(<<'.,.,', 'cell_value.y', 35)
292
- def _reduce_15(val, _values, result)
293
- result = e(:function_call, :concat, [val[0], val[2]])
294
- result
295
- end
296
- .,.,
297
-
298
- module_eval(<<'.,.,', 'cell_value.y', 36)
299
- def _reduce_16(val, _values, result)
300
- result = e(:function_call, :multiply, [val[0], val[2]])
301
- result
302
- end
303
- .,.,
304
-
305
- module_eval(<<'.,.,', 'cell_value.y', 37)
306
- def _reduce_17(val, _values, result)
307
- result = e(:function_call, :add, [val[0], val[2]])
308
- result
309
- end
310
- .,.,
311
-
312
- module_eval(<<'.,.,', 'cell_value.y', 38)
313
- def _reduce_18(val, _values, result)
314
- result = e(:function_call, :minus, [val[0], val[2]])
315
- result
316
- end
317
- .,.,
318
-
319
- module_eval(<<'.,.,', 'cell_value.y', 39)
320
- def _reduce_19(val, _values, result)
321
- result = e(:function_call, :divide, [val[0], val[2]])
322
- result
323
- end
324
- .,.,
325
-
326
- def _reduce_none(val, _values, result)
327
- val[0]
328
- end
329
-
330
- end # class CellValueParser
331
- end # module Language
332
- end # module CSVPlusPlus