skeem 0.2.20 → 0.2.21

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
  SHA256:
3
- metadata.gz: f17c469661c1ebfa3ad17ae7685ac52a90b30fcd4b31d1d01b5af1c54ccfb765
4
- data.tar.gz: ccb061b50470a01a740c99f3e01c89a5e962216fa80d3147fa5d7bbc759b6a1d
3
+ metadata.gz: '0800d07342e60be56e4ecbd4d2040eb22f593586347eff9c51cf26b999c3b37d'
4
+ data.tar.gz: 1e31cc8f1cc6e0f60d229e62fbef4f29670cb20d5c22709d5d31ae7ca54a74ec
5
5
  SHA512:
6
- metadata.gz: bf7120cc110af075a3c5c3294492e5246e2857fe86d6090fba57fd8b8425f47871249710af82b1acf4471dc2ab2bf34770977acee3e98cee1cc7631382953930
7
- data.tar.gz: af3025b621249db56813fa5c91fee6b33a47943d025a18cf50e5490f92d99b6750225b2af47d66c57bd72947faafb6e96f84cf4ab3038bf437e306308c09fa89
6
+ metadata.gz: 35d189903d0c8089151a6a5d0235326c812df8f750a10a23b6e9cedfd31451c614f5a151ff1348f1ed2207a5b5f08cb8751ae3d4760a92a4530c4426f7514632
7
+ data.tar.gz: e9e7ad4c789da7fef78486914314e5491262a8d769b495cb1130bdffdc339d5234b44c320a0cb97eacbbf0b646e57541c9bb6799c4d31e3625d41ae05f14d35a
data/.rubocop.yml CHANGED
@@ -6,6 +6,9 @@ AllCops:
6
6
  Gemspec/DateAssignment:
7
7
  Enabled: true
8
8
 
9
+ Gemspec/RequireMFA: # new in 1.23
10
+ Enabled: false
11
+
9
12
  Layout/ArgumentAlignment:
10
13
  Enabled: false
11
14
 
@@ -132,6 +135,9 @@ Lint/RaiseException:
132
135
  Lint/RedundantDirGlobSort:
133
136
  Enabled: true
134
137
 
138
+ Lint/RefinementImportMethods: # new in 1.27
139
+ Enabled: true
140
+
135
141
  Lint/RequireRelativeSelfPath: # new in 1.22
136
142
  Enabled: true
137
143
 
@@ -162,12 +168,15 @@ Lint/UnusedMethodArgument:
162
168
  Lint/UselessAccessModifier:
163
169
  Enabled: true
164
170
 
165
- Lint/Void:
166
- Enabled: false
167
-
168
171
  Lint/UselessAssignment:
169
172
  Enabled: true
170
173
 
174
+ Lint/UselessRuby2Keywords: # new in 1.23
175
+ Enabled: true
176
+
177
+ Lint/Void:
178
+ Enabled: false
179
+
171
180
  Metrics/AbcSize:
172
181
  Enabled: false
173
182
 
@@ -201,15 +210,18 @@ Metrics/ModuleLength:
201
210
  Metrics/PerceivedComplexity:
202
211
  Enabled: false
203
212
 
213
+ Naming/BlockForwarding: # new in 1.24
214
+ Enabled: true
215
+
216
+ Naming/BlockParameterName:
217
+ Enabled: true
218
+
204
219
  Naming/ConstantName:
205
220
  Enabled: false
206
221
 
207
222
  Naming/ClassAndModuleCamelCase:
208
223
  Enabled: false
209
224
 
210
- Naming/BlockParameterName:
211
- Enabled: true
212
-
213
225
  Naming/InclusiveLanguage:
214
226
  Enabled: true
215
227
 
@@ -222,6 +234,9 @@ Naming/MethodName:
222
234
  Naming/VariableName:
223
235
  Enabled: false
224
236
 
237
+ Security/CompoundHash: # new in 1.28
238
+ Enabled: true
239
+
225
240
  Security/IoMethods: # new in 1.22
226
241
  Enabled: true
227
242
 
@@ -279,6 +294,15 @@ Style/ExpandPathArguments:
279
294
  Style/ExponentialNotation:
280
295
  Enabled: true
281
296
 
297
+ Style/FetchEnvVar: # new in 1.28
298
+ Enabled: true
299
+
300
+ Style/FileRead: # new in 1.24
301
+ Enabled: true
302
+
303
+ Style/FileWrite: # new in 1.24
304
+ Enabled: true
305
+
282
306
  Style/GuardClause:
283
307
  Enabled: false
284
308
 
@@ -303,6 +327,9 @@ Style/InPatternThen:
303
327
  Style/InverseMethods:
304
328
  Enabled: false
305
329
 
330
+ Style/MapToHash: # new in 1.24
331
+ Enabled: true
332
+
306
333
  Style/MissingRespondToMissing:
307
334
  Enabled: false
308
335
 
@@ -312,6 +339,9 @@ Style/MultilineInPatternThen:
312
339
  Style/NegatedIfElseCondition:
313
340
  Enabled: true
314
341
 
342
+ Style/NestedFileDirname: # new in 1.26
343
+ Enabled: true
344
+
315
345
  Style/Next:
316
346
  Enabled: false
317
347
 
@@ -327,6 +357,12 @@ Style/NumberedParametersLimit: # new in 1.22
327
357
  Style/NumericLiterals:
328
358
  Enabled: false
329
359
 
360
+ Style/ObjectThen: # new in 1.28
361
+ Enabled: true
362
+
363
+ Style/OpenStructUse: # new in 1.23
364
+ Enabled: true
365
+
330
366
  Style/QuotedSymbols:
331
367
  Enabled: true
332
368
 
@@ -335,9 +371,12 @@ Style/RaiseArgs:
335
371
 
336
372
  Style/RedundantArgument:
337
373
  Enabled: true
374
+
375
+ Style/RedundantInitialize: # new in 1.27
376
+ Enabled: true
338
377
 
339
378
  Style/RedundantReturn:
340
- Enabled: false
379
+ Enabled: true
341
380
 
342
381
  Style/RedundantSelf:
343
382
  Enabled: true
data/CHANGELOG.md CHANGED
@@ -1,8 +1,16 @@
1
+ ## [0.2.21] - 2022-04-24
2
+ - Dependencies updates, minor changes
3
+
4
+ ### Changed
5
+ - File `.rubocop.yml` Incorporating new Rubocop cops (up to version 1.28)
6
+ - File `grammar.rb`: Refactoring of a rule with grouping parentheses
7
+ - File `s_expr_builder` Change to relfect changes in grammar
8
+ - File `skeem.gempsec` Updated dependencies; minimal Ruby version is now 2.6+
9
+
1
10
  ## [0.2.20] - 2021-11-01
2
11
  - Code update to cope with changes in `Rley` v. 0.8.08
3
12
 
4
- ### Changed
5
- - File `grammar.rb`: Refactoring to cope with ? quantifier changes
13
+
6
14
  - File `s_expr_builder.rb`: Refactoring to cope with ? quantifier changes
7
15
  - File `skeem.gemspec` dependency updated for `Rley` v. 0.8.08
8
16
 
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2018-2019 Dimitri Geshef
3
+ Copyright (c) 2018-2022 Dimitri Geshef
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/lib/skeem/grammar.rb CHANGED
@@ -89,8 +89,7 @@ module Skeem
89
89
  rule 'number' => 'RATIONAL'
90
90
  rule 'number' => 'REAL'
91
91
  rule('assignment' => 'LPAREN SET! IDENTIFIER expression RPAREN').as 'assignment'
92
- rule('derived_expression' => 'LPAREN COND cond_clause+ RPAREN').as 'cond_form'
93
- rule('derived_expression' => 'LPAREN COND cond_clause* LPAREN ELSE sequence RPAREN RPAREN').as 'cond_else_form'
92
+ rule('derived_expression' => 'LPAREN COND cond_clause* (LPAREN ELSE sequence RPAREN)? RPAREN').as 'cond_form'
94
93
  rule('derived_expression' => 'LPAREN LET LPAREN binding_spec* RPAREN body RPAREN').as 'short_let_form'
95
94
  # TODO: implement "named let"
96
95
  rule('derived_expression' => 'LPAREN LET IDENTIFIER LPAREN binding_spec* RPAREN body RPAREN') # .as 'named_form'
data/lib/skeem/parser.rb CHANGED
@@ -36,7 +36,7 @@ module Skeem
36
36
  raise StandardError, line1 + line2
37
37
  end
38
38
 
39
- return engine.to_ptree(result)
39
+ engine.to_ptree(result)
40
40
  end
41
41
  end # class
42
42
  end # module
@@ -6,6 +6,7 @@ require_relative '../skm_exception'
6
6
  require_relative '../skm_pair'
7
7
 
8
8
  module Skeem
9
+ # rubocop: disable Metrics/ModuleLength
9
10
  module Primitive
10
11
  module PrimitiveBuilder
11
12
  include DatumDSL
@@ -1231,7 +1232,7 @@ module Skeem
1231
1232
  def remaining_args(arglist, aRuntime)
1232
1233
  case arglist
1233
1234
  when Array
1234
- raw_arg = arglist[1..-1]
1235
+ raw_arg = arglist[1..]
1235
1236
  when SkmPair
1236
1237
  raw_arg = arglist.cdr.to_a
1237
1238
  end
@@ -1239,4 +1240,5 @@ module Skeem
1239
1240
  end
1240
1241
  end # module
1241
1242
  end # module
1243
+ # rubocop: enable Metrics/ModuleLength
1242
1244
  end # module
data/lib/skeem/runtime.rb CHANGED
@@ -80,7 +80,7 @@ module Skeem
80
80
  end
81
81
 
82
82
  def depth
83
- return env_stack.size
83
+ env_stack.size
84
84
  end
85
85
 
86
86
  def push(anEnvironment)
@@ -214,14 +214,14 @@ module Skeem
214
214
  SkmUpdateBinding.new(theChildren[2], theChildren[3])
215
215
  end
216
216
 
217
- # rule('derived_expression' => 'LPAREN COND cond_clause_plus RPAREN').as 'cond_form'
217
+ # rule('derived_expression' => 'LPAREN COND cond_clause* (LPAREN ELSE sequence RPAREN)? RPAREN')
218
218
  def reduce_cond_form(_production, aRange, _tokens, theChildren)
219
- SkmConditional.new(aRange.low, theChildren[2], nil)
220
- end
221
-
222
- # rule('derived_expression' => 'LPAREN COND cond_clause_star LPAREN ELSE sequence RPAREN RPAREN').as 'cond_else_form'
223
- def reduce_cond_else_form(_production, aRange, _tokens, theChildren)
224
- SkmConditional.new(aRange.low, theChildren[2], SkmSequencingBlock.new(theChildren[5]))
219
+ if theChildren[3]
220
+ else_part = SkmSequencingBlock.new(theChildren[3][2])
221
+ else
222
+ else_part = nil
223
+ end
224
+ SkmConditional.new(aRange.low, theChildren[2], else_part)
225
225
  end
226
226
 
227
227
  # rule('derived_expression' => 'LPAREN LET LPAREN binding_spec_star RPAREN body RPAREN').as 'short_let_form'
@@ -21,7 +21,7 @@ module Skeem
21
21
  def self.create(aValue)
22
22
  lightweight = allocate
23
23
  lightweight.init_value(aValue)
24
- return lightweight
24
+ lightweight
25
25
  end
26
26
 
27
27
  def symbol
@@ -62,7 +62,7 @@ module Skeem
62
62
  # Reminder: terminals evaluate to themselves.
63
63
  # @param _runtime [Skeem::Runtime]
64
64
  def evaluate(_runtime)
65
- return self
65
+ self
66
66
  end
67
67
 
68
68
  # Return this object un-evaluated.
@@ -58,7 +58,7 @@ module Skeem
58
58
  SYNTAX-RULES
59
59
  UNQUOTE
60
60
  UNQUOTE-SPLICING
61
- ].map { |x| [x, x.sub(/\*$/, '_STAR')] }.to_h
61
+ ].to_h { |x| [x, x.sub(/\*$/, '_STAR')] }
62
62
 
63
63
  class ScanError < StandardError; end
64
64
 
@@ -289,7 +289,7 @@ other literal data (section 2.4).
289
289
  value = aLexeme.gsub(/(^")|("$)/, '')
290
290
  end
291
291
 
292
- return value
292
+ value
293
293
  end
294
294
 
295
295
  def to_identifier(aLexeme, aFormat)
@@ -298,7 +298,7 @@ other literal data (section 2.4).
298
298
  value = aLexeme
299
299
  end
300
300
 
301
- return value
301
+ value
302
302
  end
303
303
 
304
304
  def named_char(aLexeme)
data/lib/skeem/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Skeem
4
- VERSION = '0.2.20'
4
+ VERSION = '0.2.21'
5
5
  end
data/skeem.gemspec CHANGED
@@ -54,7 +54,7 @@ DESCR
54
54
  SUMMARY
55
55
  spec.homepage = 'https://github.com/famished-tiger/Skeem'
56
56
  spec.license = 'MIT'
57
- spec.required_ruby_version = '>= 2.5.0'
57
+ spec.required_ruby_version = '>= 2.6.0'
58
58
 
59
59
  spec.bindir = 'bin'
60
60
  spec.executables << 'skeem'
@@ -62,10 +62,10 @@ SUMMARY
62
62
  PkgExtending.pkg_files(spec)
63
63
  PkgExtending.pkg_documentation(spec)
64
64
  # Runtime dependencies
65
- spec.add_dependency 'rley', '~> 0.8.08'
65
+ spec.add_dependency 'rley', '~> 0.8.11'
66
66
 
67
67
  # Development dependencies
68
68
  spec.add_development_dependency 'bundler', '~> 2.0'
69
- spec.add_development_dependency 'rake', '~> 12.0'
69
+ spec.add_development_dependency 'rake', '>= 12.0'
70
70
  spec.add_development_dependency 'rspec', '~> 3.0'
71
71
  end
@@ -5,6 +5,7 @@ require_relative '../spec_helper' # Use the RSpec framework
5
5
  require_relative '../../lib/skeem/skm_simple_datum' # Load the classes under test
6
6
 
7
7
  module Skeem
8
+ # rubocop: disable Style/OpenStructUse
8
9
  describe SkmSimpleDatum do
9
10
  let(:pos) { double('fake-position') }
10
11
  let(:dummy_symbol) { double('fake-symbol') }
@@ -298,4 +299,5 @@ module Skeem
298
299
  end
299
300
  end # context
300
301
  end # describe
302
+ # rubocop: enable Style/OpenStructUse
301
303
  end # module
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skeem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.20
4
+ version: 0.2.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-01 00:00:00.000000000 Z
11
+ date: 2022-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rley
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.08
19
+ version: 0.8.11
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.08
26
+ version: 0.8.11
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '12.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '12.0'
55
55
  - !ruby/object:Gem::Dependency
@@ -149,14 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 2.5.0
152
+ version: 2.6.0
153
153
  required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  requirements:
155
155
  - - ">="
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  requirements: []
159
- rubygems_version: 3.1.4
159
+ rubygems_version: 3.3.7
160
160
  signing_key:
161
161
  specification_version: 4
162
162
  summary: Skeem is an interpreter of a subset of the Scheme programming language. Scheme
@@ -170,6 +170,7 @@ test_files:
170
170
  - spec/skeem/primitive/primitive_builder_spec.rb
171
171
  - spec/skeem/primitive/primitive_procedure_spec.rb
172
172
  - spec/skeem/runtime_spec.rb
173
+ - spec/skeem/s_expr_nodes_spec.rb
173
174
  - spec/skeem/skm_compound_datum_spec.rb
174
175
  - spec/skeem/skm_element_spec.rb
175
176
  - spec/skeem/skm_empty_list_spec.rb
@@ -178,6 +179,5 @@ test_files:
178
179
  - spec/skeem/skm_procedure_exec_spec.rb
179
180
  - spec/skeem/skm_simple_datum_spec.rb
180
181
  - spec/skeem/skm_unary_expression_spec.rb
181
- - spec/skeem/s_expr_nodes_spec.rb
182
182
  - spec/skeem/tokenizer_spec.rb
183
183
  - spec/skeem_spec.rb