rulebook 0.3.3 → 0.4.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/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
data/TODO DELETED
@@ -1 +0,0 @@
1
- # Named captures in Regexp
@@ -1,53 +0,0 @@
1
- require 'helper'
2
-
3
- class TestClassMethods < Test::Unit::TestCase
4
- class Car
5
- attr_accessor :make, :model
6
-
7
- def initialize(make, model)
8
- @make, @model = make, model
9
- end
10
-
11
- class_rules do
12
- rule(/new_([a-z]+)_(.+)/) do |make, model|
13
-
14
- make.capitalize!
15
- model = model.split('_').inject(''){ |result, word|
16
- result << word.capitalize + ' '
17
- }.strip
18
- new(make, model)
19
- end
20
- end
21
- end
22
-
23
- should 'be a Ford F150' do
24
- @car = Car.new_ford_f150
25
- assert_equal @car.make, 'Ford'
26
- assert_equal @car.model, 'F150'
27
- end
28
-
29
- should 'be a Ford Mustang' do
30
- @car = Car.new_ford_mustang
31
- assert_equal @car.make, 'Ford'
32
- assert_equal @car.model, 'Mustang'
33
- end
34
-
35
- should 'be a Pontiac GTO' do
36
- @car = Car.new_pontiac_gto
37
- @car.model.upcase!
38
- assert_equal @car.make, 'Pontiac'
39
- assert_equal @car.model, 'GTO'
40
- end
41
-
42
- should 'be a Toyota Camry' do
43
- @car = Car.new_toyota_camry
44
- assert_equal @car.make, 'Toyota'
45
- assert_equal @car.model, 'Camry'
46
- end
47
-
48
- should 'be a Hyundai Santa Fe' do
49
- @car = Car.new_hyundai_santa_fe
50
- assert_equal @car.make, 'Hyundai'
51
- assert_equal 'Santa Fe', @car.model
52
- end
53
- end
data/test/test_rules.rb DELETED
@@ -1,90 +0,0 @@
1
- require 'helper'
2
- require 'date'
3
-
4
- class TestRule < Test::Unit::TestCase
5
- class User
6
- attr_accessor :name, :gender, :height, :eye_color, :date_of_birth, :age
7
- end
8
-
9
-
10
- class User
11
- def User.list
12
- @@list ||= []
13
- end
14
-
15
- def initialize
16
- User.list << self
17
- end
18
- end
19
-
20
- # Instance Rules
21
- class User
22
- rule(/is_your_name_([a-z_]+)\?/) do |name|
23
- @name.capitalize == name.capitalize
24
- end
25
-
26
- rules do
27
- rule(/is_(male|female)\?/) do |gender|
28
- @gender == gender.to_sym
29
- end
30
- end
31
- end
32
-
33
- User.rule(/was_born_([a-z]+_\d+(st|nd|rd|th)?_\d+)/) do |date_of_birth|
34
- @date_of_birth = Date.parse(date_of_birth.gsub(/_/, ' '))
35
- @age = (Date.today - @date_of_birth).to_i / 365
36
- end
37
-
38
- User.rules do
39
- rule(/is_(\d+)\?/) do |age|
40
- @age == age.to_i
41
- end
42
- end
43
-
44
- # Class Rules
45
- # TODO: two more
46
- class User
47
- class_rule(/new_(male|female)/) do |gender|
48
- instance = new
49
- instance.gender = gender.to_sym
50
- instance
51
- end
52
-
53
- class_rules do
54
- rule(/find_(males|females)/) do |gender|
55
- list.find_all { |user| user.gender == gender.to_sym }
56
- end
57
- end
58
- end
59
-
60
-
61
- context 'Ryan' do
62
- setup do
63
- @user = User.new_male
64
- @user.name = 'Ryan'
65
- @user.was_born_jan_15_1991
66
- end
67
-
68
- should 'answer yes to all obvious questions' do
69
- assert @user.is_your_name_ryan?
70
- assert @user.is_male?
71
- assert @user.is_19?
72
- end
73
-
74
- should 'answer no to all silly questions' do
75
- refute @user.is_your_name_mark?
76
- refute @user.is_female?
77
- refute @user.is_21?
78
- end
79
-
80
- teardown do
81
- @user = nil
82
- end
83
- end
84
-
85
- context 'User list' do
86
- should 'should have any females' do
87
- assert User.find_females.length == 0
88
- end
89
- end
90
- end
data/test/test_ryguy.rb DELETED
@@ -1,45 +0,0 @@
1
- require 'helper'
2
-
3
- class TestRyguy < Test::Unit::TestCase
4
- class Ryguy
5
- attr_accessor :nouns, :adjectives
6
-
7
- rules do
8
- rule(/is_a_(.*)/) do |noun|
9
- @nouns ||= []
10
- @nouns << noun.gsub(/_/, ' ')
11
- end
12
-
13
- rule(/is_(.*)/) do |adjective|
14
- @adjectives ||= []
15
- @adjectives << adjective.gsub(/_/, ' ')
16
- end
17
- end
18
- end
19
-
20
- context 'Ryguy' do
21
- setup do
22
- @ryguy = Ryguy.new
23
- @ryguy.is_awesome
24
- @ryguy.is_a_bear
25
- @ryguy.is_superfly
26
- @ryguy.is_a_programmer
27
- @ryguy.is_fantastic
28
- @ryguy.is_a_master_of_the_ancient_chinese_art_of_karate
29
- end
30
-
31
- should 'be awesome, superfly, and fantastic' do
32
- assert_same_elements(
33
- ['awesome', 'superfly', 'fantastic'],
34
- @ryguy.adjectives
35
- )
36
- end
37
-
38
- should 'be a bear, a programmer, and a master of karate' do
39
- assert_same_elements(
40
- ['bear', 'programmer', 'master of the ancient chinese art of karate'],
41
- @ryguy.nouns
42
- )
43
- end
44
- end
45
- end
data/test/test_user.rb DELETED
@@ -1,48 +0,0 @@
1
- require 'helper'
2
- require 'date'
3
-
4
- class TestUser < Test::Unit::TestCase
5
-
6
- class User
7
- attr_accessor :name, :gender, :height, :eye_color, :date_of_birth, :age
8
- end
9
-
10
- class User
11
- rule(/is_(male|female)/) do |gender|
12
- @gender = gender.to_sym
13
- end
14
-
15
- rules do
16
- rule(/is_(\d+)_foot_(\d+)(_inches)?/) do |feet, inches|
17
- @height = "#{feet}-#{inches}"
18
- end
19
-
20
- rule(/has_(amber|blue|brown|gray|grey|green|hazel|red)_eyes/) do |eye_color|
21
- @eye_color = eye_color.to_sym
22
- end
23
-
24
- rule(/was_born_([a-z]+_\d+(st|nd|rd|th)_\d+)/) do |date_of_birth|
25
- @date_of_birth = Date.parse(date_of_birth.gsub(/_/, ' '))
26
- @age = (Date.today - @date_of_birth).to_i / 365
27
- end
28
- end
29
- end
30
-
31
- context 'A User instance' do
32
- setup do
33
- @ryguy = User.new
34
- @ryguy.is_male
35
- @ryguy.is_5_foot_8
36
- @ryguy.has_brown_eyes
37
- @ryguy.was_born_january_15th_1991
38
- end
39
-
40
- should 'be valid' do
41
- assert_equal :male, @ryguy.gender
42
- assert_equal '5-8', @ryguy.height
43
- assert_equal :brown, @ryguy.eye_color
44
- assert_equal Date.parse('January 15th, 1991'), @ryguy.date_of_birth
45
- assert_equal 19, @ryguy.age
46
- end
47
- end
48
- end