unit_validator 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.
- data/.autotest +2 -0
- data/.gitignore +43 -0
- data/Gemfile +19 -0
- data/Gemfile.lock +57 -0
- data/LICENSE +20 -0
- data/README.md +93 -0
- data/Rakefile +61 -0
- data/VERSION +1 -0
- data/autotest/discover.rb +3 -0
- data/fixtures/gdoc.csv +10 -0
- data/fixtures/gdoc.ods +0 -0
- data/fixtures/gdoc.xls +0 -0
- data/fixtures/gdoc.xlsx +0 -0
- data/lib/cf/input_validator.rb +72 -0
- data/lib/cf/result_validator.rb +52 -0
- data/lib/generic_spreadsheet.rb +23 -0
- data/lib/tasks/rcov_custom.rb +5 -0
- data/lib/validator_helpers.rb +56 -0
- data/spec/.rspec +1 -0
- data/spec/cf_input_validator_spec.rb +233 -0
- data/spec/cf_result_validator_spec.rb +76 -0
- data/spec/spec_helper.rb +23 -0
- data/unit_validator.gemspec +139 -0
- metadata +462 -0
@@ -0,0 +1,233 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe CF::InputValidator do
|
4
|
+
|
5
|
+
it "should validate the csv file rows against the rules provided by FormFactory gem" do
|
6
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
7
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
8
|
+
},
|
9
|
+
{:field_id => "field_2", :label => "email", :field_type => "text_data",
|
10
|
+
:value => "spt@lala.com", :required => false, :validation_format => "email"
|
11
|
+
}]
|
12
|
+
inputs = "company name,email\nSprout,info@sproutify.com"
|
13
|
+
output = [["Sprout","info@sproutify.com"]]
|
14
|
+
|
15
|
+
cloud_validator = CF::InputValidator.new(rules)
|
16
|
+
val = cloud_validator.parse_and_validate(inputs)
|
17
|
+
val[:valid_units].should == output
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should not validate the csv file with extra headers" do
|
21
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
22
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
23
|
+
}]
|
24
|
+
inputs = "company name,email\nSprout,info@sproutify.com"
|
25
|
+
output = [["Sprout","info@sproutify.com"]]
|
26
|
+
|
27
|
+
cloud_validator = CF::InputValidator.new(rules)
|
28
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should_not == output
|
29
|
+
cloud_validator.errors.should include("Headers doesnot match the column counts")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not validate the csv file with invalid headers as per rules" do
|
33
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
34
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
35
|
+
},
|
36
|
+
{:field_id => "field_2", :label => "email", :field_type => "text_data",
|
37
|
+
:value => "spt@lala.com", :required => false, :validation_format => "email"
|
38
|
+
}]
|
39
|
+
inputs = "company name\nSprout,info@sproutify.com"
|
40
|
+
output = [["Sprout","info@sproutify.com"]]
|
41
|
+
|
42
|
+
cloud_validator = CF::InputValidator.new(rules)
|
43
|
+
cloud_validator.parse_and_validate(inputs).should_not == output
|
44
|
+
cloud_validator.errors.should include("Headers doesnot match the column counts")
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should validate the input email by format rules" do
|
48
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
49
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
50
|
+
},
|
51
|
+
{:field_id => "field_2", :label => "email", :field_type => "text_data",
|
52
|
+
:value => "spt@lala.com", :required => false, :validation_format => "email"
|
53
|
+
}]
|
54
|
+
inputs = "company name,email\nSprout,info@sproutify.com\nApple,ram@apple.co.uk\nPatan,ram.gmail@apple.co.in"
|
55
|
+
output = [["Sprout","info@sproutify.com"], ["Apple","ram@apple.co.uk"], ["Patan","ram.gmail@apple.co.in"]]
|
56
|
+
|
57
|
+
cloud_validator = CF::InputValidator.new(rules)
|
58
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == output
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should check valid & invalid email by format rules" do
|
62
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
63
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
64
|
+
},
|
65
|
+
{:field_id => "field_2", :label => "email", :field_type => "text_data",
|
66
|
+
:value => "spt@lala.com", :required => false, :validation_format => "email"
|
67
|
+
}]
|
68
|
+
inputs = "company name,email\nSprout,info@sproutify.com\nApple,ram@apple\nPatan,ram.gmail@ap ple.co.in\nGmail,@gmail.com\nEmail,email@"
|
69
|
+
valid_output = [["Sprout","info@sproutify.com"]]
|
70
|
+
invalid_output = [["Apple", "ram@apple"], ["Patan", "ram.gmail@ap ple.co.in"], ["Gmail", "@gmail.com"], ["Email","email@"]]
|
71
|
+
|
72
|
+
cloud_validator = CF::InputValidator.new(rules)
|
73
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == invalid_output
|
74
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == valid_output
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should validate url" do
|
78
|
+
rules = [{:field_id => "field_1", :label => "website", :field_type => "text_data",
|
79
|
+
:value => "http:\\www.yahoo.com", :required => true, :validation_format => "url"
|
80
|
+
}]
|
81
|
+
inputs = "website\nhttp://www.google.com\nabc"
|
82
|
+
valid_output = [["http://www.google.com"]]
|
83
|
+
invalid_output = [["abc"]]
|
84
|
+
|
85
|
+
cloud_validator = CF::InputValidator.new(rules)
|
86
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == valid_output
|
87
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == invalid_output
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should validate number" do
|
91
|
+
rules = [{:field_id => "field_1", :label => "Age", :field_type => "text_data",
|
92
|
+
:value => "http:\\www.yahoo.com", :required => true, :validation_format => "number"
|
93
|
+
}]
|
94
|
+
inputs = "Age\n32\n@1"
|
95
|
+
valid_output = [["32"]]
|
96
|
+
invalid_output = [["@1"]]
|
97
|
+
|
98
|
+
cloud_validator = CF::InputValidator.new(rules)
|
99
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == valid_output
|
100
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == invalid_output
|
101
|
+
end
|
102
|
+
|
103
|
+
# dd.mm.yyyy
|
104
|
+
it "should validate date" do
|
105
|
+
rules = [{:field_id => "field_1", :label => "Date of Birth", :field_type => "text_data",
|
106
|
+
:value => "01-01-2002", :required => true, :validation_format => "date"
|
107
|
+
}]
|
108
|
+
inputs = "Date of Birth\n15.12.2009\n1990-01-02"
|
109
|
+
valid_output = [["15.12.2009"]]
|
110
|
+
invalid_output = [["1990-01-02"]]
|
111
|
+
|
112
|
+
cloud_validator = CF::InputValidator.new(rules)
|
113
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == valid_output
|
114
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == invalid_output
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should validate time" do
|
118
|
+
rules = [{:field_id => "field_1", :label => "Now Time", :field_type => "text_data",
|
119
|
+
:value => "12:24", :required => true, :validation_format => "time"
|
120
|
+
}]
|
121
|
+
inputs = "Now Time\n01:21\n23:12\n24:12"
|
122
|
+
valid_output = [["01:21"],["23:12"]]
|
123
|
+
invalid_output = [["24:12"]]
|
124
|
+
|
125
|
+
cloud_validator = CF::InputValidator.new(rules)
|
126
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == valid_output
|
127
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == invalid_output
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should validate datetime" do
|
131
|
+
rules = [{:field_id => "field_1", :label => "Meeting On", :field_type => "text_data",
|
132
|
+
:value => "mm/dd/yyyy+hh:mm:ss", :required => true, :validation_format => "datetime"
|
133
|
+
}]
|
134
|
+
inputs = "Meeting On\n12/31/2003 12:12:12\n12:12:121990-01-02"
|
135
|
+
valid_output = [["12/31/2003 12:12:12"]]
|
136
|
+
invalid_output = [["12:12:121990-01-02"]]
|
137
|
+
|
138
|
+
cloud_validator = CF::InputValidator.new(rules)
|
139
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == valid_output
|
140
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == invalid_output
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should not validate unsupported validation_format" do
|
144
|
+
rules = [{:field_id => "field_1", :label => "Meeting On", :field_type => "text_data",
|
145
|
+
:value => "mm/dd/yyyy+hh:mm:ss", :required => true, :validation_format => "scroll"
|
146
|
+
}]
|
147
|
+
inputs = "Meeting On\n12/31/2003 12:12:12"
|
148
|
+
valid_output = [["12/31/2003 12:12:12"]]
|
149
|
+
err = "Validation format not supported:: scroll"
|
150
|
+
|
151
|
+
cloud_validator = CF::InputValidator.new(rules)
|
152
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should_not == valid_output
|
153
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == valid_output
|
154
|
+
cloud_validator.errors.should include(err)
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should validate supported validation_format" do
|
158
|
+
rules = [{:field_id => "field_1", :label => "saroj", :field_type => "text_data",
|
159
|
+
:value => "mm/dd/yyyy+hh:mm:ss", :required => false, :validation_format => "datetime"
|
160
|
+
}]
|
161
|
+
inputs = "saroj\n\n"
|
162
|
+
valid_output = [["12/31/2003 12:12:12"]]
|
163
|
+
|
164
|
+
cloud_validator = CF::InputValidator.new(rules)
|
165
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should_not == valid_output
|
166
|
+
cloud_validator.errors.should be_empty
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should validate currency (USD)" do
|
170
|
+
rules = [{:field_id => "field_1", :label => "Amount", :field_type => "text_data",
|
171
|
+
:value => "$1,113,000.00", :required => true, :validation_format => "currency"
|
172
|
+
}]
|
173
|
+
inputs = "Amount\n\"$1,113,000.00\"\n\"$3.99\"\n\"$5,000\"\n\"$1.0\"\n\"$22,222,222,222,222,222\"\n\"$74387498372947387483978934758744329.00\"\n1\n-9\n+555\n$50*100"
|
174
|
+
valid_output = [["$1,113,000.00"], ["$3.99"], ["$5,000"], ["$1.0"], ["$22,222,222,222,222,222"], ["$74387498372947387483978934758744329.00"], ["1"]]
|
175
|
+
invalid_output = [["-9"], ["+555"], ["$50*100"]]
|
176
|
+
|
177
|
+
cloud_validator = CF::InputValidator.new(rules)
|
178
|
+
cloud_validator.parse_and_validate(inputs)[:valid_units].should == valid_output
|
179
|
+
cloud_validator.parse_and_validate(inputs)[:invalid_units].should == invalid_output
|
180
|
+
end
|
181
|
+
|
182
|
+
it "should check the file type and reject with error if its of the unsupported format" do
|
183
|
+
file_location = "fixtures/gdoc.xlsx"
|
184
|
+
CF::InputValidator.check_extension(file_location)[:check].should == true
|
185
|
+
|
186
|
+
file_location = "fixtures/gdoc.xlsxsfdsf"
|
187
|
+
CF::InputValidator.check_extension(file_location)[:check].should == false
|
188
|
+
CF::InputValidator.check_extension(file_location)[:error].should include("Invalid file! The specified format is not supported.")
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should parse the input from .ods, .xlsx or .xls files" do
|
192
|
+
|
193
|
+
file_location = "fixtures/gdoc.xlsx"
|
194
|
+
inputs = Excelx.new(file_location).to_csv
|
195
|
+
|
196
|
+
output = <<STR
|
197
|
+
"company name","email"
|
198
|
+
"Apple",
|
199
|
+
"sprout","info@sproutify.com"
|
200
|
+
,
|
201
|
+
,"inf o@ab c.com"
|
202
|
+
,
|
203
|
+
"DEF"," info@def.com "
|
204
|
+
"GHI",
|
205
|
+
,
|
206
|
+
,
|
207
|
+
,
|
208
|
+
" "," "
|
209
|
+
STR
|
210
|
+
inputs.should == output
|
211
|
+
|
212
|
+
inputs = Excel.new("fixtures/gdoc.xls").to_csv
|
213
|
+
inputs.should == output
|
214
|
+
|
215
|
+
inputs = Openoffice.new("fixtures/gdoc.ods").to_csv
|
216
|
+
output = <<STR
|
217
|
+
"company name","email"
|
218
|
+
"Apple",
|
219
|
+
"sprout","info@sproutify.com"
|
220
|
+
,
|
221
|
+
,"inf o@ab c.com"
|
222
|
+
,
|
223
|
+
"DEF"," info@def.com "
|
224
|
+
"GHI",
|
225
|
+
,
|
226
|
+
,
|
227
|
+
,
|
228
|
+
,
|
229
|
+
STR
|
230
|
+
inputs.should == output
|
231
|
+
end
|
232
|
+
|
233
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CF::ResultValidator do
|
4
|
+
|
5
|
+
it "should return a true boolean value (.valid?) if the rules match with result" do
|
6
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
7
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
8
|
+
},
|
9
|
+
{:field_id => "field_2", :label => "website", :field_type => "text_data",
|
10
|
+
:value => "http:\\www.yahoo.com", :required => true, :validation_format => "url"
|
11
|
+
}]
|
12
|
+
|
13
|
+
# TODO
|
14
|
+
# params = {:name => "Saroj", :site => "saroj.com"} which we've to convert to the following format
|
15
|
+
result = "company name,website\nzorasinc,http://zorasinc.blogspot.com"
|
16
|
+
|
17
|
+
@result_validator = CF::ResultValidator.new
|
18
|
+
@result_validator.valid?(rules, result).should be_true
|
19
|
+
@result_validator.errors.should be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return a false boolean value (.valid?) if the rules don't match with result and give particular error" do
|
23
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
24
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
25
|
+
},
|
26
|
+
{:field_id => "field_2", :label => "website", :field_type => "text_data",
|
27
|
+
:value => "http:\\www.yahoo.com", :required => true, :validation_format => "url"
|
28
|
+
}]
|
29
|
+
|
30
|
+
result = "company name\nsaroz"
|
31
|
+
|
32
|
+
@result_validator = CF::ResultValidator.new
|
33
|
+
@result_validator.valid?(rules, result).should be_false
|
34
|
+
@result_validator.errors.should_not be_empty
|
35
|
+
@result_validator.errors.should include("website is/are required")
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should give xtra headers provided error and return a false boolean value (.valid?) if the rules don't match with result" do
|
40
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
41
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
42
|
+
},
|
43
|
+
{:field_id => "field_2", :label => "website", :field_type => "text_data",
|
44
|
+
:value => "http:\\www.yahoo.com", :required => true, :validation_format => "url"
|
45
|
+
}]
|
46
|
+
|
47
|
+
result = "company name, website, email\nsaroz"
|
48
|
+
|
49
|
+
@result_validator = CF::ResultValidator.new
|
50
|
+
@result_validator.valid?(rules, result).should be_false
|
51
|
+
@result_validator.errors.should_not be_empty
|
52
|
+
@result_validator.errors.should include("cannot process as the input data consists extra headers")
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should give errors when validation fails" do
|
57
|
+
rules = [{:field_id => "field_1", :label => "company name", :field_type => "text_data",
|
58
|
+
:value => "Sprout", :required => true, :validation_format => "general"
|
59
|
+
},
|
60
|
+
{:field_id => "field_2", :label => "website", :field_type => "text_data",
|
61
|
+
:value => "http:\\www.yahoo.com", :required => true, :validation_format => "url"
|
62
|
+
}]
|
63
|
+
|
64
|
+
result = "company name, website\nsaroz, saroj@maharjan\nsprout, bttn://abc.com\nktm,"
|
65
|
+
|
66
|
+
@result_validator = CF::ResultValidator.new
|
67
|
+
@result_validator.valid?(rules, result).should be_false
|
68
|
+
@result_validator.errors.should_not be_empty
|
69
|
+
@result_validator.errors[0].should include("saroj@maharjan is not valid")
|
70
|
+
@result_validator.errors[1].should include("bttn://abc.com is not valid")
|
71
|
+
@result_validator.errors.should include("bttn://abc.com is not valid")
|
72
|
+
@result_validator.errors.should include("website is required")
|
73
|
+
@result_validator.errors.should include("saroj@maharjan is not valid","bttn://abc.com is not valid")
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
begin
|
3
|
+
Bundler.setup(:default, :development)
|
4
|
+
rescue Bundler::BundlerError => e
|
5
|
+
$stderr.puts e.message
|
6
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
7
|
+
exit e.status_code
|
8
|
+
end
|
9
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
11
|
+
|
12
|
+
require 'cf/input_validator'
|
13
|
+
require 'cf/result_validator'
|
14
|
+
require 'rspec'
|
15
|
+
|
16
|
+
# Requires supporting files with custom matchers and macros, etc,
|
17
|
+
# in ./support/ and its subdirectories.
|
18
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
19
|
+
|
20
|
+
RSpec.configure do |config|
|
21
|
+
require 'rspec/expectations'
|
22
|
+
config.include Rspec::Matchers
|
23
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{unit_validator}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["millisami", "zoras"]
|
12
|
+
s.date = %q{2010-10-22}
|
13
|
+
s.description = %q{Takes the Instruction Input as Rule, parse the CSV files and applies the validation and returns valid and invalid units}
|
14
|
+
s.email = %q{saroj@sprout-technology.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".autotest",
|
21
|
+
".gitignore",
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE",
|
25
|
+
"README.md",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"autotest/discover.rb",
|
29
|
+
"fixtures/gdoc.csv",
|
30
|
+
"fixtures/gdoc.ods",
|
31
|
+
"fixtures/gdoc.xls",
|
32
|
+
"fixtures/gdoc.xlsx",
|
33
|
+
"lib/cf/input_validator.rb",
|
34
|
+
"lib/cf/result_validator.rb",
|
35
|
+
"lib/generic_spreadsheet.rb",
|
36
|
+
"lib/tasks/rcov_custom.rb",
|
37
|
+
"lib/validator_helpers.rb",
|
38
|
+
"spec/.rspec",
|
39
|
+
"spec/cf_input_validator_spec.rb",
|
40
|
+
"spec/cf_result_validator_spec.rb",
|
41
|
+
"spec/spec_helper.rb",
|
42
|
+
"unit_validator.gemspec"
|
43
|
+
]
|
44
|
+
s.homepage = %q{http://github.com/sprout/unit_validator}
|
45
|
+
s.require_paths = ["lib"]
|
46
|
+
s.rubygems_version = %q{1.3.7}
|
47
|
+
s.summary = %q{Takes the Instruction Input as Rule, parse the CSV files and does the validation}
|
48
|
+
s.test_files = [
|
49
|
+
"spec/cf_input_validator_spec.rb",
|
50
|
+
"spec/cf_result_validator_spec.rb",
|
51
|
+
"spec/spec_helper.rb"
|
52
|
+
]
|
53
|
+
|
54
|
+
if s.respond_to? :specification_version then
|
55
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
56
|
+
s.specification_version = 3
|
57
|
+
|
58
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
59
|
+
s.add_development_dependency(%q<roo>, [">= 0"])
|
60
|
+
s.add_development_dependency(%q<zip>, [">= 0"])
|
61
|
+
s.add_development_dependency(%q<spreadsheet>, [">= 0"])
|
62
|
+
s.add_development_dependency(%q<nokogiri>, [">= 0"])
|
63
|
+
s.add_development_dependency(%q<google-spreadsheet-ruby>, [">= 0"])
|
64
|
+
s.add_development_dependency(%q<activesupport>, [">= 0"])
|
65
|
+
s.add_development_dependency(%q<fastercsv>, [">= 0"])
|
66
|
+
s.add_development_dependency(%q<autotest-fsevent>, [">= 0.2.2"])
|
67
|
+
s.add_development_dependency(%q<autotest-growl>, [">= 0.2.4"])
|
68
|
+
s.add_development_dependency(%q<builder>, [">= 0"])
|
69
|
+
s.add_development_dependency(%q<rspec>, [">= 2.0.0.rc"])
|
70
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
71
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
|
72
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
73
|
+
s.add_runtime_dependency(%q<roo>, [">= 0"])
|
74
|
+
s.add_runtime_dependency(%q<zip>, [">= 0"])
|
75
|
+
s.add_runtime_dependency(%q<spreadsheet>, [">= 0"])
|
76
|
+
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
77
|
+
s.add_runtime_dependency(%q<google-spreadsheet-ruby>, [">= 0"])
|
78
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
79
|
+
s.add_runtime_dependency(%q<builder>, [">= 0"])
|
80
|
+
s.add_development_dependency(%q<rspec>, [">= 2.0.0.rc"])
|
81
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
82
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
|
83
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
84
|
+
else
|
85
|
+
s.add_dependency(%q<roo>, [">= 0"])
|
86
|
+
s.add_dependency(%q<zip>, [">= 0"])
|
87
|
+
s.add_dependency(%q<spreadsheet>, [">= 0"])
|
88
|
+
s.add_dependency(%q<nokogiri>, [">= 0"])
|
89
|
+
s.add_dependency(%q<google-spreadsheet-ruby>, [">= 0"])
|
90
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
91
|
+
s.add_dependency(%q<fastercsv>, [">= 0"])
|
92
|
+
s.add_dependency(%q<autotest-fsevent>, [">= 0.2.2"])
|
93
|
+
s.add_dependency(%q<autotest-growl>, [">= 0.2.4"])
|
94
|
+
s.add_dependency(%q<builder>, [">= 0"])
|
95
|
+
s.add_dependency(%q<rspec>, [">= 2.0.0.rc"])
|
96
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
97
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
|
98
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
99
|
+
s.add_dependency(%q<roo>, [">= 0"])
|
100
|
+
s.add_dependency(%q<zip>, [">= 0"])
|
101
|
+
s.add_dependency(%q<spreadsheet>, [">= 0"])
|
102
|
+
s.add_dependency(%q<nokogiri>, [">= 0"])
|
103
|
+
s.add_dependency(%q<google-spreadsheet-ruby>, [">= 0"])
|
104
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
105
|
+
s.add_dependency(%q<builder>, [">= 0"])
|
106
|
+
s.add_dependency(%q<rspec>, [">= 2.0.0.rc"])
|
107
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
108
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
|
109
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
110
|
+
end
|
111
|
+
else
|
112
|
+
s.add_dependency(%q<roo>, [">= 0"])
|
113
|
+
s.add_dependency(%q<zip>, [">= 0"])
|
114
|
+
s.add_dependency(%q<spreadsheet>, [">= 0"])
|
115
|
+
s.add_dependency(%q<nokogiri>, [">= 0"])
|
116
|
+
s.add_dependency(%q<google-spreadsheet-ruby>, [">= 0"])
|
117
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
118
|
+
s.add_dependency(%q<fastercsv>, [">= 0"])
|
119
|
+
s.add_dependency(%q<autotest-fsevent>, [">= 0.2.2"])
|
120
|
+
s.add_dependency(%q<autotest-growl>, [">= 0.2.4"])
|
121
|
+
s.add_dependency(%q<builder>, [">= 0"])
|
122
|
+
s.add_dependency(%q<rspec>, [">= 2.0.0.rc"])
|
123
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
124
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
|
125
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
126
|
+
s.add_dependency(%q<roo>, [">= 0"])
|
127
|
+
s.add_dependency(%q<zip>, [">= 0"])
|
128
|
+
s.add_dependency(%q<spreadsheet>, [">= 0"])
|
129
|
+
s.add_dependency(%q<nokogiri>, [">= 0"])
|
130
|
+
s.add_dependency(%q<google-spreadsheet-ruby>, [">= 0"])
|
131
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
132
|
+
s.add_dependency(%q<builder>, [">= 0"])
|
133
|
+
s.add_dependency(%q<rspec>, [">= 2.0.0.rc"])
|
134
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
135
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
|
136
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|