surveyor 1.1.0 → 1.2.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/CHANGELOG.md +19 -1
- data/Gemfile.rails_version +2 -2
- data/app/views/partials/_answer.html.haml +1 -0
- data/app/views/partials/_question_group.html.haml +3 -1
- data/app/views/surveyor/export.json.rabl +4 -1
- data/features/export_to_json.feature +5 -1
- data/features/step_definitions/parser_steps.rb +4 -1
- data/features/step_definitions/surveyor_steps.rb +20 -0
- data/features/step_definitions/web_steps.rb +4 -0
- data/features/surveyor.feature +87 -1
- data/features/surveyor_dependencies.feature +59 -0
- data/features/surveyor_parser.feature +29 -0
- data/lib/surveyor/common.rb +17 -0
- data/lib/surveyor/helpers/surveyor_helper_methods.rb +8 -2
- data/lib/surveyor/models/response_set_methods.rb +2 -4
- data/lib/surveyor/models/survey_methods.rb +20 -11
- data/lib/surveyor/parser.rb +2 -2
- data/lib/surveyor/redcap_parser.rb +1 -3
- data/lib/surveyor/render_text.rb +8 -4
- data/lib/surveyor/surveyor_controller_methods.rb +6 -0
- data/lib/surveyor/version.rb +1 -1
- data/spec/controllers/surveyor_controller_spec.rb +80 -0
- data/spec/helpers/surveyor_helper_spec.rb +4 -4
- metadata +275 -265
data/lib/surveyor/parser.rb
CHANGED
@@ -299,9 +299,9 @@ module SurveyorParserDependencyConditionMethods
|
|
299
299
|
a0, a1, a2 = args
|
300
300
|
self.attributes = ({
|
301
301
|
:operator => a1 || "==",
|
302
|
-
:question_reference => a0.to_s.gsub(/^q_/, ""),
|
302
|
+
:question_reference => a0.to_s.gsub(/^q_|^question_/, ""),
|
303
303
|
:rule_key => reference_identifier
|
304
|
-
}.merge( a2.is_a?(Hash) ? a2 : { :answer_reference => a2.to_s.gsub(/^a_/, "") }))
|
304
|
+
}.merge( a2.is_a?(Hash) ? a2 : { :answer_reference => a2.to_s.gsub(/^a_|^answer_/, "") }))
|
305
305
|
context[:dependency].dependency_conditions << context[:dependency_condition] = self
|
306
306
|
context[:dependency_conditions] << self
|
307
307
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
%w(survey survey_section question_group question dependency dependency_condition answer validation validation_condition).each {|model| require model }
|
2
2
|
require 'active_support' # for humanize
|
3
|
-
require 'fastercsv'
|
4
|
-
require 'csv'
|
5
3
|
module Surveyor
|
6
4
|
class RedcapParserError < StandardError; end
|
7
5
|
class RedcapParser
|
@@ -28,7 +26,7 @@ module Surveyor
|
|
28
26
|
self.context[:dependency_conditions] = []
|
29
27
|
end
|
30
28
|
def parse(str, filename)
|
31
|
-
csvlib =
|
29
|
+
csvlib = Surveyor::Common.csv_impl
|
32
30
|
begin
|
33
31
|
csvlib.parse(str, :headers => :first_row, :return_headers => true, :header_converters => :symbol) do |r|
|
34
32
|
if r.header_row? # header row
|
data/lib/surveyor/render_text.rb
CHANGED
@@ -3,17 +3,21 @@ module Surveyor
|
|
3
3
|
def render_question_text(context = nil)
|
4
4
|
render_text(text, context)
|
5
5
|
end
|
6
|
-
|
6
|
+
|
7
7
|
def render_help_text(context = nil)
|
8
8
|
render_text(help_text, context)
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def render_answer_text(text, context = nil)
|
12
12
|
render_text(text, context)
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def render_text(text, context = nil)
|
16
|
-
|
16
|
+
if context.is_a?(Hash)
|
17
|
+
Mustache.render(text, context)
|
18
|
+
else
|
19
|
+
context ? context.render(text) : text
|
20
|
+
end
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
data/lib/surveyor/version.rb
CHANGED
@@ -338,4 +338,84 @@ describe SurveyorController do
|
|
338
338
|
end
|
339
339
|
end
|
340
340
|
end
|
341
|
+
|
342
|
+
describe "serialize a survey: GET /surveys/XYZ.json" do
|
343
|
+
render_views
|
344
|
+
|
345
|
+
let(:json) {
|
346
|
+
get :export, :survey_code => survey.access_code, :format => 'json'
|
347
|
+
JSON.parse(response.body)
|
348
|
+
}
|
349
|
+
|
350
|
+
describe 'for the same question inside and outside a question group' do
|
351
|
+
def question_text(refid)
|
352
|
+
<<-SURVEY
|
353
|
+
q "Where is a foo?", :pick => :one, :help_text => 'Look around.', :reference_identifier => #{refid.inspect},
|
354
|
+
:data_export_identifier => 'X.FOO', :common_namespace => 'F', :common_identifier => 'f'
|
355
|
+
a_L 'To the left', :data_export_identifier => 'X.L', :common_namespace => 'F', :common_identifier => 'l'
|
356
|
+
a_R 'To the right', :data_export_identifier => 'X.R', :common_namespace => 'F', :common_identifier => 'r'
|
357
|
+
a_O 'Elsewhere', :string
|
358
|
+
|
359
|
+
dependency :rule => 'R'
|
360
|
+
condition_R :q_bar, "==", :a_1
|
361
|
+
SURVEY
|
362
|
+
end
|
363
|
+
|
364
|
+
let(:survey_text) {
|
365
|
+
<<-SURVEY
|
366
|
+
survey 'xyz' do
|
367
|
+
section 'Sole' do
|
368
|
+
q_bar "Should that other question show up?", :pick => :one
|
369
|
+
a_1 'Yes'
|
370
|
+
a_2 'No'
|
371
|
+
|
372
|
+
#{question_text('foo_solo')}
|
373
|
+
|
374
|
+
group do
|
375
|
+
#{question_text('foo_grouped')}
|
376
|
+
end
|
377
|
+
end
|
378
|
+
end
|
379
|
+
SURVEY
|
380
|
+
}
|
381
|
+
|
382
|
+
let(:survey) {
|
383
|
+
Surveyor::Parser.new.parse(survey_text)
|
384
|
+
}
|
385
|
+
|
386
|
+
let(:solo_question_json) { json['sections'][0]['questions_and_groups'][1] }
|
387
|
+
let(:grouped_question_json) { json['sections'][0]['questions_and_groups'][2]['questions'][0] }
|
388
|
+
|
389
|
+
def remove_key_recursively(node, key)
|
390
|
+
case node
|
391
|
+
when Hash
|
392
|
+
node.delete(key)
|
393
|
+
node.values.each { |val| remove_key_recursively(val, key) }
|
394
|
+
when Array
|
395
|
+
node.each { |val| remove_key_recursively(val, key) }
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
it 'produces identical JSON except for API IDs and question reference identifers' do
|
400
|
+
[solo_question_json, grouped_question_json].each do |node|
|
401
|
+
node.reject! { |k, v| k == 'reference_identifier' }
|
402
|
+
remove_key_recursively(node, 'uuid')
|
403
|
+
end
|
404
|
+
|
405
|
+
# easier to see differences this way
|
406
|
+
solo_question_json['answers'].should == grouped_question_json['answers']
|
407
|
+
solo_question_json['dependency'].should == grouped_question_json['dependency']
|
408
|
+
|
409
|
+
solo_question_json.should == grouped_question_json
|
410
|
+
end
|
411
|
+
|
412
|
+
it 'produces the expected reference identifier for the solo question' do
|
413
|
+
solo_question_json['reference_identifier'].should == 'foo_solo'
|
414
|
+
end
|
415
|
+
|
416
|
+
it 'produces the expected reference identifer for the question in the group' do
|
417
|
+
grouped_question_json['reference_identifier'].should == 'foo_grouped'
|
418
|
+
end
|
419
|
+
end
|
420
|
+
end
|
341
421
|
end
|
@@ -11,7 +11,7 @@ describe SurveyorHelper do
|
|
11
11
|
q3 = Factory(:question, :dependency => Factory(:dependency))
|
12
12
|
q4 = Factory(:question, :display_type => "image", :text => "something.jpg")
|
13
13
|
q5 = Factory(:question, :question_group => Factory(:question_group))
|
14
|
-
helper.q_text(q1).should == "1)
|
14
|
+
helper.q_text(q1).should == "<span class='qnum'>1) </span>#{q1.text}"
|
15
15
|
helper.q_text(q2).should == q2.text
|
16
16
|
helper.q_text(q3).should == q3.text
|
17
17
|
|
@@ -39,7 +39,7 @@ describe SurveyorHelper do
|
|
39
39
|
it "should return text with with substituted value" do
|
40
40
|
q1 = Factory(:question, :text => "You are in {{site}}")
|
41
41
|
label = Factory(:question, :display_type => "label", :text => "Testing {{somethingElse}}")
|
42
|
-
helper.q_text(q1, FakeMustacheContext).should == "1) You are in Northwestern"
|
42
|
+
helper.q_text(q1, FakeMustacheContext).should == "<span class='qnum'>1) </span>You are in Northwestern"
|
43
43
|
helper.q_text(label, FakeMustacheContext).should == "Testing something new"
|
44
44
|
end
|
45
45
|
it "should return help_text for question with substituted value" do
|
@@ -48,7 +48,7 @@ describe SurveyorHelper do
|
|
48
48
|
end
|
49
49
|
it "should return help_text for group text with number" do
|
50
50
|
g1 = Factory(:question_group, :text => "You are part of the {{group}}")
|
51
|
-
helper.q_text(g1, FakeMustacheContext).should == "1) You are part of the NUBIC"
|
51
|
+
helper.q_text(g1, FakeMustacheContext).should == "<span class='qnum'>1) </span>You are part of the NUBIC"
|
52
52
|
end
|
53
53
|
it "should return help_text for group text" do
|
54
54
|
g1 = Factory(:question_group, :text => "You are part of the {{group}}", :help_text => "Make sure you know what the {{group}} stands for")
|
@@ -63,7 +63,7 @@ describe SurveyorHelper do
|
|
63
63
|
|
64
64
|
it "should return the group text with number" do
|
65
65
|
g1 = Factory(:question_group)
|
66
|
-
helper.q_text(g1, FakeMustacheContext).should == "1)
|
66
|
+
helper.q_text(g1, FakeMustacheContext).should == "<span class='qnum'>1) </span>#{g1.text}"
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should find or create responses, with index" do
|
metadata
CHANGED
@@ -1,349 +1,351 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: surveyor
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Brian Chamberlain
|
9
14
|
- Mark Yoon
|
10
15
|
autorequire:
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
18
|
+
|
19
|
+
date: 2013-01-09 00:00:00 Z
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
16
22
|
name: rails
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ~>
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '3.0'
|
23
|
-
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ~>
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '3.0'
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: haml
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
34
25
|
none: false
|
35
|
-
requirements:
|
26
|
+
requirements:
|
36
27
|
- - ~>
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 7
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 0
|
33
|
+
version: "3.0"
|
39
34
|
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: haml
|
40
38
|
prerelease: false
|
41
|
-
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
|
-
requirements:
|
41
|
+
requirements:
|
44
42
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 5
|
45
|
+
segments:
|
46
|
+
- 3
|
47
|
+
- 1
|
48
|
+
- 3
|
46
49
|
version: 3.1.3
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: sass
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
50
|
type: :runtime
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: sass
|
56
54
|
prerelease: false
|
57
|
-
|
58
|
-
none: false
|
59
|
-
requirements:
|
60
|
-
- -
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
none: false
|
67
|
-
requirements:
|
68
|
-
- - ~>
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 1.5.4
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
71
64
|
type: :runtime
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: fastercsv
|
72
68
|
prerelease: false
|
73
|
-
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
74
70
|
none: false
|
75
|
-
requirements:
|
71
|
+
requirements:
|
76
72
|
- - ~>
|
77
|
-
- !ruby/object:Gem::Version
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 11
|
75
|
+
segments:
|
76
|
+
- 1
|
77
|
+
- 5
|
78
|
+
- 4
|
78
79
|
version: 1.5.4
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: formtastic
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ~>
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 2.1.0
|
87
80
|
type: :runtime
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: formtastic
|
88
84
|
prerelease: false
|
89
|
-
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
90
86
|
none: false
|
91
|
-
requirements:
|
87
|
+
requirements:
|
92
88
|
- - ~>
|
93
|
-
- !ruby/object:Gem::Version
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 11
|
91
|
+
segments:
|
92
|
+
- 2
|
93
|
+
- 1
|
94
|
+
- 0
|
94
95
|
version: 2.1.0
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: uuidtools
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
|
-
requirements:
|
100
|
-
- - ~>
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '2.1'
|
103
96
|
type: :runtime
|
97
|
+
version_requirements: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: uuidtools
|
104
100
|
prerelease: false
|
105
|
-
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
106
102
|
none: false
|
107
|
-
requirements:
|
103
|
+
requirements:
|
108
104
|
- - ~>
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
requirements:
|
116
|
-
- - '='
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: 0.99.4
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
hash: 1
|
107
|
+
segments:
|
108
|
+
- 2
|
109
|
+
- 1
|
110
|
+
version: "2.1"
|
119
111
|
type: :runtime
|
112
|
+
version_requirements: *id006
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: mustache
|
120
115
|
prerelease: false
|
121
|
-
|
122
|
-
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
116
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - "="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
hash: 411
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
- 99
|
125
|
+
- 4
|
126
126
|
version: 0.99.4
|
127
|
-
- !ruby/object:Gem::Dependency
|
128
|
-
name: rabl
|
129
|
-
requirement: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
|
-
requirements:
|
132
|
-
- - ~>
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: 0.6.13
|
135
127
|
type: :runtime
|
128
|
+
version_requirements: *id007
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: rabl
|
136
131
|
prerelease: false
|
137
|
-
|
132
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
138
133
|
none: false
|
139
|
-
requirements:
|
134
|
+
requirements:
|
140
135
|
- - ~>
|
141
|
-
- !ruby/object:Gem::Version
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
hash: 29
|
138
|
+
segments:
|
139
|
+
- 0
|
140
|
+
- 6
|
141
|
+
- 13
|
142
142
|
version: 0.6.13
|
143
|
-
|
143
|
+
type: :runtime
|
144
|
+
version_requirements: *id008
|
145
|
+
- !ruby/object:Gem::Dependency
|
144
146
|
name: yard
|
145
|
-
requirement: !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
|
-
requirements:
|
148
|
-
- - ! '>='
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: '0'
|
151
|
-
type: :development
|
152
147
|
prerelease: false
|
153
|
-
|
154
|
-
none: false
|
155
|
-
requirements:
|
156
|
-
- -
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
none: false
|
163
|
-
requirements:
|
164
|
-
- - ! '>='
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 0.9.2
|
148
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
hash: 3
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
version: "0"
|
167
157
|
type: :development
|
158
|
+
version_requirements: *id009
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: rake
|
168
161
|
prerelease: false
|
169
|
-
|
170
|
-
none: false
|
171
|
-
requirements:
|
172
|
-
- -
|
173
|
-
- !ruby/object:Gem::Version
|
162
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
163
|
+
none: false
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
hash: 63
|
168
|
+
segments:
|
169
|
+
- 0
|
170
|
+
- 9
|
171
|
+
- 2
|
174
172
|
version: 0.9.2
|
175
|
-
- !ruby/object:Gem::Dependency
|
176
|
-
name: rspec-rails
|
177
|
-
requirement: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
|
-
requirements:
|
180
|
-
- - ~>
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
version: 2.9.0
|
183
173
|
type: :development
|
174
|
+
version_requirements: *id010
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: rspec-rails
|
184
177
|
prerelease: false
|
185
|
-
|
178
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
186
179
|
none: false
|
187
|
-
requirements:
|
180
|
+
requirements:
|
188
181
|
- - ~>
|
189
|
-
- !ruby/object:Gem::Version
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
hash: 43
|
184
|
+
segments:
|
185
|
+
- 2
|
186
|
+
- 9
|
187
|
+
- 0
|
190
188
|
version: 2.9.0
|
191
|
-
- !ruby/object:Gem::Dependency
|
192
|
-
name: bundler
|
193
|
-
requirement: !ruby/object:Gem::Requirement
|
194
|
-
none: false
|
195
|
-
requirements:
|
196
|
-
- - ~>
|
197
|
-
- !ruby/object:Gem::Version
|
198
|
-
version: '1.0'
|
199
|
-
- - ! '>='
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: 1.0.21
|
202
189
|
type: :development
|
190
|
+
version_requirements: *id011
|
191
|
+
- !ruby/object:Gem::Dependency
|
192
|
+
name: bundler
|
203
193
|
prerelease: false
|
204
|
-
|
194
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
205
195
|
none: false
|
206
|
-
requirements:
|
196
|
+
requirements:
|
207
197
|
- - ~>
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
|
210
|
-
|
211
|
-
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
hash: 15
|
200
|
+
segments:
|
201
|
+
- 1
|
202
|
+
- 0
|
203
|
+
version: "1.0"
|
204
|
+
- - ">="
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
hash: 61
|
207
|
+
segments:
|
208
|
+
- 1
|
209
|
+
- 0
|
210
|
+
- 21
|
212
211
|
version: 1.0.21
|
213
|
-
- !ruby/object:Gem::Dependency
|
214
|
-
name: factory_girl
|
215
|
-
requirement: !ruby/object:Gem::Requirement
|
216
|
-
none: false
|
217
|
-
requirements:
|
218
|
-
- - ~>
|
219
|
-
- !ruby/object:Gem::Version
|
220
|
-
version: 2.1.2
|
221
212
|
type: :development
|
213
|
+
version_requirements: *id012
|
214
|
+
- !ruby/object:Gem::Dependency
|
215
|
+
name: factory_girl
|
222
216
|
prerelease: false
|
223
|
-
|
217
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
224
218
|
none: false
|
225
|
-
requirements:
|
219
|
+
requirements:
|
226
220
|
- - ~>
|
227
|
-
- !ruby/object:Gem::Version
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
hash: 15
|
223
|
+
segments:
|
224
|
+
- 2
|
225
|
+
- 1
|
226
|
+
- 2
|
228
227
|
version: 2.1.2
|
229
|
-
- !ruby/object:Gem::Dependency
|
230
|
-
name: sqlite3
|
231
|
-
requirement: !ruby/object:Gem::Requirement
|
232
|
-
none: false
|
233
|
-
requirements:
|
234
|
-
- - ! '>='
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
version: '0'
|
237
228
|
type: :development
|
229
|
+
version_requirements: *id013
|
230
|
+
- !ruby/object:Gem::Dependency
|
231
|
+
name: sqlite3
|
238
232
|
prerelease: false
|
239
|
-
|
240
|
-
none: false
|
241
|
-
requirements:
|
242
|
-
- -
|
243
|
-
- !ruby/object:Gem::Version
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
none: false
|
249
|
-
requirements:
|
250
|
-
- - ~>
|
251
|
-
- !ruby/object:Gem::Version
|
252
|
-
version: 1.1.1
|
233
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
234
|
+
none: false
|
235
|
+
requirements:
|
236
|
+
- - ">="
|
237
|
+
- !ruby/object:Gem::Version
|
238
|
+
hash: 3
|
239
|
+
segments:
|
240
|
+
- 0
|
241
|
+
version: "0"
|
253
242
|
type: :development
|
243
|
+
version_requirements: *id014
|
244
|
+
- !ruby/object:Gem::Dependency
|
245
|
+
name: cucumber-rails
|
254
246
|
prerelease: false
|
255
|
-
|
247
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
256
248
|
none: false
|
257
|
-
requirements:
|
249
|
+
requirements:
|
258
250
|
- - ~>
|
259
|
-
- !ruby/object:Gem::Version
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
hash: 17
|
253
|
+
segments:
|
254
|
+
- 1
|
255
|
+
- 1
|
256
|
+
- 1
|
260
257
|
version: 1.1.1
|
261
|
-
- !ruby/object:Gem::Dependency
|
262
|
-
name: database_cleaner
|
263
|
-
requirement: !ruby/object:Gem::Requirement
|
264
|
-
none: false
|
265
|
-
requirements:
|
266
|
-
- - ~>
|
267
|
-
- !ruby/object:Gem::Version
|
268
|
-
version: 0.6.7
|
269
258
|
type: :development
|
259
|
+
version_requirements: *id015
|
260
|
+
- !ruby/object:Gem::Dependency
|
261
|
+
name: database_cleaner
|
270
262
|
prerelease: false
|
271
|
-
|
263
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
272
264
|
none: false
|
273
|
-
requirements:
|
265
|
+
requirements:
|
274
266
|
- - ~>
|
275
|
-
- !ruby/object:Gem::Version
|
267
|
+
- !ruby/object:Gem::Version
|
268
|
+
hash: 9
|
269
|
+
segments:
|
270
|
+
- 0
|
271
|
+
- 6
|
272
|
+
- 7
|
276
273
|
version: 0.6.7
|
277
|
-
- !ruby/object:Gem::Dependency
|
278
|
-
name: launchy
|
279
|
-
requirement: !ruby/object:Gem::Requirement
|
280
|
-
none: false
|
281
|
-
requirements:
|
282
|
-
- - ~>
|
283
|
-
- !ruby/object:Gem::Version
|
284
|
-
version: 2.0.5
|
285
274
|
type: :development
|
275
|
+
version_requirements: *id016
|
276
|
+
- !ruby/object:Gem::Dependency
|
277
|
+
name: launchy
|
286
278
|
prerelease: false
|
287
|
-
|
279
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
288
280
|
none: false
|
289
|
-
requirements:
|
281
|
+
requirements:
|
290
282
|
- - ~>
|
291
|
-
- !ruby/object:Gem::Version
|
283
|
+
- !ruby/object:Gem::Version
|
284
|
+
hash: 5
|
285
|
+
segments:
|
286
|
+
- 2
|
287
|
+
- 0
|
288
|
+
- 5
|
292
289
|
version: 2.0.5
|
293
|
-
- !ruby/object:Gem::Dependency
|
294
|
-
name: capybara
|
295
|
-
requirement: !ruby/object:Gem::Requirement
|
296
|
-
none: false
|
297
|
-
requirements:
|
298
|
-
- - ~>
|
299
|
-
- !ruby/object:Gem::Version
|
300
|
-
version: 1.1.1
|
301
290
|
type: :development
|
291
|
+
version_requirements: *id017
|
292
|
+
- !ruby/object:Gem::Dependency
|
293
|
+
name: capybara
|
302
294
|
prerelease: false
|
303
|
-
|
295
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
304
296
|
none: false
|
305
|
-
requirements:
|
297
|
+
requirements:
|
306
298
|
- - ~>
|
307
|
-
- !ruby/object:Gem::Version
|
299
|
+
- !ruby/object:Gem::Version
|
300
|
+
hash: 17
|
301
|
+
segments:
|
302
|
+
- 1
|
303
|
+
- 1
|
304
|
+
- 1
|
308
305
|
version: 1.1.1
|
309
|
-
- !ruby/object:Gem::Dependency
|
310
|
-
name: ci_reporter
|
311
|
-
requirement: !ruby/object:Gem::Requirement
|
312
|
-
none: false
|
313
|
-
requirements:
|
314
|
-
- - '='
|
315
|
-
- !ruby/object:Gem::Version
|
316
|
-
version: 1.6.6
|
317
306
|
type: :development
|
307
|
+
version_requirements: *id018
|
308
|
+
- !ruby/object:Gem::Dependency
|
309
|
+
name: ci_reporter
|
318
310
|
prerelease: false
|
319
|
-
|
320
|
-
none: false
|
321
|
-
requirements:
|
322
|
-
- -
|
323
|
-
- !ruby/object:Gem::Version
|
311
|
+
requirement: &id019 !ruby/object:Gem::Requirement
|
312
|
+
none: false
|
313
|
+
requirements:
|
314
|
+
- - "="
|
315
|
+
- !ruby/object:Gem::Version
|
316
|
+
hash: 3
|
317
|
+
segments:
|
318
|
+
- 1
|
319
|
+
- 6
|
320
|
+
- 6
|
324
321
|
version: 1.6.6
|
325
|
-
- !ruby/object:Gem::Dependency
|
326
|
-
name: json_spec
|
327
|
-
requirement: !ruby/object:Gem::Requirement
|
328
|
-
none: false
|
329
|
-
requirements:
|
330
|
-
- - ~>
|
331
|
-
- !ruby/object:Gem::Version
|
332
|
-
version: 1.0.3
|
333
322
|
type: :development
|
323
|
+
version_requirements: *id019
|
324
|
+
- !ruby/object:Gem::Dependency
|
325
|
+
name: json_spec
|
334
326
|
prerelease: false
|
335
|
-
|
327
|
+
requirement: &id020 !ruby/object:Gem::Requirement
|
336
328
|
none: false
|
337
|
-
requirements:
|
329
|
+
requirements:
|
338
330
|
- - ~>
|
339
|
-
- !ruby/object:Gem::Version
|
331
|
+
- !ruby/object:Gem::Version
|
332
|
+
hash: 17
|
333
|
+
segments:
|
334
|
+
- 1
|
335
|
+
- 0
|
336
|
+
- 3
|
340
337
|
version: 1.0.3
|
338
|
+
type: :development
|
339
|
+
version_requirements: *id020
|
341
340
|
description:
|
342
341
|
email: yoon@northwestern.edu
|
343
342
|
executables: []
|
343
|
+
|
344
344
|
extensions: []
|
345
|
+
|
345
346
|
extra_rdoc_files: []
|
346
|
-
|
347
|
+
|
348
|
+
files:
|
347
349
|
- .gitignore
|
348
350
|
- .rspec
|
349
351
|
- CHANGELOG.md
|
@@ -540,30 +542,38 @@ files:
|
|
540
542
|
- surveyor.gemspec
|
541
543
|
homepage: http://github.com/NUBIC/surveyor
|
542
544
|
licenses: []
|
543
|
-
|
544
|
-
|
545
|
+
|
546
|
+
post_install_message: Thanks for installing surveyor! The time has come to run the surveyor generator and migrate your database, even if you are upgrading.
|
545
547
|
rdoc_options: []
|
546
|
-
|
548
|
+
|
549
|
+
require_paths:
|
547
550
|
- lib
|
548
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
551
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
549
552
|
none: false
|
550
|
-
requirements:
|
551
|
-
- -
|
552
|
-
- !ruby/object:Gem::Version
|
553
|
-
|
554
|
-
|
553
|
+
requirements:
|
554
|
+
- - ">="
|
555
|
+
- !ruby/object:Gem::Version
|
556
|
+
hash: 3
|
557
|
+
segments:
|
558
|
+
- 0
|
559
|
+
version: "0"
|
560
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
555
561
|
none: false
|
556
|
-
requirements:
|
557
|
-
- -
|
558
|
-
- !ruby/object:Gem::Version
|
559
|
-
|
562
|
+
requirements:
|
563
|
+
- - ">="
|
564
|
+
- !ruby/object:Gem::Version
|
565
|
+
hash: 3
|
566
|
+
segments:
|
567
|
+
- 0
|
568
|
+
version: "0"
|
560
569
|
requirements: []
|
570
|
+
|
561
571
|
rubyforge_project:
|
562
|
-
rubygems_version: 1.8.
|
572
|
+
rubygems_version: 1.8.10
|
563
573
|
signing_key:
|
564
574
|
specification_version: 3
|
565
575
|
summary: A rails (gem) plugin to enable surveys in your application
|
566
|
-
test_files:
|
576
|
+
test_files:
|
567
577
|
- features/ajax_submissions.feature
|
568
578
|
- features/export_to_json.feature
|
569
579
|
- features/no_duplicates.feature
|