range_dsl 0.1.2 → 0.1.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -27,6 +27,16 @@ module RangeDsl
27
27
  "#{left_str} #{name_for_inspect} #{right_str}"
28
28
  end
29
29
 
30
+ def eql?(other)
31
+ (other.class == self.class) &&
32
+ self.left.eql?(other.left) && self.right.eql?(other.right)
33
+ end
34
+ alias_method :==, :eql?
35
+
36
+ def hash
37
+ "#{self.class.name}:#{inspect}".hash
38
+ end
39
+
30
40
  private
31
41
  def require_brace?(other)
32
42
  return false unless other.is_a?(ConnectionExp::Base)
@@ -14,6 +14,16 @@ module RangeDsl
14
14
  args = @values.inspect.gsub(/^\[|\]$/, '')
15
15
  "#{name_for_inspect}(#{args})"
16
16
  end
17
+
18
+ def eql?(other)
19
+ (other.class == self.class) && (self.values == other.values)
20
+ end
21
+ alias_method :==, :eql?
22
+
23
+ def hash
24
+ "#{self.class.name}:#{inspect}".hash
25
+ end
26
+
17
27
  end
18
28
 
19
29
  class Any < Base
@@ -17,6 +17,15 @@ module RangeDsl
17
17
  def inspect
18
18
  "eq(#{@value.inspect})"
19
19
  end
20
+
21
+ def eql?(other)
22
+ (other.value == self.value) && (other.class == self.class)
23
+ end
24
+ alias_method :==, :eql?
25
+
26
+ def hash
27
+ "#{self.class.name}:#{inspect}".hash
28
+ end
20
29
  end
21
30
 
22
31
  class NotEqual < Equal
@@ -17,11 +17,21 @@ module RangeDsl
17
17
  def inspect
18
18
  "not_be(#{@src.inspect})"
19
19
  end
20
+
21
+ def eql?(other)
22
+ (other.class == self.class) && self.src.eql?(other.src)
23
+ end
24
+ alias_method :==, :eql?
25
+
26
+ def hash
27
+ "#{self.class.name}:#{inspect}".hash
28
+ end
20
29
  end
21
30
 
22
31
  class Func
23
32
  include ConnectionExp::Client
24
33
 
34
+ attr_reader :block_str
25
35
  def initialize(block_str = nil, &block)
26
36
  @block_str = block_str
27
37
  @block = block
@@ -34,6 +44,16 @@ module RangeDsl
34
44
  def inspect
35
45
  "func" << (@block_str ? "(#{@block_str.inspect})" : '{}')
36
46
  end
47
+
48
+ def eql?(other)
49
+ return false if @block_str.nil?
50
+ (other.class == self.class) && self.block_str.eql?(other.block_str)
51
+ end
52
+ alias_method :==, :eql?
53
+
54
+ def hash
55
+ "#{self.class.name}:#{inspect}".hash
56
+ end
37
57
  end
38
58
 
39
59
  end
@@ -20,6 +20,15 @@ module RangeDsl
20
20
  def inspect
21
21
  "#{name_for_inspect}(#{@value.inspect})"
22
22
  end
23
+
24
+ def eql?(other)
25
+ (other.value == self.value) && (other.class == self.class)
26
+ end
27
+ alias_method :==, :eql?
28
+
29
+ def hash
30
+ "#{self.class.name}:#{inspect}".hash
31
+ end
23
32
  end
24
33
 
25
34
  class GreaterThanEqual < Base
data/range_dsl.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{range_dsl}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["akimatter"]
@@ -4,9 +4,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
4
4
  describe "RangeDsl" do
5
5
  describe "introduction" do
6
6
  it "1,2と5以上はtrue" do
7
- r = RangeDsl.compile do
8
- any 1, 2, gte(5)
9
- end
7
+ r = RangeDsl.compile{any 1, 2, gte(5)}
10
8
  r.include?(-10000).should == false
11
9
  r.include?(0).should == false
12
10
  r.include?(1).should == true
@@ -16,6 +14,7 @@ describe "RangeDsl" do
16
14
  r.include?(5).should == true
17
15
  r.include?(6).should == true
18
16
  r.include?(10000).should == true
17
+ r.should == RangeDsl.compile{any 1, 2, gte(5)}
19
18
  end
20
19
  end
21
20
 
@@ -29,6 +28,7 @@ describe "RangeDsl" do
29
28
  @r1.include?(100.0).should == true
30
29
  @r1.include?(1234567890).should == true
31
30
  @r1.inspect.should == "gte(100)"
31
+ @r1.should == RangeDsl.gte(100)
32
32
  end
33
33
  end
34
34
  end
@@ -91,11 +91,12 @@ describe "RangeDsl" do
91
91
  @r1.include?(100.0001).should == false
92
92
  @r1.include?(101).should == false
93
93
  @r1.inspect.should == "eq(100)"
94
+ @r1.should == RangeDsl.eq(100)
94
95
  end
95
96
  end
96
97
  end
97
98
 
98
- describe "lt" do
99
+ describe "neq" do
99
100
  [:neq, :not_equal].each do |operator|
100
101
  it operator do
101
102
  @r1 = RangeDsl.send(operator, 100)
@@ -106,6 +107,7 @@ describe "RangeDsl" do
106
107
  @r1.include?(100.0001).should == true
107
108
  @r1.include?(101).should == true
108
109
  @r1.inspect.should == "neq(100)"
110
+ @r1.should == RangeDsl.neq(100)
109
111
  end
110
112
  end
111
113
  end
@@ -130,6 +132,7 @@ describe "RangeDsl" do
130
132
  @r1.include?(7.1).should == false
131
133
  @r1.include?(8).should == false
132
134
  @r1.inspect.should == "any(3, 7)"
135
+ @r1.should == RangeDsl.any(3, 7)
133
136
  end
134
137
  end
135
138
  end
@@ -148,6 +151,7 @@ describe "RangeDsl" do
148
151
  r1.include?(100.1).should == true
149
152
  r1.include?(101).should == true
150
153
  r1.inspect.should == "not_be(eq(100))"
154
+ r1.should == RangeDsl.compile{ not_be(eq(100)) }
151
155
  end
152
156
  end
153
157
 
@@ -170,6 +174,7 @@ describe "RangeDsl" do
170
174
  @r2.include?(6.1).should == false
171
175
  @r2.include?(7).should == false
172
176
  @r2.inspect.should == "gt(3) & lt(6)"
177
+ @r2.should == RangeDsl.compile{ gt(3) & lt(6) }
173
178
  end
174
179
  end
175
180
  end
@@ -267,6 +272,8 @@ describe "RangeDsl" do
267
272
  r1.include?(2).should == false
268
273
  r1.include?(3).should == true
269
274
  r1.inspect.should == "gte(1) & func{}"
275
+ # func{|v| v % 2 == 1} のブロックが取得できないので、常に一致しません。
276
+ r1.should_not == RangeDsl.compile{ gt(3) & lt(6) }
270
277
  end
271
278
 
272
279
  it "動的なブロックはinspectで出力できないので、文字列でも渡せるように" do
@@ -278,6 +285,7 @@ describe "RangeDsl" do
278
285
  r1.include?(2).should == false
279
286
  r1.include?(3).should == true
280
287
  r1.inspect.should == "gte(1) & func(\"{|v| v % 2 == 1}\")"
288
+ r1.should == RangeDsl.compile("gte(1) & func(\"{|v| v % 2 == 1}\")")
281
289
  end
282
290
  end
283
291
  end
@@ -286,6 +294,7 @@ describe "RangeDsl" do
286
294
  it "lt(3) | gt(30) | any(2, 14, 36)" do
287
295
  r2 = RangeDsl.compile("lt(3) | gt(30) | any(12, 14, 16)")
288
296
  r2.inspect.should == "lt(3) | gt(30) | any(12, 14, 16)"
297
+ r2.should == RangeDsl.compile("lt(3) | gt(30) | any(12, 14, 16)")
289
298
  end
290
299
 
291
300
  it "gte(3) & lt(10) & any(2, 4, 6)" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: range_dsl
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - akimatter