leap 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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
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.1"
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-05-12}
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/test_decider.rb"
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/test_decider.rb"
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
@@ -14,7 +14,7 @@ module Leap
14
14
 
15
15
  def acknowledge(characteristics, considerations)
16
16
  considerations.unshift characteristics
17
- process.call *considerations[0...process.arity]
17
+ process.call(*considerations[0...process.arity])
18
18
  end
19
19
  end
20
20
  end
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
- def attributes
24
- { :name => name, :age => age, :date_of_birth => date_of_birth}.delete_if { |key, val| val.nil? }
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 => :attributes do
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
- - 1
9
- version: 0.2.1
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-05-12 00:00:00 -04:00
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: blockenspiel
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: *id002
58
+ version_requirements: *id003
45
59
  - !ruby/object:Gem::Dependency
46
60
  name: activesupport
47
61
  prerelease: false
48
- requirement: &id003 !ruby/object:Gem::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: *id003
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/test_decider.rb
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/test_decider.rb
130
+ - test/test_leap.rb
data/test/test_decider.rb DELETED
@@ -1,13 +0,0 @@
1
- require 'helper'
2
-
3
- class TestDecider < 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
- end