rulebook 0.4.0 → 0.4.1
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/Gemfile.lock +14 -12
- data/Rakefile +0 -23
- data/VERSION +1 -1
- data/examples/simple.rb +14 -3
- data/rulebook.gemspec +47 -76
- metadata +30 -106
- data/.document +0 -5
- data/Gemfile +0 -7
- data/README.md +0 -152
data/Gemfile.lock
CHANGED
@@ -1,21 +1,23 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
rulebook (0.4.1)
|
5
|
+
meta_tools (= 0.2.1)
|
6
|
+
|
1
7
|
GEM
|
8
|
+
remote: http://rubygems.org/
|
2
9
|
specs:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
git (>= 1.2.5)
|
7
|
-
rake
|
8
|
-
meta_tools (0.1.0)
|
9
|
-
rake (0.8.7)
|
10
|
-
riot (0.12.3)
|
10
|
+
meta_tools (0.2.1)
|
11
|
+
rake (0.9.2)
|
12
|
+
riot (0.12.4)
|
11
13
|
rr
|
12
14
|
rr (1.0.2)
|
13
15
|
|
14
16
|
PLATFORMS
|
17
|
+
ruby
|
15
18
|
x86-mingw32
|
16
19
|
|
17
20
|
DEPENDENCIES
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
riot
|
21
|
+
rake (= 0.9.2)
|
22
|
+
riot (= 0.12.4)
|
23
|
+
rulebook!
|
data/Rakefile
CHANGED
@@ -1,10 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
# Gay as hell jeweler workaround
|
4
|
-
|
5
|
-
require 'psych'
|
6
|
-
YAML::ENGINE.yamler = 'psych'
|
7
|
-
|
8
3
|
require 'bundler'
|
9
4
|
begin
|
10
5
|
Bundler.setup(:default, :development)
|
@@ -15,24 +10,6 @@ rescue Bundler::BundlerError => e
|
|
15
10
|
end
|
16
11
|
require 'rake'
|
17
12
|
|
18
|
-
require 'jeweler'
|
19
|
-
Jeweler::Tasks.new do |gem|
|
20
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
21
|
-
gem.name = "rulebook"
|
22
|
-
gem.homepage = "http://github.com/c00lryguy/rulebook"
|
23
|
-
gem.license = "MIT"
|
24
|
-
gem.summary = %Q{Define methods with regex for dynamic methods.}
|
25
|
-
gem.description = %Q{Allows you to define a set of 'rules' or dynamic methods to apply to a class.}
|
26
|
-
gem.email = "c00lryguy@gmail.com"
|
27
|
-
gem.authors = ["Ryan Lewis"]
|
28
|
-
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
29
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
30
|
-
gem.add_runtime_dependency 'meta_tools', '> 0.1'
|
31
|
-
gem.add_development_dependency 'rake', '> 0.0.0'
|
32
|
-
gem.add_development_dependency 'riot', '> 0.0.0'
|
33
|
-
end
|
34
|
-
Jeweler::RubygemsDotOrgTasks.new
|
35
|
-
|
36
13
|
require 'rake/testtask'
|
37
14
|
|
38
15
|
Rake::TestTask.new(:test) do |t|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.1
|
data/examples/simple.rb
CHANGED
@@ -20,8 +20,8 @@ class User
|
|
20
20
|
end
|
21
21
|
|
22
22
|
class << self
|
23
|
-
|
24
|
-
|
23
|
+
follows_the_rules!
|
24
|
+
rulebook.add /^new_(admin|user)$/ do |title|
|
25
25
|
instance = new
|
26
26
|
instance.instance_eval { @title = title.to_sym }
|
27
27
|
instance
|
@@ -40,4 +40,15 @@ p u.is_user? # => false
|
|
40
40
|
p u.is_admin? # => true
|
41
41
|
|
42
42
|
u = User.new_admin
|
43
|
-
p u.is_admin? # => true
|
43
|
+
p u.is_admin? # => true
|
44
|
+
|
45
|
+
|
46
|
+
# DEV: TODO CLASS RULES O_O
|
47
|
+
Integer.follows_the_rules!
|
48
|
+
Integer.rulebook.add /to_base_(\d+)/ do |base|
|
49
|
+
p base
|
50
|
+
p "OMG"
|
51
|
+
to_s(base)
|
52
|
+
end
|
53
|
+
|
54
|
+
p 10.to_base_16
|
data/rulebook.gemspec
CHANGED
@@ -1,81 +1,52 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
1
|
Gem::Specification.new do |s|
|
7
|
-
s.
|
8
|
-
s.
|
9
|
-
|
10
|
-
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
|
14
|
-
s.email = %q{c00lryguy@gmail.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.md"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
"Gemfile",
|
22
|
-
"Gemfile.lock",
|
23
|
-
"LICENSE",
|
24
|
-
"README.md",
|
25
|
-
"Rakefile",
|
26
|
-
"VERSION",
|
27
|
-
"examples/simple.rb",
|
28
|
-
"lib/rulebook.rb",
|
29
|
-
"lib/rulebook/class_methods.rb",
|
30
|
-
"lib/rulebook/core_ext/module.rb",
|
31
|
-
"lib/rulebook/instance_methods.rb",
|
32
|
-
"lib/rulebook/rule.rb",
|
33
|
-
"rulebook.gemspec",
|
34
|
-
"test/helper.rb",
|
35
|
-
"test/test_chevy.rb",
|
36
|
-
"test/test_rule.rb"
|
37
|
-
]
|
38
|
-
s.homepage = %q{http://github.com/c00lryguy/rulebook}
|
39
|
-
s.licenses = ["MIT"]
|
2
|
+
s.author = "Ryan Scott Lewis"
|
3
|
+
s.email = "c00lryguy@gmail.com"
|
4
|
+
s.homepage = "http://github.com/c00lryguy/rulebook"
|
5
|
+
|
6
|
+
s.description = "Allows you to define a set of 'rules' or dynamic methods to apply to a class."
|
7
|
+
s.summary = "Define methods with regex for dynamic methods."
|
8
|
+
|
40
9
|
s.require_paths = ["lib"]
|
41
|
-
|
42
|
-
s.
|
43
|
-
s.
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
10
|
+
|
11
|
+
s.name = File.basename(__FILE__, ".gemspec")
|
12
|
+
s.version = File.read("VERSION")
|
13
|
+
# VERSIONING
|
14
|
+
# Some people like to use a YAML file to display the version, some like CSV,
|
15
|
+
# others might just add a constant set to a version string, some (Rack) might
|
16
|
+
# even have an array splitting the version into parts.
|
17
|
+
# Just edit the above line appropriately.
|
18
|
+
# An easy thing to do is set a constant within your app to a version string
|
19
|
+
# and use it in here
|
20
|
+
|
21
|
+
# Add directories you *might* use in ALL projects.
|
22
|
+
s.files = [File.basename(__FILE__)] + Dir['lib/**/*'] + Dir['bin/**/*'] + Dir['test/**/*'] + Dir['examples/**/*']
|
23
|
+
|
24
|
+
# Add files you *might* use in ALL projects!
|
25
|
+
%W{Gemfile.lock README.* README Rakefile VERSION LICENSE}.each do |file|
|
26
|
+
s.files.unshift(file) if File.exists?(file)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Add files you *might* use in ALL projects!
|
30
|
+
%W{README.* README VERSION LICENSE LICENSE.*}.each do |file|
|
31
|
+
(s.extra_rdoc_files ||= []).unshift(file) if File.exists?(file)
|
32
|
+
end
|
33
|
+
|
34
|
+
# s.executables = ["bin/myapp.rb"]
|
35
|
+
|
36
|
+
# If you only specify one application file in executables, that file becomes
|
37
|
+
# the default executable. Therefore, you only need to specify this value if you
|
38
|
+
# have more than one application file.
|
39
|
+
if s.executables.length > 1
|
40
|
+
if exe = s.executables.find { |e| e.include?(File.basename(__FILE__, ".gemspec")) }
|
41
|
+
s.default_executable = exe
|
62
42
|
else
|
63
|
-
|
64
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
65
|
-
s.add_dependency(%q<riot>, [">= 0"])
|
66
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
67
|
-
s.add_dependency(%q<meta_tools>, ["> 0.1"])
|
68
|
-
s.add_dependency(%q<rake>, ["> 0.0.0"])
|
69
|
-
s.add_dependency(%q<riot>, ["> 0.0.0"])
|
43
|
+
raise(Exception, "Couldn't automatically figure out the default_executable")
|
70
44
|
end
|
71
|
-
else
|
72
|
-
s.add_dependency(%q<meta_tools>, [">= 0"])
|
73
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
74
|
-
s.add_dependency(%q<riot>, [">= 0"])
|
75
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
76
|
-
s.add_dependency(%q<meta_tools>, ["> 0.1"])
|
77
|
-
s.add_dependency(%q<rake>, ["> 0.0.0"])
|
78
|
-
s.add_dependency(%q<riot>, ["> 0.0.0"])
|
79
45
|
end
|
80
|
-
|
81
|
-
|
46
|
+
|
47
|
+
s.test_files = Dir['test/**/*'] + Dir['examples/**/*']
|
48
|
+
|
49
|
+
s.add_dependency("meta_tools", "0.2.1")
|
50
|
+
s.add_development_dependency("rake", "0.9.2")
|
51
|
+
s.add_development_dependency("riot", "0.12.4")
|
52
|
+
end
|
metadata
CHANGED
@@ -1,117 +1,50 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rulebook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 4
|
8
|
-
- 0
|
9
|
-
prerelease: false
|
4
|
+
version: 0.4.1
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
|
-
- Ryan Lewis
|
13
|
-
autorequire:
|
8
|
+
- Ryan Scott Lewis
|
9
|
+
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
date: 2011-
|
17
|
-
default_executable:
|
12
|
+
date: 2011-06-26 00:00:00.000000000 -04:00
|
13
|
+
default_executable:
|
18
14
|
dependencies:
|
19
15
|
- !ruby/object:Gem::Dependency
|
20
16
|
name: meta_tools
|
21
|
-
requirement: &
|
17
|
+
requirement: &2164532960 !ruby/object:Gem::Requirement
|
22
18
|
none: false
|
23
19
|
requirements:
|
24
|
-
- -
|
20
|
+
- - =
|
25
21
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
segments:
|
28
|
-
- 0
|
22
|
+
version: 0.2.1
|
29
23
|
type: :runtime
|
30
24
|
prerelease: false
|
31
|
-
version_requirements: *
|
25
|
+
version_requirements: *2164532960
|
32
26
|
- !ruby/object:Gem::Dependency
|
33
27
|
name: rake
|
34
|
-
requirement: &
|
28
|
+
requirement: &2168595200 !ruby/object:Gem::Requirement
|
35
29
|
none: false
|
36
30
|
requirements:
|
37
|
-
- -
|
31
|
+
- - =
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
40
|
-
segments:
|
41
|
-
- 0
|
33
|
+
version: 0.9.2
|
42
34
|
type: :development
|
43
35
|
prerelease: false
|
44
|
-
version_requirements: *
|
36
|
+
version_requirements: *2168595200
|
45
37
|
- !ruby/object:Gem::Dependency
|
46
38
|
name: riot
|
47
|
-
requirement: &
|
48
|
-
none: false
|
49
|
-
requirements:
|
50
|
-
- - ! '>='
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '0'
|
53
|
-
segments:
|
54
|
-
- 0
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *31472040
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: jeweler
|
60
|
-
requirement: &31471572 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
|
-
segments:
|
67
|
-
- 0
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: *31471572
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: meta_tools
|
73
|
-
requirement: &31471092 !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ! '>'
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '0.1'
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
- 1
|
82
|
-
type: :runtime
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: *31471092
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: rake
|
87
|
-
requirement: &31470552 !ruby/object:Gem::Requirement
|
39
|
+
requirement: &2169056920 !ruby/object:Gem::Requirement
|
88
40
|
none: false
|
89
41
|
requirements:
|
90
|
-
- -
|
42
|
+
- - =
|
91
43
|
- !ruby/object:Gem::Version
|
92
|
-
version: 0.
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
- 0
|
96
|
-
- 0
|
44
|
+
version: 0.12.4
|
97
45
|
type: :development
|
98
46
|
prerelease: false
|
99
|
-
version_requirements: *
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: riot
|
102
|
-
requirement: &31470000 !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
|
-
requirements:
|
105
|
-
- - ! '>'
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: 0.0.0
|
108
|
-
segments:
|
109
|
-
- 0
|
110
|
-
- 0
|
111
|
-
- 0
|
112
|
-
type: :development
|
113
|
-
prerelease: false
|
114
|
-
version_requirements: *31470000
|
47
|
+
version_requirements: *2169056920
|
115
48
|
description: Allows you to define a set of 'rules' or dynamic methods to apply to
|
116
49
|
a class.
|
117
50
|
email: c00lryguy@gmail.com
|
@@ -119,30 +52,26 @@ executables: []
|
|
119
52
|
extensions: []
|
120
53
|
extra_rdoc_files:
|
121
54
|
- LICENSE
|
122
|
-
-
|
55
|
+
- VERSION
|
123
56
|
files:
|
124
|
-
- .document
|
125
|
-
- Gemfile
|
126
|
-
- Gemfile.lock
|
127
57
|
- LICENSE
|
128
|
-
- README.md
|
129
|
-
- Rakefile
|
130
58
|
- VERSION
|
131
|
-
-
|
132
|
-
-
|
59
|
+
- Rakefile
|
60
|
+
- Gemfile.lock
|
61
|
+
- rulebook.gemspec
|
133
62
|
- lib/rulebook/class_methods.rb
|
134
63
|
- lib/rulebook/core_ext/module.rb
|
135
64
|
- lib/rulebook/instance_methods.rb
|
136
65
|
- lib/rulebook/rule.rb
|
137
|
-
- rulebook.
|
66
|
+
- lib/rulebook.rb
|
138
67
|
- test/helper.rb
|
139
68
|
- test/test_chevy.rb
|
140
69
|
- test/test_rule.rb
|
70
|
+
- examples/simple.rb
|
141
71
|
has_rdoc: true
|
142
72
|
homepage: http://github.com/c00lryguy/rulebook
|
143
|
-
licenses:
|
144
|
-
|
145
|
-
post_install_message: !!null
|
73
|
+
licenses: []
|
74
|
+
post_install_message:
|
146
75
|
rdoc_options: []
|
147
76
|
require_paths:
|
148
77
|
- lib
|
@@ -152,25 +81,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
152
81
|
- - ! '>='
|
153
82
|
- !ruby/object:Gem::Version
|
154
83
|
version: '0'
|
155
|
-
segments:
|
156
|
-
- 0
|
157
|
-
hash: 224911955
|
158
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
85
|
none: false
|
160
86
|
requirements:
|
161
87
|
- - ! '>='
|
162
88
|
- !ruby/object:Gem::Version
|
163
89
|
version: '0'
|
164
|
-
segments:
|
165
|
-
- 0
|
166
90
|
requirements: []
|
167
|
-
rubyforge_project:
|
168
|
-
rubygems_version: 1.
|
169
|
-
signing_key:
|
91
|
+
rubyforge_project:
|
92
|
+
rubygems_version: 1.6.2
|
93
|
+
signing_key:
|
170
94
|
specification_version: 3
|
171
95
|
summary: Define methods with regex for dynamic methods.
|
172
96
|
test_files:
|
173
|
-
- examples/simple.rb
|
174
97
|
- test/helper.rb
|
175
98
|
- test/test_chevy.rb
|
176
99
|
- test/test_rule.rb
|
100
|
+
- examples/simple.rb
|
data/.document
DELETED
data/Gemfile
DELETED
data/README.md
DELETED
@@ -1,152 +0,0 @@
|
|
1
|
-
# rulebook 
|
2
|
-
|
3
|
-
Allows you to define a set of 'rules' or dynamic methods to apply to a class.
|
4
|
-
|
5
|
-
## Install
|
6
|
-
|
7
|
-
> gem update --system
|
8
|
-
> gem install rulebook
|
9
|
-
|
10
|
-
## Simple Example
|
11
|
-
|
12
|
-
require 'rulebook'
|
13
|
-
|
14
|
-
class User
|
15
|
-
follows_the_rules!
|
16
|
-
|
17
|
-
def initialize(name)
|
18
|
-
@name = name
|
19
|
-
end
|
20
|
-
|
21
|
-
rulebook.add /say_(.+)/ do |what_to_say|
|
22
|
-
puts "#{@name} says '#{what_to_say.gsub(/_/, ' ')}'"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
User.new('Ryan').say_hello_world # => Ryan says 'hello world'
|
27
|
-
|
28
|
-
## How It Works
|
29
|
-
|
30
|
-
TODO
|
31
|
-
|
32
|
-
## Better Example
|
33
|
-
|
34
|
-
require 'rulebook'
|
35
|
-
|
36
|
-
class User
|
37
|
-
attr :name, :title
|
38
|
-
|
39
|
-
def initialize(name)
|
40
|
-
@name = name
|
41
|
-
@title = :user
|
42
|
-
end
|
43
|
-
|
44
|
-
rulebook.add /is_(admin|moderator|super_user|user)/ do |title|
|
45
|
-
@title = title.to_sym
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
You can now do things like
|
50
|
-
|
51
|
-
users = ['Ryan', 'Natale', 'Kasey', 'Jenna', 'Joe', 'Monica','Allan', 'Amanda']
|
52
|
-
users.collect! { |n| User.new(n) }.shuffle!
|
53
|
-
|
54
|
-
users[0].is_admin
|
55
|
-
users[1].is_moderator
|
56
|
-
users[2].is_super_user
|
57
|
-
|
58
|
-
users.each do |user|
|
59
|
-
puts "#{user.name} is a #{user.title}"
|
60
|
-
end
|
61
|
-
|
62
|
-
## Class Methods Example
|
63
|
-
|
64
|
-
require 'rulebook'
|
65
|
-
|
66
|
-
class Car
|
67
|
-
attr :make, :model
|
68
|
-
|
69
|
-
def initialize(make, model)
|
70
|
-
@make, @model = make.capitalize, model.capitalize
|
71
|
-
end
|
72
|
-
|
73
|
-
class << self
|
74
|
-
follows_the_rules!
|
75
|
-
|
76
|
-
rulebook.add /new_([a-z]+)_(.+)/ do |make, model|
|
77
|
-
new(make, model)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
my_cars = [
|
83
|
-
Car.new_honda_accord,
|
84
|
-
Car.new_dodge_neon,
|
85
|
-
Car.new_volkswagen_beetle
|
86
|
-
]
|
87
|
-
|
88
|
-
p my_cars.first.make # => "Honda"
|
89
|
-
p my_cars.first.model # => "Accord"
|
90
|
-
|
91
|
-
This works out if you already have ``
|
92
|
-
|
93
|
-
### Now lets add some instance rules
|
94
|
-
|
95
|
-
class Car
|
96
|
-
rule /is_(.+)\?/ do |make_or_model|
|
97
|
-
make_or_model.capitalize!
|
98
|
-
@make == make_or_model || @model == make_or_model
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
p my_cars.first.is_honda? # => true
|
103
|
-
p my_cars.first.is_beetle? # => false
|
104
|
-
|
105
|
-
## Using outside of class block
|
106
|
-
|
107
|
-
Since `rule` and `class_rule` are both class methods,
|
108
|
-
you can call them all outside of a class block:
|
109
|
-
|
110
|
-
Car.rule(...){}
|
111
|
-
Car.class_rule(...){}
|
112
|
-
|
113
|
-
Since 0.2 you can call the class methods `rules` and `class_rules` to wrap your rules in a block:
|
114
|
-
|
115
|
-
Car.rules do
|
116
|
-
rule(...){}
|
117
|
-
end
|
118
|
-
|
119
|
-
Car.class_rules do
|
120
|
-
rule(...){}
|
121
|
-
end
|
122
|
-
|
123
|
-
The result is exactly the same. These are also callable from inside the class.
|
124
|
-
|
125
|
-
class Car
|
126
|
-
rules do
|
127
|
-
rule(...){}
|
128
|
-
end
|
129
|
-
class_rules do
|
130
|
-
rule(...){}
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
#### There are more examples in the examples and [test][1] directories and [Rubular][2] is a great place to test your Regexp.
|
135
|
-
|
136
|
-
## Note on Patches/Pull Requests
|
137
|
-
|
138
|
-
* Fork the project.
|
139
|
-
* Make your feature addition or bug fix.
|
140
|
-
* Add tests for it. This is important so I don't break it in a
|
141
|
-
future version unintentionally.
|
142
|
-
* Commit, do not mess with rakefile, version, or history.
|
143
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
144
|
-
* Send me a pull request. Bonus points for topic branches.
|
145
|
-
|
146
|
-
## Copyright
|
147
|
-
|
148
|
-
Copyright (c) 2010 Ryan Lewis. See LICENSE for details.
|
149
|
-
|
150
|
-
|
151
|
-
[1]: http://github.com/c00lryguy/rulebook/tree/master/test/
|
152
|
-
[2]: http://rubular.com/
|