wildcard_matchers 0.0.1
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/.gitignore +17 -0
- data/.rspec +3 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +71 -0
- data/Rakefile +2 -0
- data/VERSION +1 -0
- data/lib/wildcard_matchers/matchers.rb +37 -0
- data/lib/wildcard_matchers/rspec.rb +16 -0
- data/lib/wildcard_matchers.rb +66 -0
- data/spec/spec.watchr +8 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/shared_examples.rb +25 -0
- data/spec/wildcard_matchers/matchers_spec.rb +53 -0
- data/spec/wildcard_matchers/rspec_spec.rb +27 -0
- data/spec/wildcard_matchers_spec.rb +96 -0
- data/wildcard_matchers.gemspec +23 -0
- metadata +133 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm gemset use wildcard_matchers --create
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 okitan
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
# wildcard_matchers
|
2
|
+
|
3
|
+
## General Usage
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
require "wildcard_matchers"
|
7
|
+
|
8
|
+
WildcardMatchers.wild_card_match("string", /str/) #=> true
|
9
|
+
|
10
|
+
require "wildcard_matchers/rspec"
|
11
|
+
|
12
|
+
describe "wildcard_matcher" do
|
13
|
+
it "should wildcard match" do
|
14
|
+
{ :a => [ "hoge", "fuga" ] }.should wildcard_match(:a => [ is_a_string, /^fu/ ])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
```
|
18
|
+
|
19
|
+
See specs, for more detail.
|
20
|
+
|
21
|
+
### wildcard matchers
|
22
|
+
* is_a(class)
|
23
|
+
* is_a(String) === String #=> true
|
24
|
+
* is_a_string === String #=> true
|
25
|
+
* is_bool
|
26
|
+
* is_bool === true #=> true
|
27
|
+
* is_bool === false #=> true
|
28
|
+
* is_bool === object #=> false
|
29
|
+
* is_time
|
30
|
+
* is_time === "2012-05-13" #=> true
|
31
|
+
* hash_includes
|
32
|
+
* hash_includes(:a) === { :a => 1 } #=> true
|
33
|
+
* hash_includes(:b) === { :a => 1 } #=> false
|
34
|
+
* hash_includes(:a => Integer) === { :a => 1 } #=> true
|
35
|
+
* hash_includes(:a => 2) === { :a => 1 } #=> false
|
36
|
+
|
37
|
+
## How it works
|
38
|
+
|
39
|
+
It is very simple. Recursive match using ===, and Class, Range, and Proc act as wildcard matchers.
|
40
|
+
|
41
|
+
You can create original matcher using lambda.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
original_matcher = lamda do |actual|
|
45
|
+
(…as you like…)
|
46
|
+
end
|
47
|
+
|
48
|
+
wildcard_matcher?("actual", original_matcher)
|
49
|
+
```
|
50
|
+
|
51
|
+
## Installation
|
52
|
+
|
53
|
+
Add this line to your application's Gemfile:
|
54
|
+
|
55
|
+
gem 'wildcard_matchers'
|
56
|
+
|
57
|
+
And then execute:
|
58
|
+
|
59
|
+
$ bundle
|
60
|
+
|
61
|
+
Or install it yourself as:
|
62
|
+
|
63
|
+
$ gem install wildcard_matchers
|
64
|
+
|
65
|
+
## Contributing
|
66
|
+
|
67
|
+
1. Fork it
|
68
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
69
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
70
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
71
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module WildcardMatchers
|
2
|
+
module Matchers
|
3
|
+
def is_a(klass)
|
4
|
+
klass
|
5
|
+
end
|
6
|
+
|
7
|
+
[ 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
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def is_bool
|
16
|
+
lambda {|bool| TrueClass === bool or FalseClass === bool }
|
17
|
+
end
|
18
|
+
|
19
|
+
def is_time
|
20
|
+
lambda do |time|
|
21
|
+
require "time"
|
22
|
+
time.is_a?(Time) or (Time.parse(time) rescue false)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# RSpeck::Mocks has hash_including
|
27
|
+
def hash_includes(*args)
|
28
|
+
hash_to_match = {}
|
29
|
+
hash_to_match = args.pop if args.last.is_a?(Hash)
|
30
|
+
|
31
|
+
lambda do |hash|
|
32
|
+
(args - hash.keys).size == 0 &&
|
33
|
+
hash_to_match.all? {|key, value| value === hash[key] }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "rspec"
|
2
|
+
|
3
|
+
RSpec::Matchers.define :wildcard_match do |expected|
|
4
|
+
match do |actual|
|
5
|
+
WildcardMatchers.wildcard_match?(actual, expected)
|
6
|
+
end
|
7
|
+
|
8
|
+
failure_message_for_should do |actual|
|
9
|
+
failures = [ default_failure_message_for_should ]
|
10
|
+
on_failure = proc {|message| failures << message }
|
11
|
+
|
12
|
+
WildcardMatchers.wildcard_match?(actual, expected, &on_failure)
|
13
|
+
|
14
|
+
failures.join("\n")
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require "wildcard_matchers/matchers"
|
2
|
+
|
3
|
+
module WildcardMatchers
|
4
|
+
include Matchers
|
5
|
+
|
6
|
+
def wildcard_match?(actual, expected, &on_failure)
|
7
|
+
on_failure = proc { return false } unless block_given?
|
8
|
+
|
9
|
+
recursive_match(actual, expected, &on_failure)
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
def recursive_match(actual, expected, position = ".", &on_failure)
|
14
|
+
# "case expected" should omit Array or Hash
|
15
|
+
# "case actual" should omit Proc
|
16
|
+
case expected
|
17
|
+
when Class
|
18
|
+
# when expected is Array or Hash (Class) comes here and do nothing
|
19
|
+
when Array
|
20
|
+
return check_array(actual, expected, position, &on_failure)
|
21
|
+
when Hash
|
22
|
+
return check_hash(actual, expected, position, &on_failure)
|
23
|
+
end
|
24
|
+
|
25
|
+
unless expected === actual
|
26
|
+
yield("#{position}: expect #{actual.inspect} to #{expected.inspect}")
|
27
|
+
false
|
28
|
+
else
|
29
|
+
true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# TODO: class ArrayMatcher ?
|
34
|
+
def check_array(actual, expected, position, &on_failure)
|
35
|
+
if expected.size == actual.size
|
36
|
+
actual.zip(expected).map.with_index do |(a, e), index|
|
37
|
+
recursive_match(a, e, position + "[#{index}]", &on_failure)
|
38
|
+
end.all?
|
39
|
+
else
|
40
|
+
yield <<_MESSAGE_
|
41
|
+
#{position}: expect Array size #{actual.size} to #{expected.size}
|
42
|
+
actual: #{actual.inspect}
|
43
|
+
expect: #{expected.inspect}
|
44
|
+
_MESSAGE_
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# TODO: class HashMatcher ?
|
50
|
+
def check_hash(actual, expected, position, &on_failure)
|
51
|
+
if (actual.keys - expected.keys).size == 0 && (expected.keys - actual.keys).size == 0
|
52
|
+
expected.map do |key, value|
|
53
|
+
recursive_match(actual[key], value, position + "[#{key.inspect}]", &on_failure)
|
54
|
+
end.all?
|
55
|
+
else
|
56
|
+
yield <<_MESSAGE_
|
57
|
+
#{position}: expect Hash keys #{actual.size} to #{expected.size}
|
58
|
+
+keys: #{actual.keys - expected.keys}
|
59
|
+
-keys: #{expected.keys - actual.keys }
|
60
|
+
_MESSAGE_
|
61
|
+
false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
module_function *self.instance_methods
|
66
|
+
end
|
data/spec/spec.watchr
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
2
|
+
require 'wildcard_matchers'
|
3
|
+
require "wildcard_matchers/rspec"
|
4
|
+
|
5
|
+
Dir[File.expand_path("support/**/*.rb", File.dirname(__FILE__))].each {|f| require f }
|
6
|
+
|
7
|
+
require "pry"
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
11
|
+
config.run_all_when_everything_filtered = true
|
12
|
+
end
|
13
|
+
|
14
|
+
# global debug function
|
15
|
+
# usage:
|
16
|
+
# wildcard_match?(actual, expected, &$debug)
|
17
|
+
$debug = proc {|message| puts message }
|
@@ -0,0 +1,25 @@
|
|
1
|
+
shared_examples_for "wildcard match" do |actual, matcher, *args|
|
2
|
+
expected = matcher.inspect + (args.size > 0 ? "(#{args.map(&:inspect).join(", ")})" : "")
|
3
|
+
|
4
|
+
it "#{actual.inspect} with #{expected}" do
|
5
|
+
if matcher.is_a?(Symbol) and WildcardMatchers.respond_to?(matcher)
|
6
|
+
# Note: some symbol comes here and may fail
|
7
|
+
wildcard_match?(actual, send(matcher, *args)).should be_true
|
8
|
+
else
|
9
|
+
wildcard_match?(actual, matcher).should be_true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
shared_examples_for "not wildcard match" do |actual, matcher, *args|
|
15
|
+
expected = matcher.inspect + (args.size > 0 ? "(#{args.map(&:inspect).join(", ")})" : "")
|
16
|
+
|
17
|
+
it "#{actual.inspect} with #{expected}" do
|
18
|
+
if matcher.is_a?(Symbol) and WildcardMatchers.respond_to?(matcher)
|
19
|
+
# Note: some symbol comes here and may fail
|
20
|
+
wildcard_match?(actual, send(matcher, *args)).should be_false
|
21
|
+
else
|
22
|
+
wildcard_match?(actual, matcher).should be_false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe WildcardMatchers::Matchers do
|
4
|
+
include WildcardMatchers
|
5
|
+
|
6
|
+
[ [ "string", String ],
|
7
|
+
[ 0, Integer ],
|
8
|
+
[ 0.1, Float ],
|
9
|
+
[ 0, Numeric ], # superclass
|
10
|
+
[ { :some => :hash }, Hash ],
|
11
|
+
[ [ 1, 2, 3 ], Array ],
|
12
|
+
].each do |actual, expected|
|
13
|
+
it_should_behave_like "wildcard match", actual, :is_a, expected
|
14
|
+
end
|
15
|
+
|
16
|
+
[ [ "string", :is_a_string ],
|
17
|
+
[ 0, :is_a_integer ],
|
18
|
+
[ 0.1, :is_a_float ],
|
19
|
+
[ { :some => :hash }, :is_a_hash ],
|
20
|
+
[ [ 1, 2, 3 ], :is_a_array ],
|
21
|
+
|
22
|
+
# is_bool
|
23
|
+
[ true, :is_bool ],
|
24
|
+
[ false, :is_bool ],
|
25
|
+
|
26
|
+
# is_time
|
27
|
+
[ Time.now, :is_time ],
|
28
|
+
[ Time.now.to_s, :is_time ],
|
29
|
+
[ "2012-05-10", :is_time ],
|
30
|
+
|
31
|
+
].each do |actual, matcher|
|
32
|
+
it_should_behave_like "wildcard match", actual, matcher
|
33
|
+
end
|
34
|
+
|
35
|
+
[ [ 0, :is_bool ],
|
36
|
+
].each do |actual, matcher|
|
37
|
+
it_should_behave_like "not wildcard match", actual, matcher
|
38
|
+
end
|
39
|
+
|
40
|
+
[ [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b ],
|
41
|
+
[ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => 1 ],
|
42
|
+
[ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => Integer ],
|
43
|
+
].each do |actual, matcher, *args|
|
44
|
+
it_should_behave_like "wildcard match", actual, matcher, *args
|
45
|
+
end
|
46
|
+
|
47
|
+
[ [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :d ],
|
48
|
+
[ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => 2 ],
|
49
|
+
[ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => String ],
|
50
|
+
].each do |actual, matcher, *args|
|
51
|
+
it_should_behave_like "not wildcard match", actual, matcher, *args
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "matcher wildcard_match" do
|
4
|
+
[ [ 1, Integer ]
|
5
|
+
].each do |actual, expected|
|
6
|
+
it "match #{actual} with #{expected}" do
|
7
|
+
actual.should wildcard_match(expected)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
[ [ 1, String, ".: expect 1 to String" ],
|
12
|
+
[ [ 1 ], [ String ], ".[0]: expect 1 to String" ],
|
13
|
+
[ [ 1 ], [], ".: expect Array size 1 to 0" ],
|
14
|
+
[ { :a => 1 }, {}, "+keys: [:a]" ],
|
15
|
+
[ {}, {:a => 1}, "-keys: [:a]" ],
|
16
|
+
[ { :a => 1}, {:a => 0}, ".[:a]: expect 1 to 0" ],
|
17
|
+
].each do |actual, expected, failure_message|
|
18
|
+
it "not match #{actual} with #{expected} and return #{failure_message.inspect} as failure_message" do
|
19
|
+
begin
|
20
|
+
actual.should wildcard_match(expected)
|
21
|
+
fail # if matched come here and must fail
|
22
|
+
rescue => e
|
23
|
+
e.message.should include(failure_message)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
target = WildcardMatchers
|
4
|
+
|
5
|
+
describe target do
|
6
|
+
include target
|
7
|
+
|
8
|
+
context ".wildcard_match?" do
|
9
|
+
[ [ "string", String ],
|
10
|
+
[ "string", /^str/ ],
|
11
|
+
[ 0, Integer ],
|
12
|
+
[ 2, (1..3) ],
|
13
|
+
[ 0.1, Float ],
|
14
|
+
[ 0, Numeric ], # superclass
|
15
|
+
[ { :some => :hash }, Hash ],
|
16
|
+
[ [ 1, 2, 3 ], Array ],
|
17
|
+
].each do |actual, expected|
|
18
|
+
it_should_behave_like "wildcard match", actual, expected
|
19
|
+
end
|
20
|
+
|
21
|
+
context "matches recursively in Array" do
|
22
|
+
[ [ [ 1, 2, "3"], [ Integer, Integer, String ] ],
|
23
|
+
[ [ 1, 2, [ 1 ] ], [ Integer, Integer, [ Integer ] ] ],
|
24
|
+
].each do |actual, expected|
|
25
|
+
it_should_behave_like "wildcard match", actual, expected
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "does not match recursively in Array" do
|
30
|
+
[ [ [ 1, 2, 3 ], [ Integer, Integer, String ] ],
|
31
|
+
[ [ 1, 2, 3 ], [ Integer, String, Integer ] ],
|
32
|
+
[ [ 1, 2, [ 1 ] ], [ Integer, Integer, [ String ] ] ],
|
33
|
+
].each do |actual, expected|
|
34
|
+
it_should_behave_like "not wildcard match", actual, expected
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "matches recursively in Hash" do
|
39
|
+
[ [ { :hoge => "fuga", :fuga => "ugu" }, { :hoge => String, :fuga => String } ],
|
40
|
+
[ { :hoge => "fuga", :fuga => { :ugu => "piyo" } }, { :hoge => String, :fuga => { :ugu => String } } ],
|
41
|
+
].each do |actual, expected|
|
42
|
+
it_should_behave_like "wildcard match", actual, expected
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "matches recursively in Hash" do
|
47
|
+
[ [ { :hoge => "fuga" }, {} ],
|
48
|
+
[ { :hoge => "fuga", :fuga => "ugu" }, { :hoge => String, :fuga => Integer } ],
|
49
|
+
[ { :hoge => "fuga", :fuga => "ugu" }, { :hoge => String, :ugu => String } ],
|
50
|
+
[ { :hoge => "fuga", :fuga => { :ugu => "piyo" } }, { :hoge => String, :fuga => { :ugu => Integer } } ],
|
51
|
+
[ { :hoge => "fuga", :fuga => { :ugu => "piyo" } }, { :hoge => String, :fuga => { :fuga => String } } ],
|
52
|
+
].each do |actual, expected|
|
53
|
+
it_should_behave_like "not wildcard match", actual, expected
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# TODO: more complex example array in hash and hash in array
|
58
|
+
context "match recursively Array and Hash" do
|
59
|
+
[ [ [ 1, [ 2 ], { :first => 4, :second => [ 5, 6 ] } ],
|
60
|
+
[ Integer, [ Integer ], { :first => Integer, :second => [ Integer, Integer ] } ] ],
|
61
|
+
|
62
|
+
[ { :first => 1, :second => [ 2 ], :third => { :one => 3 } },
|
63
|
+
{ :first => Integer, :second => [ Integer ], :third => { :one => Integer } }
|
64
|
+
]
|
65
|
+
].each do |actual, expected|
|
66
|
+
it_should_behave_like "wildcard match", actual, expected
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context ".wildcard_matches with on_failure callback" do
|
72
|
+
it "can get failure message" do
|
73
|
+
actual = true
|
74
|
+
expected = false
|
75
|
+
|
76
|
+
failure = nil
|
77
|
+
wildcard_match?(actual, expected) {|message| failure = message }
|
78
|
+
failure.should =~ /#{actual.inspect} .+ #{expected.inspect}/
|
79
|
+
end
|
80
|
+
|
81
|
+
it "can get several failure messages" do
|
82
|
+
actual = [ 1, 0, 2 ]
|
83
|
+
expected = [ 3, 0, 4 ]
|
84
|
+
|
85
|
+
failures = []
|
86
|
+
wildcard_match?(actual, expected) {|message| failures << message }
|
87
|
+
|
88
|
+
# TODO: dog fooding of rspec-matcher
|
89
|
+
expect_failures = [ /#{actual.first}.+#{expected.first}/,
|
90
|
+
/#{actual.last}.+#{expected.last}/ ]
|
91
|
+
wildcard_match?(failures, expect_failures, &$debug).should be_true
|
92
|
+
end
|
93
|
+
|
94
|
+
# TODO: more failure message
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
Gem::Specification.new do |gem|
|
3
|
+
gem.authors = ["okitan"]
|
4
|
+
gem.email = ["okitakunio@gmail.com"]
|
5
|
+
gem.description = "wildcard matchers"
|
6
|
+
gem.summary = "wildcard matchers which can use in rspec"
|
7
|
+
gem.homepage = "https://github.com/okitan/wildcard_matchers"
|
8
|
+
|
9
|
+
gem.files = `git ls-files`.split($\)
|
10
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
11
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
12
|
+
gem.name = "wildcard_matchers"
|
13
|
+
gem.require_paths = ["lib"]
|
14
|
+
|
15
|
+
gem.version = File.read(File.join(File.dirname(__FILE__), "VERSION")).chomp
|
16
|
+
|
17
|
+
gem.add_development_dependency "rake"
|
18
|
+
gem.add_development_dependency "rspec"
|
19
|
+
gem.add_development_dependency "autowatchr"
|
20
|
+
|
21
|
+
# for debug
|
22
|
+
gem.add_development_dependency "pry"
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wildcard_matchers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- okitan
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-12 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: autowatchr
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: pry
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description: wildcard matchers
|
79
|
+
email:
|
80
|
+
- okitakunio@gmail.com
|
81
|
+
executables: []
|
82
|
+
extensions: []
|
83
|
+
extra_rdoc_files: []
|
84
|
+
files:
|
85
|
+
- .gitignore
|
86
|
+
- .rspec
|
87
|
+
- .rvmrc
|
88
|
+
- Gemfile
|
89
|
+
- LICENSE
|
90
|
+
- README.md
|
91
|
+
- Rakefile
|
92
|
+
- VERSION
|
93
|
+
- lib/wildcard_matchers.rb
|
94
|
+
- lib/wildcard_matchers/matchers.rb
|
95
|
+
- lib/wildcard_matchers/rspec.rb
|
96
|
+
- spec/spec.watchr
|
97
|
+
- spec/spec_helper.rb
|
98
|
+
- spec/support/shared_examples.rb
|
99
|
+
- spec/wildcard_matchers/matchers_spec.rb
|
100
|
+
- spec/wildcard_matchers/rspec_spec.rb
|
101
|
+
- spec/wildcard_matchers_spec.rb
|
102
|
+
- wildcard_matchers.gemspec
|
103
|
+
homepage: https://github.com/okitan/wildcard_matchers
|
104
|
+
licenses: []
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubyforge_project:
|
123
|
+
rubygems_version: 1.8.24
|
124
|
+
signing_key:
|
125
|
+
specification_version: 3
|
126
|
+
summary: wildcard matchers which can use in rspec
|
127
|
+
test_files:
|
128
|
+
- spec/spec.watchr
|
129
|
+
- spec/spec_helper.rb
|
130
|
+
- spec/support/shared_examples.rb
|
131
|
+
- spec/wildcard_matchers/matchers_spec.rb
|
132
|
+
- spec/wildcard_matchers/rspec_spec.rb
|
133
|
+
- spec/wildcard_matchers_spec.rb
|