cup 0.0.7 → 0.0.8
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 +1 -1
- data/README.markdown +3 -3
- data/lib/cup/builder.rb +18 -14
- data/lib/cup/cupfile.rb +2 -2
- data/lib/cup/server/app.rb +5 -3
- data/lib/cup/version.rb +1 -1
- data/spec/cup/builder_spec.rb +112 -131
- data/spec/cup/cupfile_spec.rb +0 -11
- metadata +37 -36
data/Gemfile.lock
CHANGED
data/README.markdown
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
INSERT A PICTURE OF A CUP
|
4
4
|
|
5
|
+
`npm install uglify-js`: UglifyJS must be installed
|
6
|
+
|
5
7
|
Command lines tools and a web application to help in developing javascript libraries and applications independently of anything else.
|
6
8
|
|
7
9
|
|
@@ -65,8 +67,6 @@ Sample Cupfile (ruby) with comments:
|
|
65
67
|
'so/can/glob-like/patterns/**/*.js'] # happily, patterns and arrays can be used too.
|
66
68
|
end
|
67
69
|
|
68
|
-
uglifier_options :mangle => true # uglifier defaults can be overriden
|
69
|
-
|
70
70
|
before_build do
|
71
71
|
# whatever you want
|
72
72
|
end
|
@@ -103,7 +103,7 @@ Visual specs help to facilitate the visual verifcation of behaviour which maybe
|
|
103
103
|
|
104
104
|
To create a visual spec, add a slim template in the `spec/visual` directory. Any directory structure within `spec/visual` may be used to organise visual specs as you see fit. An index of available visual specs is available in the browser app.
|
105
105
|
|
106
|
-
Each slim template under `spec/visual` is a partial and will be injected into the body of a page with the src, lib and vendor javascript loaded in the order specified by the Cupfile.
|
106
|
+
Each slim template under `spec/visual` is a partial and will be injected into the body of a page with the src, lib and vendor javascript loaded in the order specified by the Cupfile.
|
107
107
|
|
108
108
|
|
109
109
|
Note: No style sheets are automatically loaded for visual specs.
|
data/lib/cup/builder.rb
CHANGED
@@ -60,16 +60,16 @@ module Cup
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def concatenate!(options = {})
|
63
|
-
process(options, :concatenated) do |
|
64
|
-
|
63
|
+
process(options, :concatenated) do |input_file|
|
64
|
+
File.read(input_file)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
def minify!(options = {})
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
69
|
+
process(options, :minified) do |input_file|
|
70
|
+
result = `uglifyjs "#{input_file}"`
|
71
|
+
fail "FAILED: uglifyjs '#{input_file}'" unless $?.exitstatus == 0
|
72
|
+
result
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -85,21 +85,22 @@ module Cup
|
|
85
85
|
|
86
86
|
build_directory = @build_directory.to_s
|
87
87
|
mkdir build_directory unless Dir.exists?(build_directory)
|
88
|
-
file = File.open(output_file, 'w')
|
89
88
|
|
90
|
-
|
89
|
+
buffer = [licence_header, ';']
|
91
90
|
|
92
91
|
input_files.each do |input_file|
|
93
|
-
|
94
|
-
|
95
|
-
file.write(';')
|
92
|
+
buffer << (yield input_file)
|
93
|
+
buffer << ';'
|
96
94
|
end
|
97
95
|
|
98
|
-
|
96
|
+
buffer = buffer.join
|
99
97
|
|
100
|
-
|
98
|
+
File.open(output_file, 'w') do |io|
|
99
|
+
io.write buffer
|
100
|
+
cli.say("#{relative_output_file}: #{io.pos} bytes written.", :green)
|
101
|
+
end
|
101
102
|
|
102
|
-
|
103
|
+
buffer
|
103
104
|
end
|
104
105
|
def cupfile
|
105
106
|
directory.cupfile
|
@@ -114,6 +115,9 @@ module Cup
|
|
114
115
|
def input_files
|
115
116
|
directory.javascripts :build_input
|
116
117
|
end
|
118
|
+
def uglifier_options
|
119
|
+
uglifier_defaults.merge directory.cupfile.uglifier_options
|
120
|
+
end
|
117
121
|
def uglifier_defaults
|
118
122
|
{
|
119
123
|
:mangle => true, # Mangle variables names
|
data/lib/cup/cupfile.rb
CHANGED
@@ -3,7 +3,7 @@ module Cup
|
|
3
3
|
class CupfileError < RuntimeError; end
|
4
4
|
|
5
5
|
attr_accessor :path
|
6
|
-
attr_reader :path, :validation_errors, :name, :version, :licence, :before_build, :after_build
|
6
|
+
attr_reader :path, :validation_errors, :name, :version, :licence, :before_build, :after_build
|
7
7
|
|
8
8
|
def initialize path
|
9
9
|
|
@@ -85,7 +85,7 @@ module Cup
|
|
85
85
|
|
86
86
|
## DSL members
|
87
87
|
## setters
|
88
|
-
%W{version name licence
|
88
|
+
%W{version name licence}.each do |m|
|
89
89
|
define_method m do |value|
|
90
90
|
@cupfile.instance_variable_set "@#{m}", value
|
91
91
|
end
|
data/lib/cup/server/app.rb
CHANGED
@@ -37,7 +37,7 @@ module Cup
|
|
37
37
|
set :public_folder, false #Cup::Directory.current.path.to_s
|
38
38
|
|
39
39
|
def build
|
40
|
-
@build_result
|
40
|
+
@build_result ||= Cup.build
|
41
41
|
end
|
42
42
|
|
43
43
|
def view_scope(javascripts_scheme=:debug)
|
@@ -46,7 +46,7 @@ module Cup
|
|
46
46
|
|
47
47
|
def view (template, options={})
|
48
48
|
build
|
49
|
-
|
49
|
+
|
50
50
|
options = {
|
51
51
|
:scope => view_scope(options.delete(:javascripts_scheme) || :debug),
|
52
52
|
:layout => true
|
@@ -106,8 +106,8 @@ module Cup
|
|
106
106
|
end
|
107
107
|
|
108
108
|
get '/empty' do
|
109
|
-
redirect '/' if view_scope.build_status == :failed
|
110
109
|
view '', :layout => :blank
|
110
|
+
redirect '/' if view_scope.build_status == :failed
|
111
111
|
end
|
112
112
|
|
113
113
|
get '/spec' do
|
@@ -127,6 +127,8 @@ module Cup
|
|
127
127
|
end
|
128
128
|
|
129
129
|
get '/spec/visual/*' do |visual|
|
130
|
+
build
|
131
|
+
|
130
132
|
visual = visuals[visual]
|
131
133
|
|
132
134
|
pass if visual.nil? or not File.exist?(visual.full_path)
|
data/lib/cup/version.rb
CHANGED
data/spec/cup/builder_spec.rb
CHANGED
@@ -1,164 +1,145 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
describe Cup::Builder do
|
4
|
-
|
5
|
-
let(:directory) {Cup::Directory.current}
|
6
|
-
let(:builder) {Cup::Builder.new(directory)}
|
7
|
-
let(:options){Hash.new}
|
8
|
-
|
9
|
-
describe '#build' do
|
10
|
-
|
11
|
-
def build
|
12
|
-
builder.build options
|
13
|
-
end
|
14
|
-
|
15
|
-
share_examples_for :building do
|
16
|
-
it 'should call the before_build hook before building' do
|
17
|
-
directory.cupfile.before_build.should_receive(:call)
|
18
|
-
build
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should call the after_build after the build' do
|
22
|
-
directory.cupfile.after_build.should_receive(:call)
|
23
|
-
build
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'should call the concatentate_variant' do
|
27
|
-
builder.should_receive(concatentate_variant)
|
28
|
-
build
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should call the minify_variant' do
|
32
|
-
builder.should_receive(minify_variant)
|
33
|
-
build
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'should return a Hash with the results of both minification and concatenation' do
|
37
|
-
result = build
|
38
|
-
result[:concatenated].should be_instance_of Hash
|
39
|
-
result[:minified].should be_instance_of Hash
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context 'when suppressing errors' do
|
44
|
-
def build
|
45
|
-
builder.build options
|
46
|
-
end
|
47
|
-
let(:concatentate_variant){:concatenate}
|
48
|
-
let(:minify_variant){:minify}
|
49
|
-
end
|
50
|
-
|
51
|
-
context 'when not suppressing errors' do
|
52
|
-
def build
|
53
|
-
builder.build! options
|
54
|
-
end
|
55
|
-
let(:concatentate_variant){:concatenate!}
|
56
|
-
let(:minify_variant){:minify!}
|
57
|
-
end
|
58
|
-
end
|
1
|
+
require 'uglifier'
|
2
|
+
require 'cup/noop_shell'
|
59
3
|
|
60
|
-
|
4
|
+
module Cup
|
5
|
+
class Builder
|
6
|
+
include FileUtils
|
61
7
|
|
62
|
-
|
63
|
-
process_scripts!
|
64
|
-
File.should exist(output_file)
|
65
|
-
end
|
66
|
-
|
67
|
-
context 'when a licence file is specified' do
|
8
|
+
attr_reader :directory
|
68
9
|
|
69
|
-
|
70
|
-
|
10
|
+
def initialize directory
|
11
|
+
@directory = directory
|
71
12
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
13
|
+
@build_directory = @directory.path + 'build'
|
14
|
+
if File.exists? @build_directory
|
15
|
+
if File.file? @build_directory
|
16
|
+
raise "Cannot build, build directory is a file"
|
17
|
+
end
|
18
|
+
else
|
19
|
+
Dir.mkdir @build_directory
|
76
20
|
end
|
77
21
|
|
78
|
-
|
79
|
-
|
80
|
-
File.read(output_file).start_with?(licence_comment).should be_true
|
81
|
-
end
|
22
|
+
uglifier_options = uglifier_defaults.merge directory.cupfile.uglifier_options
|
23
|
+
@compiler = Uglifier.new(uglifier_options)
|
82
24
|
end
|
83
25
|
|
84
|
-
|
26
|
+
def build *params
|
85
27
|
|
86
|
-
|
87
|
-
File.stub(:read).and_raise
|
28
|
+
cupfile.before_build.call
|
88
29
|
|
89
|
-
|
90
|
-
|
91
|
-
}.to raise_error
|
30
|
+
concatenated = concatenate *params
|
31
|
+
minified = minify *params
|
92
32
|
|
93
|
-
|
33
|
+
cupfile.after_build.call
|
94
34
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
35
|
+
{
|
36
|
+
:concatenated => concatenated,
|
37
|
+
:minified => minified
|
38
|
+
}
|
99
39
|
end
|
100
40
|
|
101
|
-
|
102
|
-
|
103
|
-
|
41
|
+
def build! *params
|
42
|
+
cupfile.before_build.call
|
43
|
+
concatenated = concatenate! *params
|
44
|
+
minified = minify! *params
|
45
|
+
cupfile.after_build.call
|
46
|
+
{
|
47
|
+
:concatenated => concatenated,
|
48
|
+
:minified => minified
|
49
|
+
}
|
50
|
+
end
|
104
51
|
|
105
|
-
|
106
|
-
|
107
|
-
|
52
|
+
def concatenate *params
|
53
|
+
{:status => :ok, :output => (concatenate! *params)}
|
54
|
+
rescue Exception => e
|
55
|
+
{:status => :failed, :exception => e}
|
56
|
+
end
|
108
57
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
58
|
+
def minify *params
|
59
|
+
{:status => :ok, :output => (minify! *params)}
|
60
|
+
rescue Exception => e
|
61
|
+
{:status => :failed, :exception => e}
|
62
|
+
end
|
114
63
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
process_scripts[:exception].should be_nil
|
119
|
-
process_scripts[:output].should_not be_nil
|
120
|
-
end
|
64
|
+
def concatenate!(options = {})
|
65
|
+
process(options, :concatenated) do |input_file_content|
|
66
|
+
input_file_content
|
121
67
|
end
|
122
68
|
end
|
123
69
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
options[:cli] = cli
|
128
|
-
cli.should_receive(:say)
|
129
|
-
process_scripts!
|
70
|
+
def minify!(options = {})
|
71
|
+
process(options, :minified) do |input_file_content|
|
72
|
+
@compiler.compile input_file_content
|
130
73
|
end
|
131
74
|
end
|
132
|
-
end
|
133
75
|
|
134
|
-
|
76
|
+
private
|
135
77
|
|
136
|
-
def
|
137
|
-
builder.concatenate!(options)
|
138
|
-
end
|
78
|
+
def process(options, output_file)
|
139
79
|
|
140
|
-
|
141
|
-
|
142
|
-
end
|
80
|
+
relative_output_file = directory.send output_file, :relative => true
|
81
|
+
output_file = directory.send output_file
|
143
82
|
|
144
|
-
|
83
|
+
options = default_options.merge options
|
84
|
+
cli = options[:cli]
|
145
85
|
|
146
|
-
|
147
|
-
|
148
|
-
end
|
86
|
+
build_directory = @build_directory.to_s
|
87
|
+
mkdir build_directory unless Dir.exists?(build_directory)
|
149
88
|
|
150
|
-
|
89
|
+
buffer = StringIO.new
|
151
90
|
|
152
|
-
|
153
|
-
|
154
|
-
|
91
|
+
input_files.each do |input_file|
|
92
|
+
buffer.write(';')
|
93
|
+
buffer.write(File.read(input_file))
|
94
|
+
buffer.write(';')
|
95
|
+
end
|
155
96
|
|
156
|
-
|
157
|
-
|
158
|
-
end
|
97
|
+
buffer.rewind
|
98
|
+
processed = yield buffer.read
|
159
99
|
|
160
|
-
|
100
|
+
file = File.open(output_file, 'w') do |io|
|
101
|
+
io.puts licence_header
|
102
|
+
io.puts ';'
|
103
|
+
io.write processed
|
104
|
+
io.puts ';'
|
105
|
+
cli.say("#{relative_output_file}: #{io.pos} bytes written.", :green)
|
106
|
+
end
|
161
107
|
|
162
|
-
|
108
|
+
processed
|
109
|
+
end
|
110
|
+
def cupfile
|
111
|
+
directory.cupfile
|
112
|
+
end
|
113
|
+
def default_options
|
114
|
+
{ :cli => NoopShell }
|
115
|
+
end
|
116
|
+
def licence_header
|
117
|
+
licence = File.read(directory.cupfile.licence) rescue nil
|
118
|
+
licence.nil? ? '' : "/*\n#{licence}\n*/"
|
119
|
+
end
|
120
|
+
def input_files
|
121
|
+
directory.javascripts :build_input
|
122
|
+
end
|
123
|
+
def uglifier_defaults
|
124
|
+
{
|
125
|
+
:mangle => true, # Mangle variables names
|
126
|
+
:toplevel => false, # Mangle top-level variable names
|
127
|
+
:except => [], # Variable names to be excluded from mangling
|
128
|
+
:max_line_length => 32 * 1024, # Maximum line length
|
129
|
+
:squeeze => true, # Squeeze code resulting in smaller, but less-readable code
|
130
|
+
:seqs => true, # Reduce consecutive statements in blocks into single statement
|
131
|
+
:dead_code => true, # Remove dead code (e.g. after return)
|
132
|
+
:unsafe => false, # Optimizations known to be unsafe in some situations
|
133
|
+
:copyright => true, # Show copyright message
|
134
|
+
:beautify => false, # Output indented code
|
135
|
+
:beautify_options => {
|
136
|
+
:indent_level => 2,
|
137
|
+
:indent_start => 0,
|
138
|
+
:quote_keys => false,
|
139
|
+
:space_colon => 0,
|
140
|
+
:ascii_only => false
|
141
|
+
}
|
142
|
+
}
|
143
|
+
end
|
163
144
|
end
|
164
|
-
end
|
145
|
+
end
|
data/spec/cup/cupfile_spec.rb
CHANGED
@@ -191,17 +191,6 @@ describe Cup::Cupfile do
|
|
191
191
|
cupfile.after_build.should equal proc
|
192
192
|
end
|
193
193
|
|
194
|
-
it 'should allow uglifier options to be specified' do
|
195
|
-
|
196
|
-
uglifier_opts = Hash.new
|
197
|
-
|
198
|
-
Cup::Cupfile::DSL.interpret cupfile do
|
199
|
-
uglifier_options uglifier_opts
|
200
|
-
end
|
201
|
-
|
202
|
-
cupfile.uglifier_options.should equal uglifier_opts
|
203
|
-
end
|
204
|
-
|
205
194
|
describe Cup::Cupfile::DSL do
|
206
195
|
describe Cup::Cupfile::DSL::JavascriptsDSL do
|
207
196
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-21 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &2158458560 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2158458560
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &2158456920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2158456920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: therubyracer
|
38
|
-
requirement: &
|
38
|
+
requirement: &2158453540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2158453540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: uglifier
|
49
|
-
requirement: &
|
49
|
+
requirement: &2158453100 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2158453100
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sinatra
|
60
|
-
requirement: &
|
60
|
+
requirement: &2158452540 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2158452540
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: slim
|
71
|
-
requirement: &
|
71
|
+
requirement: &2158451260 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2158451260
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sass
|
82
|
-
requirement: &
|
82
|
+
requirement: &2158450240 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2158450240
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: coffee-script
|
93
|
-
requirement: &
|
93
|
+
requirement: &2158449540 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2158449540
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: yard
|
104
|
-
requirement: &
|
104
|
+
requirement: &2158449000 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *2158449000
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rack
|
115
|
-
requirement: &
|
115
|
+
requirement: &2158448460 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - =
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 1.3.3
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *2158448460
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: ruby-debug19
|
126
|
-
requirement: &
|
126
|
+
requirement: &2158448040 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *2158448040
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: rspec
|
137
|
-
requirement: &
|
137
|
+
requirement: &2158447540 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *2158447540
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: shoulda
|
148
|
-
requirement: &
|
148
|
+
requirement: &2158447040 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *2158447040
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: statemachine
|
159
|
-
requirement: &
|
159
|
+
requirement: &2158437180 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,10 +164,10 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *2158437180
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: rack-test
|
170
|
-
requirement: &
|
170
|
+
requirement: &2158436500 !ruby/object:Gem::Requirement
|
171
171
|
none: false
|
172
172
|
requirements:
|
173
173
|
- - ! '>='
|
@@ -175,10 +175,10 @@ dependencies:
|
|
175
175
|
version: '0'
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
|
-
version_requirements: *
|
178
|
+
version_requirements: *2158436500
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: thin
|
181
|
-
requirement: &
|
181
|
+
requirement: &2158435640 !ruby/object:Gem::Requirement
|
182
182
|
none: false
|
183
183
|
requirements:
|
184
184
|
- - ! '>='
|
@@ -186,10 +186,10 @@ dependencies:
|
|
186
186
|
version: '0'
|
187
187
|
type: :development
|
188
188
|
prerelease: false
|
189
|
-
version_requirements: *
|
189
|
+
version_requirements: *2158435640
|
190
190
|
- !ruby/object:Gem::Dependency
|
191
191
|
name: sinatra-reloader
|
192
|
-
requirement: &
|
192
|
+
requirement: &2158433620 !ruby/object:Gem::Requirement
|
193
193
|
none: false
|
194
194
|
requirements:
|
195
195
|
- - ! '>='
|
@@ -197,7 +197,7 @@ dependencies:
|
|
197
197
|
version: '0'
|
198
198
|
type: :development
|
199
199
|
prerelease: false
|
200
|
-
version_requirements: *
|
200
|
+
version_requirements: *2158433620
|
201
201
|
description:
|
202
202
|
email:
|
203
203
|
- sjltaylor@gmail.com
|
@@ -286,3 +286,4 @@ test_files:
|
|
286
286
|
- spec/support/javascripts_matchers.rb
|
287
287
|
- spec/support/macros.rb
|
288
288
|
- spec/support/stub_helpers.rb
|
289
|
+
has_rdoc:
|