sexp_processor 4.14.0 → 4.15.0
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +13 -0
- data/Rakefile +2 -0
- data/lib/sexp_matcher.rb +7 -9
- data/lib/sexp_processor.rb +1 -1
- data/test/test_sexp.rb +5 -1
- data.tar.gz.sig +0 -0
- metadata +6 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dae436d9eece3ad19a5d390da622ee2b73db2db5e73a4a6b06fe351e8759d45f
|
4
|
+
data.tar.gz: 64c4cda4d2f25f759812de2dea4bd7d85e948a6d9cba8507a7d64318c358d116
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8647ce87dca77073d067bd2027b139499fa8db297ea524c453d709f5e52f057c9355b8b2f49e265aa09aef7c1a29dc6038409fb5ba19d33c9fb2eeb972b4c210
|
7
|
+
data.tar.gz: 38eb466cf27e2eeb30a14c9eabae202ab3b1d7f119b7b2a715c848fdcf98b8e2e130d656e05336781572d7ca9ff74ea8185683e065e6af557cac50f483b92436
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
=== 4.15.0 / 2020-06-09
|
2
|
+
|
3
|
+
* 1 minor enhancement:
|
4
|
+
|
5
|
+
* Added `child` and `include` to Sexp::Matcher.parse language.
|
6
|
+
|
7
|
+
=== 4.14.1 / 2020-02-09
|
8
|
+
|
9
|
+
* 2 bug fixes:
|
10
|
+
|
11
|
+
* Declared support for ruby 2.2+ to gemspec.
|
12
|
+
* Fixed alias for `not?` to `-` for ruby <= 2.4. (nard-tech).
|
13
|
+
|
1
14
|
=== 4.14.0 / 2020-02-06
|
2
15
|
|
3
16
|
* 4 minor enhancements:
|
data/Rakefile
CHANGED
data/lib/sexp_matcher.rb
CHANGED
@@ -156,8 +156,9 @@ class Sexp #:nodoc:
|
|
156
156
|
Not.new arg
|
157
157
|
end
|
158
158
|
|
159
|
-
|
160
|
-
|
159
|
+
class << self
|
160
|
+
alias - not?
|
161
|
+
end
|
161
162
|
|
162
163
|
# TODO: add Sibling factory method?
|
163
164
|
|
@@ -454,7 +455,7 @@ class Sexp #:nodoc:
|
|
454
455
|
# | NAME:name => name.to_sym
|
455
456
|
# UP_NAME: /[A-Z]\w*/
|
456
457
|
# NAME : /:?[\w?!=~-]+/
|
457
|
-
# CMD :
|
458
|
+
# CMD : t | k | m | atom | not? | - | any | child | include
|
458
459
|
|
459
460
|
def parse_sexp
|
460
461
|
token = next_token
|
@@ -504,7 +505,7 @@ class Sexp #:nodoc:
|
|
504
505
|
##
|
505
506
|
# A collection of allowed commands to convert into matchers.
|
506
507
|
|
507
|
-
ALLOWED = [:t, :m, :k, :atom, :not?, :-, :any].freeze
|
508
|
+
ALLOWED = [:t, :m, :k, :atom, :not?, :-, :any, :child, :include].freeze
|
508
509
|
|
509
510
|
##
|
510
511
|
# Parses a balanced command. A command is denoted by square
|
@@ -759,11 +760,8 @@ class Sexp #:nodoc:
|
|
759
760
|
# +child+.
|
760
761
|
|
761
762
|
def satisfy? o
|
762
|
-
|
763
|
-
|
764
|
-
elsif o.kind_of? Sexp
|
765
|
-
o.search_each(child).any?
|
766
|
-
end
|
763
|
+
child.satisfy?(o) ||
|
764
|
+
(o.kind_of?(Sexp) && o.search_each(child).any?)
|
767
765
|
end
|
768
766
|
|
769
767
|
def == o # :nodoc:
|
data/lib/sexp_processor.rb
CHANGED
data/test/test_sexp.rb
CHANGED
@@ -906,7 +906,7 @@ class TestChild < MatcherTestCase
|
|
906
906
|
end
|
907
907
|
|
908
908
|
def sexp
|
909
|
-
s(:x, s(:a))
|
909
|
+
s(:x, s(:b), s(:a))
|
910
910
|
end
|
911
911
|
|
912
912
|
def bad_sexp
|
@@ -926,6 +926,8 @@ class TestChild < MatcherTestCase
|
|
926
926
|
|
927
927
|
def test_satisfy_eh_by_child
|
928
928
|
assert_satisfy matcher, s(:a)
|
929
|
+
assert_satisfy matcher, sexp
|
930
|
+
refute_satisfy matcher, bad_sexp
|
929
931
|
end
|
930
932
|
end
|
931
933
|
|
@@ -1602,8 +1604,10 @@ class TestSexpMatcherParser < Minitest::Test
|
|
1602
1604
|
test_parse "not?", delay{ not?(m(/^_$/)) }, "[not? [m /^_$/]]"
|
1603
1605
|
test_parse "not2", delay{ -_ }, "[- _]"
|
1604
1606
|
test_parse "any", delay{ q(:a) | q(:b) }, "[any (a) (b)]"
|
1607
|
+
test_parse "child", delay{ child(q(:str, m(/woot/))) }, "[child (str [m /woot/])]"
|
1605
1608
|
|
1606
1609
|
test_parse "klass", delay{ q(:lit, k(Float)) }, "(lit [k Float])"
|
1610
|
+
test_parse "const", delay{ q(:const, :Float) }, "(const :Float)"
|
1607
1611
|
|
1608
1612
|
test_bad_parse "open_sexp", "(a"
|
1609
1613
|
test_bad_parse "closed_sexp", "a)"
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sexp_processor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
m5x9IDiApM+vCELNwDXXGNFEnQBBK+wAe4Pek8o1V1TTOxL1kGPewVOitX1p3xoN
|
30
30
|
h7iEjga8iM1LbZUfiISZ+WrB
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date: 2020-
|
32
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: rdoc
|
@@ -57,14 +57,14 @@ dependencies:
|
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '3.
|
60
|
+
version: '3.22'
|
61
61
|
type: :development
|
62
62
|
prerelease: false
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '3.
|
67
|
+
version: '3.22'
|
68
68
|
description: |-
|
69
69
|
sexp_processor branches from ParseTree bringing all the generic sexp
|
70
70
|
processing tools with it. Sexp, SexpProcessor, Environment, etc... all
|
@@ -106,9 +106,9 @@ require_paths:
|
|
106
106
|
- lib
|
107
107
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
111
|
+
version: '2.2'
|
112
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - ">="
|
metadata.gz.sig
CHANGED
Binary file
|