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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem "rake"
6
+ gem "rspec"
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ task "default" => "spec"
5
+
6
+ require "rspec/core/rake_task"
7
+ RSpec::Core::RakeTask.new do |t|
8
+ t.pattern = 'spec/**/*_spec.rb'
9
+ t.rspec_opts = ["--colour", "--format", "nested"]
10
+ end
@@ -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
@@ -0,0 +1,3 @@
1
+ module Wherever
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,2 @@
1
+ require 'rspec'
2
+ require 'wherever'
@@ -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
@@ -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