savage 0.1.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.
Files changed (42) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +45 -0
  6. data/VERSION +1 -0
  7. data/lib/savage/core_extensions/string.rb +8 -0
  8. data/lib/savage/direction.rb +29 -0
  9. data/lib/savage/directions/arc_to.rb +24 -0
  10. data/lib/savage/directions/close_path.rb +14 -0
  11. data/lib/savage/directions/coordinate_target.rb +20 -0
  12. data/lib/savage/directions/cubic_curve_to.rb +25 -0
  13. data/lib/savage/directions/horizontal_to.rb +10 -0
  14. data/lib/savage/directions/line_to.rb +10 -0
  15. data/lib/savage/directions/move_to.rb +10 -0
  16. data/lib/savage/directions/point_target.rb +20 -0
  17. data/lib/savage/directions/quadratic_curve_to.rb +22 -0
  18. data/lib/savage/directions/vertical_to.rb +10 -0
  19. data/lib/savage/path.rb +16 -0
  20. data/lib/savage/sub_path.rb +47 -0
  21. data/lib/savage/utils.rb +7 -0
  22. data/lib/savage.rb +9 -0
  23. data/savage.gemspec +100 -0
  24. data/spec/savage/directions/arc_to_spec.rb +96 -0
  25. data/spec/savage/directions/close_path_spec.rb +29 -0
  26. data/spec/savage/directions/cubic_curve_to_spec.rb +117 -0
  27. data/spec/savage/directions/horizontal_to_spec.rb +10 -0
  28. data/spec/savage/directions/line_to_spec.rb +10 -0
  29. data/spec/savage/directions/move_to_spec.rb +10 -0
  30. data/spec/savage/directions/point_spec.rb +12 -0
  31. data/spec/savage/directions/quadratic_curve_spec.rb +80 -0
  32. data/spec/savage/directions/vertical_to_spec.rb +10 -0
  33. data/spec/savage/path_spec.rb +24 -0
  34. data/spec/savage/sub_path_spec.rb +112 -0
  35. data/spec/savage_spec.rb +5 -0
  36. data/spec/shared/command.rb +13 -0
  37. data/spec/shared/coordinate_target.rb +35 -0
  38. data/spec/shared/direction.rb +21 -0
  39. data/spec/shared/point_target.rb +44 -0
  40. data/spec/spec.opts +1 -0
  41. data/spec/spec_helper.rb +36 -0
  42. metadata +132 -0
@@ -0,0 +1,117 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ include Savage::Directions
4
+
5
+ describe CubicCurveTo do
6
+ def dir_class; CubicCurveTo; end
7
+ def create_relative; CubicCurveTo.new(100,200,300,400,500,600,false); end
8
+ def command_code; 'c'; end
9
+
10
+ before :each do
11
+ @dir = dir_class.new(100,200,300,400,500,600)
12
+ end
13
+
14
+ include DirectionShared
15
+
16
+ it 'should have a target' do
17
+ @dir.respond_to?(:target).should == true
18
+ @dir.target.class.should == Point
19
+ end
20
+ it 'should have a first control point' do
21
+ @dir.respond_to?(:control_1).should == true
22
+ @dir.control_1.class.should == Point
23
+ end
24
+ it 'should have a first control point' do
25
+ @dir.respond_to?(:control_2).should == true
26
+ @dir.control_2.class.should == Point
27
+ end
28
+ it 'should have an accessible target x, based on the constructor argument' do
29
+ @dir.target.x.should == 500
30
+ end
31
+ it 'should have an accessible target y, based on the constructor argument' do
32
+ @dir.target.y.should == 600
33
+ end
34
+ it 'should have an accessible first control x, based on the constructor argument' do
35
+ @dir.control_1.x.should == 100
36
+ end
37
+ it 'should have an accessible first control y, based on the constructor argument' do
38
+ @dir.control_1.y.should == 200
39
+ end
40
+ it 'should have an accessible second control x, based on the constructor argument' do
41
+ @dir.control_2.x.should == 300
42
+ end
43
+ it 'should have an accessible second control y, based on the constructor argument' do
44
+ @dir.control_2.y.should == 400
45
+ end
46
+ it 'should be constructed with at least target x and y, a control 1 x and y, and a control 2 x and y parameters' do
47
+ lambda { dir_class.new }.should raise_error
48
+ lambda { dir_class.new 45 }.should raise_error
49
+ lambda { dir_class.new 45, 50 }.should raise_error
50
+ lambda { dir_class.new 45, 50, 60 }.should raise_error
51
+ lambda { dir_class.new 45, 50, 60, 70 }.should raise_error
52
+ lambda { dir_class.new 45, 50, 60, 70, 80 }.should raise_error
53
+ lambda { dir_class.new 45, 50, 60, 70, 80, 90 }.should_not raise_error
54
+ lambda { dir_class.new 45, 50, 60, 70, 80, 90, true }.should_not raise_error
55
+ end
56
+ it 'should be relative if constructed with a true seventh parameter' do
57
+ direction = dir_class.new 45, 50, 60, 70, 80, 90, false
58
+ direction.absolute?.should == false
59
+ end
60
+ it 'should be absolute if constructed with a false seventh parameter' do
61
+ direction = dir_class.new 45, 50, 60, 70, 80, 90, true
62
+ direction.absolute?.should == true
63
+ end
64
+ it 'should be absolute if constructed with only six parameters' do
65
+ direction = dir_class.new 45, 50, 60, 70, 80, 90
66
+ direction.absolute?.should == true
67
+ end
68
+ describe '#to_command' do
69
+ context 'when not asked to be continuous' do
70
+ it 'should have exactly 6 numerical parameters' do
71
+ extract_coordinates(@dir.to_command).length.should == 6
72
+ end
73
+ it 'should show the provided control 1 X value as the first parameter' do
74
+ extract_coordinates(@dir.to_command)[0].should == 100
75
+ end
76
+ it 'should show the provided control 1 Y value as the second parameter' do
77
+ extract_coordinates(@dir.to_command)[1].should == 200
78
+ end
79
+ it 'should show the provided control 2 X value as the third parameter' do
80
+ extract_coordinates(@dir.to_command)[2].should == 300
81
+ end
82
+ it 'should show the provided control 2 Y value as the fourth parameter' do
83
+ extract_coordinates(@dir.to_command)[3].should == 400
84
+ end
85
+ it 'should show the provided target X value as the fifth parameter' do
86
+ extract_coordinates(@dir.to_command)[4].should == 500
87
+ end
88
+ it 'should show the provided target Y value as the sixth parameter' do
89
+ extract_coordinates(@dir.to_command)[5].should == 600
90
+ end
91
+ end
92
+ context 'when asked to be continuous' do
93
+ it 'should start with a lower-case s when not absolute' do
94
+ rel_dir = create_relative
95
+ extract_command(rel_dir.to_command(true)).should == 's'
96
+ end
97
+ it 'should start with a capital S when absolute' do
98
+ extract_command(@dir.to_command(true)).should == 'S'
99
+ end
100
+ it 'should have exactly 4 numerical parameters' do
101
+ extract_coordinates(@dir.to_command(true)).length.should == 4
102
+ end
103
+ it 'should show the provided control 2 X value as the first parameter' do
104
+ extract_coordinates(@dir.to_command(true))[0].should == 300
105
+ end
106
+ it 'should show the provided control 2 Y value as the second parameter' do
107
+ extract_coordinates(@dir.to_command(true))[1].should == 400
108
+ end
109
+ it 'should show the provided target X value as the third parameter' do
110
+ extract_coordinates(@dir.to_command(true))[2].should == 500
111
+ end
112
+ it 'should show the provided target Y value as the fourth parameter' do
113
+ extract_coordinates(@dir.to_command(true))[3].should == 600
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ include Savage::Directions
4
+
5
+ describe HorizontalTo do
6
+ def dir_class; HorizontalTo; end
7
+ def create_relative; HorizontalTo.new(100,false); end
8
+ def command_code; 'h'; end
9
+ include CoordinateTargetShared
10
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ include Savage::Directions
4
+
5
+ describe LineTo do
6
+ def dir_class; LineTo; end
7
+ def create_relative; LineTo.new(100,200,false); end
8
+ def command_code; 'l'; end
9
+ include PointTargetShared
10
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ include Savage::Directions
4
+
5
+ describe MoveTo do
6
+ def dir_class; MoveTo; end
7
+ def create_relative; MoveTo.new(100,200,false); end
8
+ def command_code; 'm'; end
9
+ include PointTargetShared
10
+ end
@@ -0,0 +1,12 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ include Savage::Directions
4
+
5
+ describe Point do
6
+ it 'should have an x' do
7
+ Point.new.respond_to?(:x).should == true;
8
+ end
9
+ it 'should have an y' do
10
+ Point.new.respond_to?(:y).should == true;
11
+ end
12
+ end
@@ -0,0 +1,80 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ include Savage::Directions
4
+
5
+ describe QuadraticCurveTo do
6
+ def dir_class; QuadraticCurveTo; end
7
+ def create_relative; QuadraticCurveTo.new(100,200,300,400,false); end
8
+ def command_code; 'q'; end
9
+
10
+ before :each do
11
+ @dir = dir_class.new(100,200,300,400)
12
+ end
13
+
14
+ include DirectionShared
15
+
16
+ it 'should have a target' do
17
+ @dir.respond_to?(:target).should == true
18
+ @dir.target.class.should == Point
19
+ end
20
+ it 'should have a control point' do
21
+ @dir.respond_to?(:control).should == true
22
+ @dir.control.class.should == Point
23
+ end
24
+ it 'should have an accessible target x, based on the constructor argument' do
25
+ @dir.target.x.should == 300
26
+ end
27
+ it 'should have an accessible target y, based on the constructor argument' do
28
+ @dir.target.y.should == 400
29
+ end
30
+ it 'should have an accessible first control x, based on the constructor argument' do
31
+ @dir.control.x.should == 100
32
+ end
33
+ it 'should have an accessible first control y, based on the constructor argument' do
34
+ @dir.control.y.should == 200
35
+ end
36
+ it 'should be constructed with at least target x and y, a control 1 x and y, and a control 2 x and y parameters' do
37
+ lambda { dir_class.new }.should raise_error
38
+ lambda { dir_class.new 45 }.should raise_error
39
+ lambda { dir_class.new 45, 50 }.should raise_error
40
+ lambda { dir_class.new 45, 50, 60 }.should raise_error
41
+ lambda { dir_class.new 45, 50, 60, 70 }.should_not raise_error
42
+ lambda { dir_class.new 45, 50, 60, 70, true }.should_not raise_error
43
+ end
44
+ it 'should be relative if constructed with a false fifth parameter' do
45
+ direction = dir_class.new 45, 50, 60, 70, false
46
+ direction.absolute?.should == false
47
+ end
48
+ it 'should be absolute if constructed with a true fifth parameter' do
49
+ direction = dir_class.new 45, 50, 60, 70, true
50
+ direction.absolute?.should == true
51
+ end
52
+ it 'should be absolute if constructed with only four parameters' do
53
+ direction = dir_class.new 45, 50, 60, 70
54
+ direction.absolute?.should == true
55
+ end
56
+ describe '#to_command' do
57
+ it 'should start with a capital T when not absolute' do
58
+ rel_dir = create_relative
59
+ extract_command(rel_dir.to_command(true)).should == 't'
60
+ end
61
+ it 'should start with a lower-case t when absolute' do
62
+ extract_command(@dir.to_command(true)).should == 'T'
63
+ end
64
+ it 'should have exactly 4 numerical parameters' do
65
+ extract_coordinates(@dir.to_command).length.should == 4
66
+ end
67
+ it 'should show the provided control X value as the first parameter' do
68
+ extract_coordinates(@dir.to_command)[0].should == 100
69
+ end
70
+ it 'should show the provided control Y value as the second parameter' do
71
+ extract_coordinates(@dir.to_command)[1].should == 200
72
+ end
73
+ it 'should show the provided target X value as the third parameter' do
74
+ extract_coordinates(@dir.to_command)[2].should == 300
75
+ end
76
+ it 'should show the provided target Y value as the fourth parameter' do
77
+ extract_coordinates(@dir.to_command)[3].should == 400
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ include Savage::Directions
4
+
5
+ describe VerticalTo do
6
+ def dir_class; VerticalTo; end
7
+ def create_relative; VerticalTo.new(100,false); end
8
+ def command_code; 'v'; end
9
+ include CoordinateTargetShared
10
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ include Savage
4
+
5
+ describe Path do
6
+ it 'should accept no parameters in a constructor for a new, empty path' do
7
+ lambda{ Path.new }.should_not raise_error
8
+ end
9
+ it 'should accept a string parameter to build a path based on existing path data' do
10
+ lambda{ Path.new("M100 200") }.should_not raise_error
11
+ end
12
+ it 'should raise an error if anything besides a string is passed to the constructor' do
13
+ lambda{ Path.new([]) }.should raise_error
14
+ lambda{ Path.new({}) }.should raise_error
15
+ lambda{ Path.new(56) }.should raise_error
16
+ lambda{ Path.new(Object.new) }.should raise_error
17
+ end
18
+ it 'should have subpaths' do
19
+ Path.new.respond_to?(:subpaths).should == true
20
+ end
21
+ it 'should have a to_command method' do
22
+ Path.new.respond_to?(:to_command).should == true
23
+ end
24
+ end
@@ -0,0 +1,112 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ include Savage
4
+
5
+ describe SubPath do
6
+ it 'should have a commands list' do
7
+ SubPath.new.respond_to?(:commands).should == true
8
+ end
9
+ it 'should have a move_to method' do
10
+ SubPath.new.respond_to?(:move_to).should == true
11
+ end
12
+ it 'should have a line_to method' do
13
+ SubPath.new.respond_to?(:line_to).should == true
14
+ end
15
+ it 'should have a horizontal_to method' do
16
+ SubPath.new.respond_to?(:horizontal_to).should == true
17
+ end
18
+ it 'should have a vertical_to method' do
19
+ SubPath.new.respond_to?(:vertical_to).should == true
20
+ end
21
+ it 'should have a quadratic_curve_to method' do
22
+ SubPath.new.respond_to?(:quadratic_curve_to).should == true
23
+ end
24
+ it 'should have a cubic_curve_to method' do
25
+ SubPath.new.respond_to?(:cubic_curve_to).should == true
26
+ end
27
+ it 'should have a arc_to method' do
28
+ SubPath.new.respond_to?(:arc_to).should == true
29
+ end
30
+ it 'should have a close_path method' do
31
+ SubPath.new.respond_to?(:close_path).should == true
32
+ end
33
+ it 'should have a closed? method' do
34
+ SubPath.new.respond_to?(:closed?).should == true
35
+ end
36
+ it 'should have a to_command method' do
37
+ SubPath.new.respond_to?(:to_command).should == true
38
+ end
39
+ describe '#closed?' do
40
+ it 'should be true if the last direction in the commands list is of type ClosePath' do
41
+ path = SubPath.new
42
+ path.move_to 100, 300
43
+ path.line_to 243, 21
44
+ path.close_path
45
+ path.closed?.should == true
46
+ end
47
+ it 'should be false if the last direction in the commands list is of any other type or absent' do
48
+ path = SubPath.new
49
+ path.move_to 100, 300
50
+ path.line_to 234, 21
51
+ path.closed?.should == false
52
+ path2 = SubPath.new
53
+ path2.closed?.should == false
54
+ end
55
+ end
56
+ describe '#to_command' do
57
+ it 'should output the concatenation of all the subcommands if no two are the same in sequence' do
58
+ path = SubPath.new
59
+ path.move_to 100, 200
60
+ path.horizontal_to -200
61
+ path.quadratic_curve_to 342, -341.23, 405, 223
62
+ path.line_to -342.002, 231.42
63
+ path.close_path
64
+ path.to_command.should == 'M100 200H-200Q342-341.23 405 223L-342.002 231.42Z'
65
+ end
66
+ it 'should strip the command code if the previous code was the same as the present' do
67
+ path = SubPath.new
68
+ com1 = path.move_to 100, 200
69
+ com2 = path.horizontal_to -200
70
+ com4 = path.line_to -342.002, 231.42
71
+ com4 = path.line_to -234, 502
72
+ path.to_command.should == 'M100 200H-200L-342.002 231.42-234 502'
73
+ end
74
+ it 'should strip the command code if the previous code was a MoveTo and the current code is a LineTo' do
75
+ path = SubPath.new
76
+ com1 = path.move_to 100, 200
77
+ com4 = path.line_to -342.002, 231.42
78
+ com4 = path.line_to -234, 502
79
+ path.to_command.should == 'M100 200-342.002 231.42-234 502'
80
+ end
81
+ end
82
+ describe 'move_to' do
83
+ before :each do
84
+ @path = SubPath.new
85
+ end
86
+ context 'when the command list is empty' do
87
+ it 'should add a MoveTo command on to the commands list' do
88
+ this_move = @path.move_to(100,200)
89
+ @path.commands.should == [this_move]
90
+ end
91
+ it 'should return the newly created MoveTo command' do
92
+ @path.move_to(100,200).class.should == Directions::MoveTo
93
+ end
94
+ end
95
+ context 'when the command list is not empty' do
96
+ it 'does something' do
97
+ first_move = @path.move_to(200,400)
98
+ @path.move_to(100,200)
99
+ @path.commands.should == [first_move]
100
+ end
101
+ it 'should return nil' do
102
+ @path.move_to(200,400)
103
+ @path.move_to(100,200).nil?.should == true
104
+ end
105
+ end
106
+ end
107
+ describe '#commands' do
108
+ it 'should be able to access items via the bracket operator' do
109
+ SubPath.new.commands.respond_to?(:[]).should == true
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Savage do
4
+
5
+ end
@@ -0,0 +1,13 @@
1
+ module Command
2
+ def extract_coordinates(command_string)
3
+ coordinates = []
4
+ command_string.scan /-?\d+(\.\d+)?/ do |match_group|
5
+ coordinates << $&.to_f
6
+ end
7
+ coordinates
8
+ end
9
+
10
+ def extract_command(command_string)
11
+ command_string[0,1]
12
+ end
13
+ end
@@ -0,0 +1,35 @@
1
+ share_as :CoordinateTargetShared do
2
+ before :each do
3
+ @dir = dir_class.new(100)
4
+ end
5
+ include DirectionShared
6
+ it 'should have an accessible target, based on the constructor argument' do
7
+ @dir.respond_to?(:target).should == true
8
+ @dir.target.should == 100
9
+ end
10
+ it 'should be constructed with at least a target parameter' do
11
+ lambda { dir_class.new }.should raise_error
12
+ lambda { dir_class.new 45 }.should_not raise_error
13
+ lambda { dir_class.new 45, true }.should_not raise_error
14
+ end
15
+ it 'should be relative if constructed with a false third parameter' do
16
+ direction = dir_class.new(45, false)
17
+ direction.absolute?.should == false
18
+ end
19
+ it 'should be absolute if constructed with a true third parameter' do
20
+ direction = dir_class.new(45, true)
21
+ direction.absolute?.should == true
22
+ end
23
+ it 'should be absolute if constructed with only two parameters' do
24
+ direction = dir_class.new(45)
25
+ direction.absolute?.should == true
26
+ end
27
+ describe '#to_command' do
28
+ it 'should have exactly 1 numerical parameter' do
29
+ extract_coordinates(@dir.to_command).length.should == 1
30
+ end
31
+ it 'should show the provided X value as the next parameter' do
32
+ extract_coordinates(@dir.to_command)[0].should == 100
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,21 @@
1
+ share_as :DirectionShared do
2
+ include Command
3
+ it 'should have a to_command method' do
4
+ @dir.respond_to?(:to_command).should == true
5
+ end
6
+ it 'should have an absolute? method' do
7
+ @dir.respond_to?(:absolute?).should == true
8
+ end
9
+ describe '#to_command' do
10
+ it 'should start with a lower-case letter when not absolute' do
11
+ rel_dir = create_relative
12
+ extract_command(rel_dir.to_command).should == command_code.downcase
13
+ end
14
+ it 'should start with a capital letter when absolute' do
15
+ extract_command(@dir.to_command).should == command_code.upcase
16
+ end
17
+ it 'should only have one alphabetical command code' do
18
+ @dir.to_command.match(/[A-Za-z]/).size.should == 1
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ share_as :PointTargetShared do
2
+ before :each do
3
+ @dir = dir_class.new(100,200)
4
+ end
5
+ include DirectionShared
6
+ it 'should have a target' do
7
+ @dir.respond_to?(:target).should == true
8
+ @dir.target.class.should == Point
9
+ end
10
+ it 'should have an accessible target x, based on the constructor argument' do
11
+ @dir.target.x.should == 100
12
+ end
13
+ it 'should have an accessible target y, based on the constructor argument' do
14
+ @dir.target.y.should == 200
15
+ end
16
+ it 'should be constructed with at least an x and y parameter' do
17
+ lambda { dir_class.new }.should raise_error
18
+ lambda { dir_class.new 45 }.should raise_error
19
+ lambda { dir_class.new 45, 50 }.should_not raise_error
20
+ end
21
+ it 'should be relative if constructed with a false third parameter' do
22
+ direction = dir_class.new(45, 50, false)
23
+ direction.absolute?.should == false
24
+ end
25
+ it 'should be absolute if constructed with a true third parameter' do
26
+ direction = dir_class.new(45, 50, true)
27
+ direction.absolute?.should == true
28
+ end
29
+ it 'should be absolute if constructed with only two parameters' do
30
+ direction = dir_class.new(45, 45)
31
+ direction.absolute?.should == true
32
+ end
33
+ describe '#to_command' do
34
+ it 'should have exactly 2 numerical parameters' do
35
+ extract_coordinates(@dir.to_command).length.should == 2
36
+ end
37
+ it 'should show the provided X value as the next parameter' do
38
+ extract_coordinates(@dir.to_command)[0].should == 100
39
+ end
40
+ it 'should show the provided Y value as the final parameter' do
41
+ extract_coordinates(@dir.to_command)[1].should == 200
42
+ end
43
+ end
44
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,36 @@
1
+ require 'rubygems'
2
+ require 'spork'
3
+
4
+ Spork.prefork do
5
+ # Loading more in this block will cause your tests to run faster. However,
6
+ # if you change any configuration or code from libraries loaded here, you'll
7
+ # need to restart spork for it take effect.
8
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
9
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
10
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'shared'))
11
+
12
+ require 'savage'
13
+ require 'spec'
14
+ require 'spec/autorun'
15
+ Spec::Runner.configure do |config|
16
+
17
+ end
18
+
19
+ Dir[File.join(File.dirname(__FILE__) << '/shared', "*.rb")].each {|file| require File.basename(file) }
20
+ end
21
+
22
+ Spork.each_run do
23
+ # This code will be run each time you run your specs.
24
+
25
+ end
26
+
27
+ # --- Instructions ---
28
+ # - Sort through your spec_helper file. Place as much environment loading
29
+ # code that you don't normally modify during development in the
30
+ # Spork.prefork block.
31
+ # - Place the rest under Spork.each_run block
32
+ # - Any code that is left outside of the blocks will be ran during preforking
33
+ # and during each_run!
34
+ # - These instructions should self-destruct in 10 seconds. If they don't,
35
+ # feel free to delete them.
36
+ #