wildcard_matchers 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.1.2
2
+ * minor bug fix and refactoring
3
+
1
4
  ## 0.1.1
2
5
  * ENHANCEMENT
3
6
  * for_any helper
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -1,10 +1,6 @@
1
1
  module WildcardMatchers
2
2
  module Helpers
3
- def for_all(expectation = nil, &block)
4
- expectation = block_given? ? block : expectation
5
-
6
- ForAll.new(expectation)
7
- end
3
+ define_wildcard_helper(:for_all)
8
4
 
9
5
  class ForAll < ::WildcardMatchers::WildcardMatcher
10
6
  protected
@@ -1,10 +1,6 @@
1
1
  module WildcardMatchers
2
2
  module Helpers
3
- def for_any(expectation = nil, &block)
4
- expectation = block_given? ? block : expectation
5
-
6
- ForAny.new(expectation)
7
- end
3
+ define_wildcard_helper(:for_any)
8
4
 
9
5
  class ForAny < ::WildcardMatchers::WildcardMatcher
10
6
  protected
@@ -1,10 +1,6 @@
1
1
  module WildcardMatchers
2
2
  module Helpers
3
- def nil_or(expectation = nil, &block)
4
- expectation = block_given? ? block : expectation
5
-
6
- NilOr.new(expectation)
7
- end
3
+ define_wildcard_helper(:nil_or)
8
4
 
9
5
  class NilOr < ::WildcardMatchers::WildcardMatcher
10
6
  protected
@@ -1,5 +1,14 @@
1
- module WildcardMathcers
1
+ module WildcardMatchers
2
2
  module Helpers
3
+ class << self
4
+ def define_wildcard_helper(name)
5
+ define_method(name) do |expectation = nil, &block|
6
+ expectation = block_given? ? block : expectation
7
+
8
+ ::WildcardMatchers::Helpers.const_get(name.to_s.camelcase(:upper)).new(expectation)
9
+ end
10
+ end
11
+ end
3
12
  end
4
13
  end
5
14
 
@@ -1,15 +1,13 @@
1
1
  module WildcardMatchers
2
2
  module Matchers
3
3
  # RSpeck::Mocks has hash_including
4
- def hash_includes(*args)
5
- HashIncludes.new(args)
6
- end
4
+ define_wildcard_matcher(:hash_includes)
7
5
 
8
6
  class HashIncludes < ::WildcardMatchers::WildcardMatcher
9
7
  protected
10
8
  def wildcard_match(actual)
11
9
  unless actual.is_a?(Hash)
12
- erros.push "#{position}: expect #{actual} to Hash"
10
+ errors.push "#{position}: expect #{actual} to Hash"
13
11
  end
14
12
 
15
13
  hash_to_match = {}
@@ -12,16 +12,12 @@ module WildcardMatchers
12
12
  require "addressable/uri"
13
13
  uri = ::Addressable::URI.parse(actual) # if actual is ::URI re-parse
14
14
  rescue LoadError
15
- require "uri"
16
- uri = actual.is_a?(URI) ? actual : ::URI.parse(actual)
15
+ require "uri".tapp
16
+ uri = actual.is_a?(::URI) ? actual : ::URI.parse(actual)
17
17
  end
18
18
 
19
- begin
20
- expectation.each do |key, value|
21
- errors.push(*self.class.superclass.check_errors(uri.__send__(key), value, position + "[#key.inspect}]"))
22
- end
23
- rescue ::URI::Error
24
- errors.push("#{position}: expect #{actual} to be parsed as uri")
19
+ expectation.each do |key, value|
20
+ errors.push(*self.class.superclass.check_errors(uri.__send__(key), value, position + "[#{key.inspect}]"))
25
21
  end
26
22
  end
27
23
  end
@@ -1,28 +1,55 @@
1
+ require "facets/string/camelcase"
2
+
1
3
  module WildcardMatchers
2
4
  module Matchers
3
- def is_a(klass)
5
+ class << self
6
+ def define_wildcard_matcher(name, &block)
7
+ if block_given?
8
+ define_method(name, &block)
9
+ else
10
+ define_method(name) do |*args|
11
+ ::WildcardMatchers::Matchers.const_get(name.to_s.camelcase(:upper)).new(args)
12
+ end
13
+ end
14
+ end
15
+
16
+ def define_wildcard_matcher_with_proc(name, &block)
17
+ raise "no block defined" unless block_given?
18
+
19
+ define_method(name) do
20
+ block
21
+ end
22
+ end
23
+ end
24
+
25
+ # is_a(klass)
26
+ define_wildcard_matcher(:is_a) do |klass|
4
27
  klass
5
28
  end
6
29
 
30
+ # is_a_string
31
+ # is_a_integer
32
+ # is_a_float
33
+ # is_a_hash
34
+ # is_a_array
7
35
  [ String, Integer, Float, Hash, Array ].each do |klass|
8
- module_eval %{
9
- def is_a_#{klass.to_s.downcase}
10
- #{klass.inspect}
11
- end
12
- }
36
+ define_wildcard_matcher("is_a_#{klass.to_s.downcase}") do
37
+ klass
38
+ end
13
39
  end
14
40
 
15
- def is_bool
16
- lambda {|bool| TrueClass === bool or FalseClass === bool }
41
+ # is_bool
42
+ define_wildcard_matcher_with_proc(:is_bool) do |bool|
43
+ TrueClass === bool or FalseClass === bool
17
44
  end
18
45
 
19
- def is_time
20
- lambda do |time|
21
- require "time"
22
- time.is_a?(Time) or (Time.parse(time) rescue false)
23
- end
46
+ # is_time
47
+ define_wildcard_matcher_with_proc(:is_time) do |time|
48
+ require "time"
49
+ time.is_a?(Time) or (Time.parse(time) rescue false)
24
50
  end
25
51
 
52
+ # TODO: DSL
26
53
  def is_a_member_of(*args)
27
54
  lambda do |item|
28
55
  args.flatten.any? {|expected| expected === item }
@@ -14,11 +14,13 @@ Gem::Specification.new do |gem|
14
14
 
15
15
  gem.version = File.read(File.join(File.dirname(__FILE__), "VERSION")).chomp
16
16
 
17
+ gem.add_dependency "facets"
18
+
17
19
  gem.add_development_dependency "rake"
18
20
  gem.add_development_dependency "rspec"
19
21
  gem.add_development_dependency "autowatchr"
20
22
 
21
- # your choic
23
+ # your choice
22
24
  gem.add_development_dependency "addressable"
23
25
 
24
26
  # for debug
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wildcard_matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-05 00:00:00.000000000 Z
12
+ date: 2012-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: facets
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: rake
16
32
  requirement: !ruby/object:Gem::Requirement