csv_plus_plus 0.1.0 → 0.1.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.
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