sexp_processor 4.6.1 → 4.7.0

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
  SHA1:
3
- metadata.gz: 7ffce3965783a4dbd48fe6587d3f81516a787001
4
- data.tar.gz: 949deb314e41e4d2b6f5748a356531da78c66794
3
+ metadata.gz: a8c330cf1162f2b13522bf591471d69bd2daac84
4
+ data.tar.gz: 9f7001a49fb152b343544319f3de1c36f94a6b08
5
5
  SHA512:
6
- metadata.gz: 5209d34f5cc76beccf8040efb225959d9b4fa63b721236b172f2a68ab2ee979e7fa8c711ea0cd5d5ce1770d6cda4442b4c9e229b669695ce7cacccbb0de33886
7
- data.tar.gz: dd6ad34ec54201fae66c582950123339e68105d7128d17e229d5c64df957d21acabed68bed16b9689f147a0b2f8be5d06744887b89157104c786843eafc15966
6
+ metadata.gz: 918c51196a0a5d9757b20215de228e73bb25e6df71e42aa8fa2bfcf4c3a058937ffd0bdd49e9fc9f6bbfba4d175aa935d946d8a911d91cbc6ed0a886922513ac
7
+ data.tar.gz: b111b71bb1145d390125f6fa287a8b837916d92974a5665fcdda44b8427554306ceed81baa8625f292cae300267c4697f0aefdf20ec32450d5fb52fd06c95af2
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ === 4.7.0 / 2016-02-18
2
+
3
+ * 2 minor enhancements:
4
+
5
+ * Expand to support 2.3 in tests. (presidentbeef)
6
+ * Return enumerable for deep_each, each_sexp, and each_of_type. (ridiculous)
7
+
1
8
  === 4.6.1 / 2016-01-21
2
9
 
3
10
  * 1 bug fix:
data/lib/pt_testcase.rb CHANGED
@@ -76,7 +76,7 @@ class ParseTreeTestCase < Minitest::Test
76
76
  end
77
77
 
78
78
  def self.add_19tests name, hash
79
- add_tests "#{name}__19_20_21_22", hash # HACK?
79
+ add_tests "#{name}__19_20_21_22_23", hash # HACK?
80
80
  end
81
81
 
82
82
  def self.add_19edgecases ruby, sexp, cases
@@ -101,7 +101,7 @@ class ParseTreeTestCase < Minitest::Test
101
101
  testcases[verbose][klass] = testcases[nonverbose][klass]
102
102
  end
103
103
 
104
- VER_RE = "(1[89]|2[012])"
104
+ VER_RE = "(1[89]|2[0123])"
105
105
 
106
106
  def self.generate_test klass, node, data, input_name, output_name
107
107
  klass.send :define_method, "test_#{node}" do
data/lib/sexp.rb CHANGED
@@ -85,9 +85,10 @@ class Sexp < Array # ZenTest FULL
85
85
 
86
86
  ##
87
87
  # Recursively enumerates the sexp yielding to +block+ for every element.
88
- # TODO: test
89
88
 
90
89
  def deep_each(&block)
90
+ return enum_for(:deep_each) unless block_given?
91
+
91
92
  self.each_sexp do |sexp|
92
93
  block[sexp]
93
94
  sexp.deep_each(&block)
@@ -98,6 +99,8 @@ class Sexp < Array # ZenTest FULL
98
99
  # Enumeratates the sexp yielding to +b+ when the node_type == +t+.
99
100
 
100
101
  def each_of_type(t, &b)
102
+ return enum_for(:each_of_type) unless block_given?
103
+
101
104
  each do | elem |
102
105
  if Sexp === elem then
103
106
  elem.each_of_type(t, &b)
@@ -108,9 +111,10 @@ class Sexp < Array # ZenTest FULL
108
111
 
109
112
  ##
110
113
  # Recursively enumerates all sub-sexps skipping non-Sexp elements.
111
- # TODO: test
112
114
 
113
115
  def each_sexp
116
+ return enum_for(:each_sexp) unless block_given?
117
+
114
118
  self.each do |sexp|
115
119
  next unless Sexp === sexp
116
120
 
@@ -33,7 +33,7 @@ require 'sexp'
33
33
 
34
34
  class SexpProcessor
35
35
 
36
- VERSION = "4.6.1"
36
+ VERSION = "4.7.0"
37
37
 
38
38
  ##
39
39
  # Automatically shifts off the Sexp type before handing the
data/test/test_sexp.rb CHANGED
@@ -49,6 +49,7 @@ class TestSexp < SexpTestCase # ZenTest FULL
49
49
  @processor = SexpProcessor.new
50
50
  @sexp = @sexp_class.new(1, 2, 3)
51
51
  @basic_sexp = s(:lasgn, :var, s(:lit, 42))
52
+ @complex_sexp = s(:block, s(:lasgn, :foo, s(:str, "foo")), s(:if, s(:and, s(:true), s(:lit, 1)), s(:if, s(:lvar, :foo), s(:str, "bar"), nil), s(:true)))
52
53
  @re = s(:lit, 42)
53
54
  @bad1 = s(:lit, 24)
54
55
  @bad1 = s(:blah, 42)
@@ -310,6 +311,28 @@ class TestSexp < SexpTestCase # ZenTest FULL
310
311
  def test_to_s
311
312
  test_inspect
312
313
  end
314
+
315
+ def test_each_sexp
316
+ result = []
317
+ @basic_sexp.each_sexp { |_, val| result << val }
318
+ assert_equal [42], result
319
+ end
320
+
321
+ def test_each_sexp_without_block
322
+ assert_kind_of Enumerator, @basic_sexp.each_sexp
323
+ assert_equal [42], @basic_sexp.each_sexp.map { |_, n| n }
324
+ end
325
+
326
+ def test_deep_each
327
+ result = []
328
+ @complex_sexp.deep_each { |s| result << s if s.first == :if }
329
+ assert_equal [:if, :if], result.map { |k, _| k }
330
+ end
331
+
332
+ def test_deep_each_without_block
333
+ assert_kind_of Enumerator, @complex_sexp.deep_each
334
+ assert_equal [:if, :if], @complex_sexp.deep_each.select { |s, _| s == :if }.map { |k, _| k }
335
+ end
313
336
  end
314
337
 
315
338
  class TestSexpAny < SexpTestCase
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.6.1
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  qx3h45R1CAsObX0SQDIT+rRbQrtKz1GHIZTOFYvEJjUY1XmRTZupD3CJ8Q7sDqSy
30
30
  NLq5jm1fq6Y9Uolu3RJbmycf
31
31
  -----END CERTIFICATE-----
32
- date: 2016-01-21 00:00:00.000000000 Z
32
+ date: 2016-02-19 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: minitest
metadata.gz.sig CHANGED
Binary file