wherever 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 +4 -0
- data/Gemfile +6 -0
- data/Rakefile +10 -0
- data/lib/wherever.rb +34 -0
- data/lib/wherever/version.rb +3 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/wherever_spec.rb +36 -0
- data/wherever.gemspec +20 -0
- metadata +76 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
data/lib/wherever.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
module Wherever
|
2
|
+
|
3
|
+
class Builder
|
4
|
+
|
5
|
+
instance_methods.each do |m|
|
6
|
+
undef_method m unless m =~ /^(__|respond_to|inspect)/
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@messages = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def method_missing(*message)
|
14
|
+
@messages << message # record the message
|
15
|
+
self # return self so we can keep recording
|
16
|
+
end
|
17
|
+
|
18
|
+
def __replay_all_messages__(obj)
|
19
|
+
@messages.inject(obj) do |obj, message|
|
20
|
+
obj.__send__(*message)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_proc
|
25
|
+
proc { |x| __replay_all_messages__(x) }
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def where
|
31
|
+
Builder.new
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Wherever do
|
4
|
+
|
5
|
+
include Wherever
|
6
|
+
|
7
|
+
describe "#where" do
|
8
|
+
|
9
|
+
it "returns a Wherever::Builder" do
|
10
|
+
self.where.should be_kind_of(Wherever::Builder)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
describe Wherever::Builder do
|
18
|
+
|
19
|
+
include Wherever
|
20
|
+
|
21
|
+
it "accepts arbitrary messages" do
|
22
|
+
where.whatever
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#to_proc" do
|
26
|
+
|
27
|
+
it "returns a Proc that replays the message chain" do
|
28
|
+
builder = (where < 5)
|
29
|
+
predicate = builder.to_proc
|
30
|
+
predicate.call(1).should be_true
|
31
|
+
predicate.call(6).should be_false
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/wherever.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "wherever/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
|
7
|
+
s.name = "wherever"
|
8
|
+
s.version = Wherever::VERSION
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
s.authors = ["Mike Williams"]
|
11
|
+
s.email = ["mdub@dogbiscuit.org"]
|
12
|
+
s.homepage = ""
|
13
|
+
s.summary = %q{Provides syntax sugar for Ruby predicate blocks}
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wherever
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Mike Williams
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-03-08 00:00:00 +11:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description:
|
23
|
+
email:
|
24
|
+
- mdub@dogbiscuit.org
|
25
|
+
executables: []
|
26
|
+
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files: []
|
30
|
+
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- Gemfile
|
34
|
+
- Rakefile
|
35
|
+
- lib/wherever.rb
|
36
|
+
- lib/wherever/version.rb
|
37
|
+
- spec/spec_helper.rb
|
38
|
+
- spec/wherever_spec.rb
|
39
|
+
- wherever.gemspec
|
40
|
+
has_rdoc: true
|
41
|
+
homepage: ""
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.5.0
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: Provides syntax sugar for Ruby predicate blocks
|
74
|
+
test_files:
|
75
|
+
- spec/spec_helper.rb
|
76
|
+
- spec/wherever_spec.rb
|