skeem 0.2.14 → 0.2.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +451 -195
  3. data/.travis.yml +27 -0
  4. data/CHANGELOG.md +35 -1
  5. data/Gemfile +2 -0
  6. data/README.md +125 -56
  7. data/Rakefile +2 -0
  8. data/appveyor.yml +3 -4
  9. data/bin/cubic.skm +4 -0
  10. data/bin/hello-world.skm +1 -0
  11. data/bin/skeem +72 -0
  12. data/lib/skeem/datum_dsl.rb +40 -30
  13. data/lib/skeem/element_visitor.rb +5 -2
  14. data/lib/skeem/grammar.rb +88 -26
  15. data/lib/skeem/interpreter.rb +9 -7
  16. data/lib/skeem/parser.rb +6 -4
  17. data/lib/skeem/primitive/primitive_builder.rb +148 -122
  18. data/lib/skeem/primitive/primitive_procedure.rb +23 -25
  19. data/lib/skeem/runtime.rb +17 -15
  20. data/lib/skeem/s_expr_builder.rb +49 -117
  21. data/lib/skeem/s_expr_nodes.rb +147 -132
  22. data/lib/skeem/skeem_exception.rb +1 -0
  23. data/lib/skeem/skm_binding.rb +9 -11
  24. data/lib/skeem/skm_compound_datum.rb +9 -6
  25. data/lib/skeem/skm_element.rb +15 -13
  26. data/lib/skeem/skm_empty_list.rb +6 -4
  27. data/lib/skeem/skm_exception.rb +9 -0
  28. data/lib/skeem/skm_expression.rb +3 -1
  29. data/lib/skeem/skm_frame.rb +3 -2
  30. data/lib/skeem/skm_pair.rb +26 -18
  31. data/lib/skeem/skm_procedure_exec.rb +11 -6
  32. data/lib/skeem/skm_simple_datum.rb +23 -20
  33. data/lib/skeem/skm_unary_expression.rb +34 -37
  34. data/lib/skeem/standard/base.skm +4 -0
  35. data/lib/skeem/tokenizer.rb +38 -28
  36. data/lib/skeem/version.rb +3 -1
  37. data/lib/skeem.rb +2 -0
  38. data/skeem.gemspec +9 -6
  39. data/spec/skeem/add4.skm +4 -0
  40. data/spec/skeem/datum_dsl_spec.rb +13 -12
  41. data/spec/skeem/element_visitor_spec.rb +14 -10
  42. data/spec/skeem/interpreter_spec.rb +84 -44
  43. data/spec/skeem/lambda_spec.rb +13 -11
  44. data/spec/skeem/parser_spec.rb +23 -19
  45. data/spec/skeem/primitive/primitive_builder_spec.rb +65 -48
  46. data/spec/skeem/primitive/primitive_procedure_spec.rb +14 -12
  47. data/spec/skeem/runtime_spec.rb +20 -18
  48. data/spec/skeem/s_expr_nodes_spec.rb +8 -6
  49. data/spec/skeem/skm_compound_datum_spec.rb +12 -10
  50. data/spec/skeem/skm_element_spec.rb +7 -5
  51. data/spec/skeem/skm_empty_list_spec.rb +7 -5
  52. data/spec/skeem/skm_frame_spec.rb +5 -4
  53. data/spec/skeem/skm_pair_spec.rb +9 -8
  54. data/spec/skeem/skm_procedure_exec_spec.rb +2 -0
  55. data/spec/skeem/skm_simple_datum_spec.rb +24 -22
  56. data/spec/skeem/skm_unary_expression_spec.rb +11 -9
  57. data/spec/skeem/tokenizer_spec.rb +54 -43
  58. data/spec/skeem_spec.rb +2 -0
  59. data/spec/spec_helper.rb +15 -10
  60. metadata +18 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e35fb6742873b7c49a13e95be6143ae1a5cad7826f20aec0a02ba8dd98fa723
4
- data.tar.gz: 7427071d91fa6578d37122bd953822e263f6eeba314d3d52bc5afd279052f08f
3
+ metadata.gz: 8031a69d8a362bbe17e4dabe5fb6ced12ff4ca70f2d6577f5ec13ff81b8bd3ad
4
+ data.tar.gz: 17f74953cc15cd97d84ede36c17f9d4e97873710d8c94ecfdb50e76019cf3bd2
5
5
  SHA512:
6
- metadata.gz: 6f7229bba2d1cdffd83830124711b024452f82e4f3ba57219c476a4a6b07a67f3c84c13b7de2a22442f65ad82e7b414fcb429d3997047135f6e2105b2c42dece
7
- data.tar.gz: 712805a13cff2128f340a0f75288ee81528e80114cac2815630e839c2e3c87c78efd5298a40bd47345edced3c597979a6be69b033db19478787da9f34a48af28
6
+ metadata.gz: 65521fe50624af6e01bacb890ae3b1ddf9f6acb5a1a3a31fd5cfb1b20143101c0aad531a1f3773b50585a6bed8a18380897f47786ecfdc3c53140e7686e17876
7
+ data.tar.gz: 3a5d8cac363099882da772135498df5c24449eedc6831a2fe09f840764afd12d22ad4fa74589dd92309875407cf77a334fc704d6914a93988debfd65b31a2d35
data/.rubocop.yml CHANGED
@@ -1,195 +1,451 @@
1
- AllCops:
2
- Exclude:
3
- - 'exp/**/*'
4
-
5
- Layout/CaseIndentation:
6
- Enabled: false
7
-
8
- Layout/CommentIndentation:
9
- Enabled: false
10
-
11
- Layout/ElseAlignment:
12
- Enabled: false
13
-
14
- Layout/EmptyLines:
15
- Enabled: false
16
-
17
- Layout/EndAlignment:
18
- Enabled: false
19
-
20
- Layout/EndOfLine:
21
- Enabled: true
22
- EnforcedStyle: lf
23
-
24
- Layout/IndentationWidth:
25
- Enabled: false
26
-
27
- Layout/IndentationConsistency:
28
- Enabled: true
29
-
30
- Layout/IndentHeredoc:
31
- Enabled: false
32
-
33
- Layout/MultilineHashBraceLayout:
34
- Enabled: true
35
-
36
- Layout/SpaceAroundOperators:
37
- Enabled: true
38
-
39
- Layout/SpaceInsideParens:
40
- Enabled: true
41
-
42
- Layout/Tab:
43
- Enabled: true
44
-
45
- Layout/TrailingBlankLines:
46
- Enabled: true
47
-
48
- Layout/TrailingWhitespace:
49
- Enabled: true
50
-
51
- Lint/Loop:
52
- Enabled: true
53
-
54
- Lint/RescueException:
55
- Enabled: true
56
-
57
- Lint/UnusedMethodArgument:
58
- Enabled: true
59
-
60
- Lint/UselessAccessModifier:
61
- Enabled: true
62
-
63
- Lint/Void:
64
- Enabled: false
65
-
66
- Lint/UselessAssignment:
67
- Enabled: true
68
-
69
- Metrics/AbcSize:
70
- Enabled: false
71
-
72
- Metrics/BlockLength:
73
- Enabled: true
74
- Max: 350
75
-
76
- Metrics/ClassLength:
77
- Enabled: true
78
- Max: 350
79
-
80
- Metrics/CyclomaticComplexity:
81
- Enabled: false
82
-
83
- Metrics/LineLength:
84
- Enabled: false
85
- Max: 90
86
-
87
- Metrics/MethodLength:
88
- Enabled: true
89
- Max: 40
90
-
91
- Metrics/ModuleLength:
92
- Enabled: true
93
- Max: 500
94
-
95
- Metrics/PerceivedComplexity:
96
- Enabled: false
97
-
98
- Naming/ConstantName:
99
- Enabled: false
100
-
101
- Naming/ClassAndModuleCamelCase:
102
- Enabled: false
103
-
104
- Naming/UncommunicativeBlockParamName:
105
- Enabled: true
106
-
107
- Naming/UncommunicativeMethodParamName:
108
- Enabled: false
109
-
110
- Naming/VariableName:
111
- Enabled: false
112
-
113
- Style/Alias:
114
- Enabled: true
115
-
116
- Layout/AlignHash:
117
- Enabled: false
118
-
119
- Style/AsciiComments:
120
- Enabled: false
121
-
122
- Style/BarePercentLiterals:
123
- Enabled: false
124
-
125
- Style/BlockComments:
126
- Enabled: false
127
-
128
- Style/CharacterLiteral:
129
- Enabled: false
130
-
131
- Style/ClassCheck:
132
- Enabled: false
133
-
134
- Style/ClassVars:
135
- Enabled: false
136
-
137
- Style/ColonMethodCall:
138
- Enabled: false
139
-
140
- Style/CommentAnnotation:
141
- Enabled: false
142
-
143
- Style/CommentedKeyword:
144
- Enabled: false
145
-
146
- Style/ConditionalAssignment:
147
- Enabled: false
148
-
149
- Style/DefWithParentheses:
150
- Enabled: true
151
-
152
- Style/Documentation:
153
- Enabled: false
154
-
155
- Style/ExpandPathArguments:
156
- Enabled: false
157
-
158
- Style/GuardClause:
159
- Enabled: false
160
-
161
- Style/IfUnlessModifier:
162
- Enabled: false
163
-
164
- Style/InverseMethods:
165
- Enabled: true
166
-
167
- Style/Next:
168
- Enabled: false
169
-
170
- Style/RaiseArgs:
171
- Enabled: true
172
-
173
- Style/RedundantReturn:
174
- Enabled: false
175
-
176
- Style/RedundantSelf:
177
- Enabled: true
178
-
179
- Style/RegexpLiteral:
180
- Enabled: false
181
-
182
- Style/PercentLiteralDelimiters:
183
- Enabled: false
184
-
185
- Style/StderrPuts:
186
- Enabled: false
187
-
188
- Style/StringLiterals:
189
- Enabled: true
190
-
191
- Style/TernaryParentheses:
192
- Enabled: false
193
-
194
- Style/UnlessElse:
195
- Enabled: false
1
+ AllCops:
2
+ Exclude:
3
+ - 'exp/**/*'
4
+
5
+ Gemspec/DateAssignment:
6
+ Enabled: true
7
+
8
+ Layout/ArgumentAlignment:
9
+ Enabled: false
10
+
11
+ Layout/ArrayAlignment:
12
+ Enabled: true
13
+ EnforcedStyle: with_fixed_indentation
14
+
15
+ Layout/CaseIndentation:
16
+ Enabled: false
17
+
18
+ Layout/ClosingHeredocIndentation:
19
+ Enabled: false
20
+
21
+ Layout/CommentIndentation:
22
+ Enabled: false
23
+
24
+ Layout/ElseAlignment:
25
+ Enabled: false
26
+
27
+ Layout/EmptyLines:
28
+ Enabled: false
29
+
30
+ Layout/EndAlignment:
31
+ Enabled: false
32
+
33
+ Layout/EndOfLine:
34
+ Enabled: true
35
+ EnforcedStyle: lf
36
+
37
+ Layout/FirstArgumentIndentation:
38
+ Enabled: false
39
+
40
+ Layout/HashAlignment:
41
+ Enabled: false
42
+
43
+ Layout/IndentationWidth:
44
+ Enabled: false
45
+
46
+ Layout/IndentationConsistency:
47
+ Enabled: true
48
+
49
+ Layout/HeredocIndentation:
50
+ Enabled: false
51
+
52
+ Layout/LineEndStringConcatenationIndentation:
53
+ Enabled: true
54
+
55
+ Layout/MultilineHashBraceLayout:
56
+ Enabled: true
57
+
58
+ Layout/MultilineMethodCallBraceLayout:
59
+ Enabled: true
60
+ EnforcedStyle: same_line
61
+
62
+ Layout/SpaceAroundOperators:
63
+ Enabled: true
64
+
65
+ Layout/SpaceBeforeBrackets:
66
+ Enabled: true
67
+
68
+ Layout/SpaceInsideParens:
69
+ Enabled: true
70
+
71
+ Layout/IndentationStyle:
72
+ Enabled: true
73
+
74
+ Layout/SpaceAroundMethodCallOperator:
75
+ Enabled: true
76
+
77
+ Layout/TrailingEmptyLines:
78
+ Enabled: true
79
+
80
+ Layout/TrailingWhitespace:
81
+ Enabled: true
82
+
83
+ Lint/AmbiguousAssignment:
84
+ Enabled: true
85
+
86
+ Lint/AmbiguousRange:
87
+ Enabled: true
88
+
89
+ Lint/DeprecatedConstants:
90
+ Enabled: true
91
+
92
+ Lint/DuplicateBranch:
93
+ Enabled: true
94
+
95
+ Lint/DuplicateRegexpCharacterClassElement:
96
+ Enabled: true
97
+
98
+ Lint/EmptyBlock:
99
+ Enabled: true
100
+
101
+ Lint/EmptyClass:
102
+ Enabled: false
103
+
104
+ Lint/EmptyInPattern:
105
+ Enabled: true
106
+
107
+ Lint/LambdaWithoutLiteralBlock:
108
+ Enabled: true
109
+
110
+ Lint/Loop:
111
+ Enabled: true
112
+
113
+ Lint/NoReturnInBeginEndBlocks:
114
+ Enabled: true
115
+
116
+ Lint/NumberedParameterAssignment:
117
+ Enabled: true
118
+
119
+ Lint/OrAssignmentToConstant:
120
+ Enabled: true
121
+
122
+ Lint/RaiseException:
123
+ Enabled: true
124
+
125
+ Lint/RedundantDirGlobSort:
126
+ Enabled: true
127
+
128
+ Lint/RescueException:
129
+ Enabled: true
130
+
131
+ Lint/StructNewOverride:
132
+ Enabled: true
133
+
134
+ Lint/SymbolConversion:
135
+ Enabled: true
136
+
137
+ Lint/ToEnumArguments:
138
+ Enabled: true
139
+
140
+ Lint/TripleQuotes:
141
+ Enabled: true
142
+
143
+ Lint/UnexpectedBlockArity:
144
+ Enabled: true
145
+
146
+ Lint/UnmodifiedReduceAccumulator:
147
+ Enabled: true
148
+
149
+ Lint/UnusedMethodArgument:
150
+ Enabled: true
151
+
152
+ Lint/UselessAccessModifier:
153
+ Enabled: true
154
+
155
+ Lint/Void:
156
+ Enabled: false
157
+
158
+ Lint/UselessAssignment:
159
+ Enabled: true
160
+
161
+ Metrics/AbcSize:
162
+ Enabled: false
163
+
164
+ Metrics/BlockLength:
165
+ Enabled: true
166
+ Max: 350
167
+
168
+ Metrics/BlockNesting:
169
+ Enabled: true
170
+ Max: 5
171
+
172
+ Metrics/ClassLength:
173
+ Enabled: true
174
+ Max: 450
175
+
176
+ Metrics/CyclomaticComplexity:
177
+ Enabled: false
178
+
179
+ Layout/LineLength:
180
+ Enabled: false
181
+ Max: 90
182
+
183
+ Metrics/MethodLength:
184
+ Enabled: true
185
+ Max: 60
186
+
187
+ Metrics/ModuleLength:
188
+ Enabled: true
189
+ Max: 500
190
+
191
+ Metrics/PerceivedComplexity:
192
+ Enabled: false
193
+
194
+ Naming/ConstantName:
195
+ Enabled: false
196
+
197
+ Naming/ClassAndModuleCamelCase:
198
+ Enabled: false
199
+
200
+ Naming/BlockParameterName:
201
+ Enabled: true
202
+
203
+ Naming/InclusiveLanguage:
204
+ Enabled: true
205
+
206
+ Naming/MethodParameterName:
207
+ Enabled: false
208
+
209
+ Naming/MethodName:
210
+ Enabled: false
211
+
212
+ Naming/VariableName:
213
+ Enabled: false
214
+
215
+ Style/AccessorGrouping:
216
+ Enabled: false
217
+
218
+ Style/Alias:
219
+ Enabled: true
220
+
221
+ Style/ArgumentsForwarding:
222
+ Enabled: true
223
+
224
+ Style/AsciiComments:
225
+ Enabled: false
226
+
227
+ Style/BarePercentLiterals:
228
+ Enabled: false
229
+
230
+ Style/BlockComments:
231
+ Enabled: false
232
+
233
+ Style/CharacterLiteral:
234
+ Enabled: false
235
+
236
+ Style/ClassCheck:
237
+ Enabled: false
238
+
239
+ Style/ClassVars:
240
+ Enabled: false
241
+
242
+ Style/CollectionCompact:
243
+ Enabled: true
244
+
245
+ Style/ColonMethodCall:
246
+ Enabled: false
247
+
248
+ Style/CommentAnnotation:
249
+ Enabled: false
250
+
251
+ Style/CommentedKeyword:
252
+ Enabled: false
253
+
254
+ Style/ConditionalAssignment:
255
+ Enabled: false
256
+
257
+ Style/DefWithParentheses:
258
+ Enabled: true
259
+
260
+ Style/Documentation:
261
+ Enabled: false
262
+
263
+ Style/DocumentDynamicEvalDefinition:
264
+ Enabled: false
265
+
266
+ Style/ExpandPathArguments:
267
+ Enabled: false
268
+
269
+ Style/ExponentialNotation:
270
+ Enabled: true
271
+
272
+ Style/GuardClause:
273
+ Enabled: false
274
+
275
+ Style/HashEachMethods:
276
+ Enabled: true
277
+
278
+ Style/HashExcept:
279
+ Enabled: true
280
+
281
+ Style/HashTransformKeys:
282
+ Enabled: true
283
+
284
+ Style/HashTransformValues:
285
+ Enabled: true
286
+
287
+ Style/IfUnlessModifier:
288
+ Enabled: false
289
+
290
+ Style/InPatternThen:
291
+ Enabled: true
292
+
293
+ Style/InverseMethods:
294
+ Enabled: false
295
+
296
+ Style/MissingRespondToMissing:
297
+ Enabled: false
298
+
299
+ Style/MultilineInPatternThen:
300
+ Enabled: true
301
+
302
+ Style/NegatedIfElseCondition:
303
+ Enabled: true
304
+
305
+ Style/Next:
306
+ Enabled: false
307
+
308
+ Style/NilLambda:
309
+ Enabled: true
310
+
311
+ Style/NumericLiterals:
312
+ Enabled: false
313
+
314
+ Style/QuotedSymbols:
315
+ Enabled: true
316
+
317
+ Style/RaiseArgs:
318
+ Enabled: true
319
+
320
+ Style/RedundantArgument:
321
+ Enabled: true
322
+
323
+ Style/RedundantReturn:
324
+ Enabled: false
325
+
326
+ Style/RedundantSelf:
327
+ Enabled: true
328
+
329
+ Style/RedundantSelfAssignmentBranch:
330
+ Enabled: true
331
+
332
+ Style/RegexpLiteral:
333
+ Enabled: false
334
+
335
+ Style/PercentLiteralDelimiters:
336
+ Enabled: false
337
+
338
+ Style/StderrPuts:
339
+ Enabled: false
340
+
341
+ Style/StringLiterals:
342
+ Enabled: true
343
+
344
+ Style/SwapValues:
345
+ Enabled: true
346
+
347
+ Style/TernaryParentheses:
348
+ Enabled: false
349
+
350
+ Style/UnlessElse:
351
+ Enabled: false
352
+
353
+ # Rubocop complains when it doesn't find an explicit setting for the following cops:
354
+ Layout/EmptyLinesAroundAttributeAccessor:
355
+ Enabled: true
356
+
357
+ Lint/BinaryOperatorWithIdenticalOperands:
358
+ Enabled: true
359
+
360
+ Lint/DeprecatedOpenSSLConstant:
361
+ Enabled: true
362
+
363
+ Lint/DuplicateElsifCondition:
364
+ Enabled: true
365
+
366
+ Lint/DuplicateRescueException:
367
+ Enabled: true
368
+
369
+ Lint/EmptyConditionalBody:
370
+ Enabled: true
371
+
372
+ Lint/FloatComparison:
373
+ Enabled: true
374
+
375
+ Lint/MissingSuper:
376
+ Enabled: true
377
+
378
+ Lint/MixedRegexpCaptureTypes:
379
+ Enabled: true
380
+
381
+ Lint/OutOfRangeRegexpRef:
382
+ Enabled: true
383
+
384
+ Lint/SelfAssignment:
385
+ Enabled: true
386
+
387
+ Lint/TopLevelReturnWithArgument:
388
+ Enabled: true
389
+
390
+ Lint/UnreachableLoop:
391
+ Enabled: true
392
+
393
+ Style/ArrayCoercion:
394
+ Enabled: true
395
+
396
+ Style/BisectedAttrAccessor:
397
+ Enabled: true
398
+
399
+ Style/CaseLikeIf:
400
+ Enabled: true
401
+
402
+ Style/EndlessMethod:
403
+ Enabled: true
404
+
405
+ Style/ExplicitBlockArgument:
406
+ Enabled: true
407
+
408
+ Style/GlobalStdStream:
409
+ Enabled: true
410
+
411
+ Style/HashAsLastArrayItem:
412
+ Enabled: true
413
+
414
+ Style/HashConversion:
415
+ Enabled: true
416
+
417
+ Style/HashLikeCase:
418
+ Enabled: true
419
+
420
+ Style/IfWithBooleanLiteralBranches:
421
+ Enabled: true
422
+
423
+ Style/OptionalBooleanParameter:
424
+ Enabled: true
425
+
426
+ Style/RedundantAssignment:
427
+ Enabled: true
428
+
429
+ Style/RedundantFetchBlock:
430
+ Enabled: true
431
+
432
+ Style/RedundantFileExtensionInRequire:
433
+ Enabled: true
434
+
435
+ Style/RedundantRegexpCharacterClass:
436
+ Enabled: true
437
+
438
+ Style/RedundantRegexpEscape:
439
+ Enabled: true
440
+
441
+ Style/SingleArgumentDig:
442
+ Enabled: true
443
+
444
+ Style/SlicingWithRange:
445
+ Enabled: true
446
+
447
+ Style/StringChars:
448
+ Enabled: true
449
+
450
+ Style/StringConcatenation:
451
+ Enabled: true