leap 0.2.1 → 0.2.2
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/Rakefile +1 -0
- data/VERSION +1 -1
- data/leap.gemspec +7 -4
- data/lib/leap/quorum.rb +1 -1
- data/lib/leap/subject.rb +1 -1
- data/test/helper.rb +36 -3
- data/test/test_leap.rb +43 -0
- metadata +23 -9
- data/test/test_decider.rb +0 -13
data/Rakefile
CHANGED
|
@@ -11,6 +11,7 @@ begin
|
|
|
11
11
|
gem.homepage = "http://github.com/rossmeissl/leap"
|
|
12
12
|
gem.authors = ["Andy Rossmeissl", "Seamus Abshere"]
|
|
13
13
|
gem.add_development_dependency "shoulda", ">= 0"
|
|
14
|
+
gem.add_development_dependency "characterizable", ">=0.0.2"
|
|
14
15
|
gem.add_dependency 'blockenspiel'
|
|
15
16
|
gem.add_dependency 'activesupport', '>=2.3.5'
|
|
16
17
|
end
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.2.
|
|
1
|
+
0.2.2
|
data/leap.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{leap}
|
|
8
|
-
s.version = "0.2.
|
|
8
|
+
s.version = "0.2.2"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Andy Rossmeissl", "Seamus Abshere"]
|
|
12
|
-
s.date = %q{2010-
|
|
12
|
+
s.date = %q{2010-06-09}
|
|
13
13
|
s.description = %q{Leap to conclusions}
|
|
14
14
|
s.email = %q{andy@rossmeissl.net}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
|
|
|
31
31
|
"lib/leap/quorum.rb",
|
|
32
32
|
"lib/leap/subject.rb",
|
|
33
33
|
"test/helper.rb",
|
|
34
|
-
"test/
|
|
34
|
+
"test/test_leap.rb"
|
|
35
35
|
]
|
|
36
36
|
s.homepage = %q{http://github.com/rossmeissl/leap}
|
|
37
37
|
s.rdoc_options = ["--charset=UTF-8"]
|
|
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
|
|
|
40
40
|
s.summary = %q{A heuristics engine for your Ruby objects}
|
|
41
41
|
s.test_files = [
|
|
42
42
|
"test/helper.rb",
|
|
43
|
-
"test/
|
|
43
|
+
"test/test_leap.rb"
|
|
44
44
|
]
|
|
45
45
|
|
|
46
46
|
if s.respond_to? :specification_version then
|
|
@@ -49,15 +49,18 @@ Gem::Specification.new do |s|
|
|
|
49
49
|
|
|
50
50
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
51
51
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
|
52
|
+
s.add_development_dependency(%q<characterizable>, [">= 0.0.2"])
|
|
52
53
|
s.add_runtime_dependency(%q<blockenspiel>, [">= 0"])
|
|
53
54
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
|
|
54
55
|
else
|
|
55
56
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
57
|
+
s.add_dependency(%q<characterizable>, [">= 0.0.2"])
|
|
56
58
|
s.add_dependency(%q<blockenspiel>, [">= 0"])
|
|
57
59
|
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
|
58
60
|
end
|
|
59
61
|
else
|
|
60
62
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
63
|
+
s.add_dependency(%q<characterizable>, [">= 0.0.2"])
|
|
61
64
|
s.add_dependency(%q<blockenspiel>, [">= 0"])
|
|
62
65
|
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
|
63
66
|
end
|
data/lib/leap/quorum.rb
CHANGED
data/lib/leap/subject.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Leap
|
|
|
8
8
|
decisions[goal] = ::Leap::Decision.new goal, options
|
|
9
9
|
Blockenspiel.invoke(blk, decisions[goal])
|
|
10
10
|
define_method goal do |*considerations|
|
|
11
|
-
self.class.decisions[goal].make send(self.class.decisions[goal].signature_method), considerations
|
|
11
|
+
self.class.decisions[goal].make send(self.class.decisions[goal].signature_method), *considerations
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
end
|
data/test/helper.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'rubygems'
|
|
2
2
|
require 'test/unit'
|
|
3
3
|
require 'shoulda'
|
|
4
|
+
require 'characterizable'
|
|
4
5
|
|
|
5
6
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
6
7
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
@@ -20,12 +21,16 @@ class Person
|
|
|
20
21
|
@date_of_birth = options[:date_of_birth] if options[:date_of_birth] && options[:date_of_birth].is_a?(Date)
|
|
21
22
|
end
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
include Characterizable
|
|
25
|
+
|
|
26
|
+
characterize do
|
|
27
|
+
has :name
|
|
28
|
+
has :age
|
|
29
|
+
has :date_of_birth
|
|
25
30
|
end
|
|
26
31
|
|
|
27
32
|
include Leap
|
|
28
|
-
decide :lucky_number, :with => :
|
|
33
|
+
decide :lucky_number, :with => :characteristics do
|
|
29
34
|
committee :lucky_number do
|
|
30
35
|
quorum 'super magic method', :needs => [:magic_integer, :magic_float] do |characteristics|
|
|
31
36
|
characteristics[:magic_integer] + characteristics[:magic_float]
|
|
@@ -57,3 +62,31 @@ class Person
|
|
|
57
62
|
end
|
|
58
63
|
end
|
|
59
64
|
end
|
|
65
|
+
|
|
66
|
+
class Place
|
|
67
|
+
attr_reader :name
|
|
68
|
+
attr_reader :seasonality
|
|
69
|
+
|
|
70
|
+
def initialize(options = {})
|
|
71
|
+
@name = options[:name] if options[:name]
|
|
72
|
+
@seasonality = options[:seasonality] if options[:seasonality]
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
include Characterizable
|
|
76
|
+
characterize do
|
|
77
|
+
has :name
|
|
78
|
+
has :seasonality
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
include Leap
|
|
82
|
+
decide :weather, :with => :characteristics do
|
|
83
|
+
committee :weather do
|
|
84
|
+
quorum 'from seasonality', :needs => :seasonality do |characteristics, season|
|
|
85
|
+
characteristics[:seasonality][season]
|
|
86
|
+
end
|
|
87
|
+
quorum 'default' do
|
|
88
|
+
:decent
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
data/test/test_leap.rb
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class TestLeap < Test::Unit::TestCase
|
|
4
|
+
context "A generic person" do
|
|
5
|
+
setup do
|
|
6
|
+
@person = Person.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
should 'still have a lucky number' do
|
|
10
|
+
assert_equal 0, @person.lucky_number
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "An aged person" do
|
|
15
|
+
setup do
|
|
16
|
+
@person = Person.new :age => 5
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
should 'indeed have a lucky number' do
|
|
20
|
+
assert_equal 36, @person.lucky_number
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context "A generic place" do
|
|
25
|
+
setup do
|
|
26
|
+
@place = Place.new
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
should 'have decent weather' do
|
|
30
|
+
assert_equal :decent, @place.weather
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "Vermont" do
|
|
35
|
+
setup do
|
|
36
|
+
@place = Place.new :name => 'Vermont', :seasonality => { :summer => :warm, :winter => :cold }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
should 'be warm in the summer' do
|
|
40
|
+
assert_equal :warm, @place.weather(:summer)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 2
|
|
8
|
-
-
|
|
9
|
-
version: 0.2.
|
|
8
|
+
- 2
|
|
9
|
+
version: 0.2.2
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Andy Rossmeissl
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-
|
|
18
|
+
date: 2010-06-09 00:00:00 -04:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -31,9 +31,23 @@ dependencies:
|
|
|
31
31
|
type: :development
|
|
32
32
|
version_requirements: *id001
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
|
-
name:
|
|
34
|
+
name: characterizable
|
|
35
35
|
prerelease: false
|
|
36
36
|
requirement: &id002 !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
segments:
|
|
41
|
+
- 0
|
|
42
|
+
- 0
|
|
43
|
+
- 2
|
|
44
|
+
version: 0.0.2
|
|
45
|
+
type: :development
|
|
46
|
+
version_requirements: *id002
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: blockenspiel
|
|
49
|
+
prerelease: false
|
|
50
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
37
51
|
requirements:
|
|
38
52
|
- - ">="
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
@@ -41,11 +55,11 @@ dependencies:
|
|
|
41
55
|
- 0
|
|
42
56
|
version: "0"
|
|
43
57
|
type: :runtime
|
|
44
|
-
version_requirements: *
|
|
58
|
+
version_requirements: *id003
|
|
45
59
|
- !ruby/object:Gem::Dependency
|
|
46
60
|
name: activesupport
|
|
47
61
|
prerelease: false
|
|
48
|
-
requirement: &
|
|
62
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
49
63
|
requirements:
|
|
50
64
|
- - ">="
|
|
51
65
|
- !ruby/object:Gem::Version
|
|
@@ -55,7 +69,7 @@ dependencies:
|
|
|
55
69
|
- 5
|
|
56
70
|
version: 2.3.5
|
|
57
71
|
type: :runtime
|
|
58
|
-
version_requirements: *
|
|
72
|
+
version_requirements: *id004
|
|
59
73
|
description: Leap to conclusions
|
|
60
74
|
email: andy@rossmeissl.net
|
|
61
75
|
executables: []
|
|
@@ -80,7 +94,7 @@ files:
|
|
|
80
94
|
- lib/leap/quorum.rb
|
|
81
95
|
- lib/leap/subject.rb
|
|
82
96
|
- test/helper.rb
|
|
83
|
-
- test/
|
|
97
|
+
- test/test_leap.rb
|
|
84
98
|
has_rdoc: true
|
|
85
99
|
homepage: http://github.com/rossmeissl/leap
|
|
86
100
|
licenses: []
|
|
@@ -113,4 +127,4 @@ specification_version: 3
|
|
|
113
127
|
summary: A heuristics engine for your Ruby objects
|
|
114
128
|
test_files:
|
|
115
129
|
- test/helper.rb
|
|
116
|
-
- test/
|
|
130
|
+
- test/test_leap.rb
|
data/test/test_decider.rb
DELETED