skeem 0.2.20 → 0.2.21

Sign up to get free protection for your applications and to get access to all the features.
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