leap 0.2.6 → 0.3.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.3.0
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.6"
8
+ s.version = "0.3.0"
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-07-02}
12
+ s.date = %q{2010-07-06}
13
13
  s.description = %q{Leap to conclusions}
14
14
  s.email = %q{andy@rossmeissl.net}
15
15
  s.extra_rdoc_files = [
@@ -28,7 +28,9 @@ Gem::Specification.new do |s|
28
28
  "lib/leap/committee.rb",
29
29
  "lib/leap/core_ext.rb",
30
30
  "lib/leap/decision.rb",
31
+ "lib/leap/deliberation.rb",
31
32
  "lib/leap/quorum.rb",
33
+ "lib/leap/report.rb",
32
34
  "lib/leap/subject.rb",
33
35
  "test/helper.rb",
34
36
  "test/test_leap.rb"
@@ -10,7 +10,9 @@ module Leap
10
10
  def report(characteristics, considerations)
11
11
  quorums.grab do |quorum|
12
12
  next unless quorum.satisfied_by? characteristics
13
- quorum.acknowledge characteristics, considerations.dup
13
+ if conclusion = quorum.acknowledge(characteristics, considerations.dup)
14
+ ::Leap::Report.new quorum => conclusion
15
+ end
14
16
  end
15
17
  end
16
18
 
data/lib/leap/decision.rb CHANGED
@@ -9,11 +9,12 @@ module Leap
9
9
  end
10
10
 
11
11
  def make(characteristics, *considerations)
12
- committees.reverse.inject(characteristics) do |characteristics, committee|
13
- if report = committee.report(characteristics, considerations)
14
- characteristics[committee.name] = report
12
+ committees.reverse.inject(Deliberation.new(characteristics)) do |deliberation, committee|
13
+ if report = committee.report(deliberation.characteristics, considerations)
14
+ deliberation.reports[committee.name] = report
15
+ deliberation.characteristics[committee.name] = deliberation.reports[committee.name].conclusion
15
16
  end
16
- characteristics
17
+ deliberation
17
18
  end
18
19
  end
19
20
 
@@ -0,0 +1,15 @@
1
+ module Leap
2
+ class Deliberation
3
+ attr_accessor :characteristics
4
+ attr_accessor :reports
5
+
6
+ def initialize(characteristics)
7
+ self.characteristics = characteristics
8
+ self.reports = {}
9
+ end
10
+
11
+ def [](characteristic)
12
+ characteristics[characteristic]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ module Leap
2
+ class Report
3
+ attr_reader :conclusion, :quorum
4
+
5
+ def initialize(report)
6
+ raise ArgumentError, 'Please report with quorum => conclusion' unless report.is_a?(Hash) and report.length == 1
7
+ @quorum, @conclusion = report.first
8
+ end
9
+ end
10
+ end
data/lib/leap/subject.rb CHANGED
@@ -2,16 +2,16 @@ module Leap
2
2
  module Subject
3
3
  def self.extended(base)
4
4
  base.instance_variable_set :@decisions, {}
5
- base.send :attr_reader, :minutes
5
+ base.send :attr_reader, :deliberations
6
6
  end
7
7
  attr_reader :decisions
8
8
  def decide(goal, options = {}, &blk)
9
9
  decisions[goal] = ::Leap::Decision.new goal, options
10
10
  Blockenspiel.invoke(blk, decisions[goal])
11
11
  define_method goal do |*considerations|
12
- @minutes ||= {}
13
- @minutes[goal] = self.class.decisions[goal].make(send(self.class.decisions[goal].signature_method), *considerations)
14
- @minutes[goal][goal]
12
+ @deliberations ||= {}
13
+ @deliberations[goal] = self.class.decisions[goal].make send(self.class.decisions[goal].signature_method), *considerations
14
+ @deliberations[goal][goal]
15
15
  end
16
16
  end
17
17
  end
data/lib/leap.rb CHANGED
@@ -12,6 +12,8 @@ require 'leap/subject'
12
12
  require 'leap/committee'
13
13
  require 'leap/quorum'
14
14
  require 'leap/decision'
15
+ require 'leap/report'
16
+ require 'leap/deliberation'
15
17
 
16
18
  module Leap
17
19
  def self.included(base)
data/test/test_leap.rb CHANGED
@@ -22,11 +22,12 @@ class TestLeap < Test::Unit::TestCase
22
22
 
23
23
  should 'nevertheless remember how his lucky number was determined' do
24
24
  @person.lucky_number # make the decision
25
- assert_equal({ :magic_integer => 6, :lucky_number => 36, :age => 5}, @person.minutes[:lucky_number])
25
+ assert_equal({ :magic_integer => 6, :lucky_number => 36, :age => 5}, @person.deliberations[:lucky_number].characteristics)
26
+ assert_equal 'ninja style', @person.deliberations[:lucky_number].reports[:magic_integer].quorum.name
26
27
  end
27
28
 
28
29
  should 'but only as long as it had actually been determined' do
29
- assert_nil @person.minutes
30
+ assert_nil @person.deliberations
30
31
  end
31
32
  end
32
33
 
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
8
- - 6
9
- version: 0.2.6
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
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-07-02 00:00:00 -04:00
18
+ date: 2010-07-06 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -92,7 +92,9 @@ files:
92
92
  - lib/leap/committee.rb
93
93
  - lib/leap/core_ext.rb
94
94
  - lib/leap/decision.rb
95
+ - lib/leap/deliberation.rb
95
96
  - lib/leap/quorum.rb
97
+ - lib/leap/report.rb
96
98
  - lib/leap/subject.rb
97
99
  - test/helper.rb
98
100
  - test/test_leap.rb