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 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