rools 0.1.3 → 0.1.4
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/CHANGELOG +14 -6
- data/RAKEFILE +2 -4
- data/README +2 -1
- data/lib/rools.rb +11 -1
- data/lib/rools/default_parameter_proc.rb +9 -0
- data/lib/rools/rule.rb +10 -0
- data/lib/rools/rule_set.rb +23 -2
- metadata +29 -34
data/CHANGELOG
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
-
- 0.1.
|
2
|
-
|
3
|
-
|
1
|
+
- 0.1.4
|
2
|
+
* Removed "examples" folder since my RDoc kung-fu cannot be denied and the examples were redundant
|
3
|
+
* Added Rools::open to rools.rb
|
4
|
+
* Added pscp.rb to create SshPublishers on Win32 with PuttySCP
|
5
|
+
* Added Rools::RuleSet#assert return codes, :pass and :fail
|
6
|
+
* Added stop and fail methods to RuleSet, Rules, and DefaultParameterProc
|
7
|
+
* Built Gem under Ruby 1.8.2 to fix yaml bug for RubyForge distribution
|
8
|
+
|
9
|
+
- 0.1.3
|
10
|
+
Finished most documentation
|
11
|
+
Tweaked the rakefile
|
12
|
+
|
4
13
|
- 0.1.2
|
5
14
|
Added RAKEFILE, README, CHANGELOG
|
6
15
|
|
7
|
-
- 0.1.
|
8
|
-
|
9
|
-
Tweaked the rakefile
|
16
|
+
- 0.1.1
|
17
|
+
Added RuleConsequenceError
|
data/RAKEFILE
CHANGED
@@ -5,13 +5,12 @@ require 'rake/gempackagetask'
|
|
5
5
|
require 'rake/contrib/rubyforgepublisher'
|
6
6
|
require 'pscp'
|
7
7
|
|
8
|
-
PACKAGE_VERSION = '0.1.
|
8
|
+
PACKAGE_VERSION = '0.1.4'
|
9
9
|
|
10
10
|
PACKAGE_FILES = FileList[
|
11
11
|
'README',
|
12
12
|
'CHANGELOG',
|
13
13
|
'RAKEFILE',
|
14
|
-
'lib/rools.rb',
|
15
14
|
'lib/**/*.rb'
|
16
15
|
].to_a
|
17
16
|
|
@@ -21,7 +20,7 @@ ENV['RUBYFORGE_USER'] = "ssmoot@rubyforge.org"
|
|
21
20
|
ENV['RUBYFORGE_PROJECT'] = "/var/www/gforge-projects/#{PROJECT}"
|
22
21
|
|
23
22
|
desc 'Release Files'
|
24
|
-
task :default => [:rdoc
|
23
|
+
task :default => [:rdoc]
|
25
24
|
|
26
25
|
# Generate the RDoc documentation
|
27
26
|
rd = Rake::RDocTask.new do |rdoc|
|
@@ -63,5 +62,4 @@ end
|
|
63
62
|
desc "Publish RDOC to RubyForge"
|
64
63
|
task :rubyforge => [:rdoc, :gem] do
|
65
64
|
Rake::SshDirPublisher.new(ENV['RUBYFORGE_USER'], ENV['RUBYFORGE_PROJECT'], 'doc').upload
|
66
|
-
Rake::SshFilePublisher.new(ENV['RUBYFORGE_USER'], ENV['RUBYFORGE_PROJECT'], 'pkg', "#{PROJECT}-#{PACKAGE_VERSION}.gem").upload
|
67
65
|
end
|
data/README
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
:nodoc: YOU SHOULD NOT BE VIEWING THIS FILE DIRECTLY. PLEASE USE: gem_server
|
2
|
+
= Rools -- A pure ruby rules-engine
|
2
3
|
|
3
4
|
Rools is a rules engine for abstracting business logic and program-flow. It's ideally suited to processing applications where the business logic undergoes frequent modification.
|
4
5
|
|
data/lib/rools.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
|
+
require 'rools/errors'
|
2
|
+
require 'rools/default_parameter_proc'
|
1
3
|
require 'rools/rule_set'
|
4
|
+
require 'rools/rule'
|
2
5
|
|
3
|
-
#
|
6
|
+
# All classes are contained in the Rools module
|
4
7
|
module Rools
|
8
|
+
|
9
|
+
@@rule_sets = {}
|
10
|
+
|
11
|
+
# open aliases Rools::RuleSet.new, and caches RuleSets loaded by path
|
12
|
+
def self.open(path = nil, &b)
|
13
|
+
path.nil? ? Rools::RuleSet.new(path, &b) : (@@rule_sets[path] ||= Rools::RuleSet.new(path))
|
14
|
+
end
|
5
15
|
end
|
@@ -47,5 +47,14 @@ module Rools
|
|
47
47
|
return @working_object if @working_object && args.size == 0
|
48
48
|
end
|
49
49
|
|
50
|
+
# Stops the current assertion. Does not indicate failure.
|
51
|
+
def stop(message = nil)
|
52
|
+
@rule.stop(message)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Stops the current assertion and change status to :fail
|
56
|
+
def fail(message = nil)
|
57
|
+
@rule.fail(message)
|
58
|
+
end
|
50
59
|
end
|
51
60
|
end
|
data/lib/rools/rule.rb
CHANGED
@@ -103,5 +103,15 @@ module Rools
|
|
103
103
|
raise RuleConsequenceError.new(rule, e)
|
104
104
|
end
|
105
105
|
end
|
106
|
+
|
107
|
+
# Stops the current assertion. Does not indicate failure.
|
108
|
+
def stop(message = nil)
|
109
|
+
@rule_set.stop(message)
|
110
|
+
end
|
111
|
+
|
112
|
+
# Stops the current assertion and change status to :fail
|
113
|
+
def fail(message = nil)
|
114
|
+
@rule_set.fail(message)
|
115
|
+
end
|
106
116
|
end
|
107
117
|
end
|
data/lib/rools/rule_set.rb
CHANGED
@@ -3,6 +3,10 @@ require 'rools/rule'
|
|
3
3
|
|
4
4
|
module Rools
|
5
5
|
class RuleSet
|
6
|
+
|
7
|
+
PASS = :pass
|
8
|
+
FAIL = :fail
|
9
|
+
|
6
10
|
# You can pass a set of Rools::Rules with a block parameter,
|
7
11
|
# or you can pass a file-path to evaluate.
|
8
12
|
def initialize(file = nil, &b)
|
@@ -52,9 +56,22 @@ module Rools
|
|
52
56
|
(@dependencies[@extend_rule_name] ||= []) << Rule.new(self, name, b)
|
53
57
|
end
|
54
58
|
|
59
|
+
# Stops the current assertion. Does not indicate failure.
|
60
|
+
def stop(message = nil)
|
61
|
+
@assert = false
|
62
|
+
end
|
63
|
+
|
64
|
+
# Stops the current assertion and change status to :fail
|
65
|
+
def fail(message = nil)
|
66
|
+
@status = FAIL
|
67
|
+
@assert = false
|
68
|
+
end
|
69
|
+
|
55
70
|
# Used to create a working-set of rules for an object, and evaluate it
|
56
|
-
# against them.
|
71
|
+
# against them. Returns a status, simply PASS or FAIL
|
57
72
|
def assert(obj)
|
73
|
+
@status = PASS
|
74
|
+
@assert = true
|
58
75
|
|
59
76
|
# create a working-set of all parameter-matching, non-dependent rules
|
60
77
|
available_rules = @rules.values.select { |rule| rule.parameters_match?(obj) }
|
@@ -100,13 +117,17 @@ module Rools
|
|
100
117
|
|
101
118
|
end # available_rules.each
|
102
119
|
|
103
|
-
end while(matches)
|
120
|
+
end while(matches && @assert)
|
104
121
|
|
105
122
|
rescue RuleConsequenceError => rce
|
106
123
|
# RuleConsequenceErrors are allowed to break out of the current assertion,
|
107
124
|
# then the inner error is bubbled-up to the asserting code.
|
108
125
|
raise rce.inner_error
|
109
126
|
end
|
127
|
+
|
128
|
+
@assert = false
|
129
|
+
|
130
|
+
return status
|
110
131
|
end # def assert
|
111
132
|
|
112
133
|
end # class RuleSet
|
metadata
CHANGED
@@ -1,58 +1,53 @@
|
|
1
|
-
!ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.8.10
|
3
3
|
specification_version: 1
|
4
4
|
name: rools
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2005-12-
|
6
|
+
version: 0.1.4
|
7
|
+
date: 2005-12-14
|
8
8
|
summary: A Rules Engine written in Ruby
|
9
9
|
require_paths:
|
10
|
-
- lib
|
10
|
+
- lib
|
11
11
|
email: ssmoot@gmail.com; bauer.mail@gmail.com
|
12
12
|
homepage: http://substantiality.net
|
13
13
|
rubyforge_project: rools
|
14
|
-
description: Can be used for program-flow, ideally suited to processing applications
|
14
|
+
description: "Can be used for program-flow, ideally suited to processing applications"
|
15
15
|
autorequire: rools
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
18
18
|
has_rdoc: true
|
19
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
20
|
requirements:
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
-
|
22
|
+
- ">"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 0.0.0
|
24
25
|
version:
|
25
26
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
27
|
authors:
|
29
|
-
- Sam Smoot
|
30
|
-
- Scott Bauer
|
28
|
+
- Sam Smoot
|
29
|
+
- Scott Bauer
|
31
30
|
files:
|
32
|
-
- README
|
33
|
-
- CHANGELOG
|
34
|
-
- RAKEFILE
|
35
|
-
- lib/rools.rb
|
36
|
-
- lib/rools/default_parameter_proc.rb
|
37
|
-
- lib/rools/errors.rb
|
38
|
-
- lib/rools/rule.rb
|
39
|
-
- lib/rools/rule_set.rb
|
31
|
+
- README
|
32
|
+
- CHANGELOG
|
33
|
+
- RAKEFILE
|
34
|
+
- lib/rools.rb
|
35
|
+
- lib/rools/default_parameter_proc.rb
|
36
|
+
- lib/rools/errors.rb
|
37
|
+
- lib/rools/rule.rb
|
38
|
+
- lib/rools/rule_set.rb
|
40
39
|
test_files: []
|
41
|
-
|
42
40
|
rdoc_options:
|
43
|
-
- --line-numbers
|
44
|
-
- --inline-source
|
45
|
-
- --main
|
46
|
-
- README
|
41
|
+
- "--line-numbers"
|
42
|
+
- "--inline-source"
|
43
|
+
- "--main"
|
44
|
+
- README
|
47
45
|
extra_rdoc_files:
|
48
|
-
- README
|
49
|
-
- CHANGELOG
|
50
|
-
- RAKEFILE
|
46
|
+
- README
|
47
|
+
- CHANGELOG
|
48
|
+
- RAKEFILE
|
51
49
|
executables: []
|
52
|
-
|
53
50
|
extensions: []
|
54
|
-
|
55
51
|
requirements:
|
56
|
-
- none
|
57
|
-
dependencies: []
|
58
|
-
|
52
|
+
- none
|
53
|
+
dependencies: []
|