quby-compiler 0.6.5 → 0.6.7
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/quby/compiler/dsl/helpers.rb +1 -1
- data/lib/quby/compiler/dsl/sexp_variable_builder.rb +4 -0
- data/lib/quby/compiler/entities/question.rb +4 -0
- data/lib/quby/compiler/entities/sexp_variable.rb +15 -2
- data/lib/quby/compiler/entities/sexp_variables.rb +8 -0
- data/lib/quby/compiler/outputs/roqua_serializer.rb +1 -0
- data/lib/quby/compiler/version.rb +1 -1
- metadata +45 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3b15f3bb6d801cc4285f64d05d715cbf86326ae4a6aae32767b3e1bd720c805f
|
|
4
|
+
data.tar.gz: 6ff6dbd94acf1c14ae61f6bc3eb96f6e462b4728ad2e781752cc8980380377ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6fd74f49d869607c6306a0d6c6fe62088930cbfd7a894be53f04a16efa7f15846fb2876f37171f92df3137e180bec112e76f322d7a78c973474f2c16f7e45f88
|
|
7
|
+
data.tar.gz: 15a0708156bcfb9563bc1c684da99a4a9ad523a3d6ff92571a4a3d1bacd8b1106b05ae629f1b76d60bcf178cee6cd54a1d7ae89f31d950165400cd7814597a7c
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
# 0.6.7
|
|
2
|
+
|
|
3
|
+
* dsl_quby2.json: Add single_select_label to s-expressions.
|
|
4
|
+
|
|
5
|
+
# 0.6.6
|
|
6
|
+
|
|
7
|
+
* dsl: Add Question#subtype (iso_country_number).
|
|
8
|
+
* roqua.json: Add Question#subtype.
|
|
9
|
+
|
|
1
10
|
# 0.6.5
|
|
2
11
|
|
|
3
12
|
* Fix issue with key prefix checking of check_boxes with inner_titles.
|
|
@@ -19,6 +19,10 @@ module Quby::Compiler
|
|
|
19
19
|
Entities::SexpVariables::StringValue.new(op: :string_value, key: key)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
def single_select_label(key)
|
|
23
|
+
Entities::SexpVariables::SingleSelectLabel.new(op: :single_select_label, key: key)
|
|
24
|
+
end
|
|
25
|
+
|
|
22
26
|
def number_value(key)
|
|
23
27
|
Entities::SexpVariables::NumberValue.new(op: :number_value, key: key)
|
|
24
28
|
end
|
|
@@ -24,6 +24,9 @@ module Quby
|
|
|
24
24
|
|
|
25
25
|
# What kind of question is this?
|
|
26
26
|
attr_accessor :type
|
|
27
|
+
# More specific type, useful for outcome pages and api users.
|
|
28
|
+
attr_accessor :subtype
|
|
29
|
+
validates :subtype, inclusion: {in: [nil, :iso_country_number]}
|
|
27
30
|
|
|
28
31
|
# How should we display this question
|
|
29
32
|
attr_accessor :as
|
|
@@ -147,6 +150,7 @@ module Quby
|
|
|
147
150
|
@key = key
|
|
148
151
|
@sbg_key = options[:sbg_key]
|
|
149
152
|
@type = options[:type]
|
|
153
|
+
@subtype = options[:subtype]
|
|
150
154
|
@as = options[:as]
|
|
151
155
|
@title = options[:title]
|
|
152
156
|
@context_free_title = options[:context_free_title]
|
|
@@ -14,7 +14,7 @@ module Quby::Compiler::Entities
|
|
|
14
14
|
def validate(questionnaire, calculation: self.calculation)
|
|
15
15
|
validate_node(calculation, questionnaire:, type:)
|
|
16
16
|
end
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
private
|
|
19
19
|
|
|
20
20
|
def validate_node(node, questionnaire:, type:)
|
|
@@ -27,6 +27,9 @@ module Quby::Compiler::Entities
|
|
|
27
27
|
when SexpVariables::StringValue
|
|
28
28
|
validate_question_exist(questionnaire, node)
|
|
29
29
|
validate_value_is_string(questionnaire, node)
|
|
30
|
+
when SexpVariables::SingleSelectLabel
|
|
31
|
+
validate_question_exist(questionnaire, node)
|
|
32
|
+
validate_value_is_single_select(questionnaire, node)
|
|
30
33
|
when SexpVariables::NumberReducer
|
|
31
34
|
node.values.each do |value|
|
|
32
35
|
validate_node(value, questionnaire:, type: :number)
|
|
@@ -44,7 +47,7 @@ module Quby::Compiler::Entities
|
|
|
44
47
|
def validate_type(node, type:)
|
|
45
48
|
return if type == :number && SexpVariables::NumericType === node
|
|
46
49
|
return if type == :boolean && SexpVariables::BooleanType === node
|
|
47
|
-
return if type == :string && SexpVariables::
|
|
50
|
+
return if type == :string && SexpVariables::StringType === node
|
|
48
51
|
|
|
49
52
|
fail "sexp_variable #{key} has invalid type #{node.class} for expected type #{type}."
|
|
50
53
|
end
|
|
@@ -65,6 +68,16 @@ module Quby::Compiler::Entities
|
|
|
65
68
|
fail "sexp_variable #{key} uses non-numeric question #{sexp.key} for number_value."
|
|
66
69
|
end
|
|
67
70
|
|
|
71
|
+
def validate_value_is_single_select(questionnaire, sexp)
|
|
72
|
+
question = questionnaire.question_hash[sexp.key]
|
|
73
|
+
case question
|
|
74
|
+
when Questions::RadioQuestion, Questions::SelectQuestion
|
|
75
|
+
return
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
fail "sexp_variable #{key} uses non-single-select question #{sexp.key} for single_select_label."
|
|
79
|
+
end
|
|
80
|
+
|
|
68
81
|
def validate_value_is_string(questionnaire, sexp)
|
|
69
82
|
question = questionnaire.question_hash[sexp.key]
|
|
70
83
|
case question
|
|
@@ -24,6 +24,14 @@ module Quby::Compiler::Entities
|
|
|
24
24
|
attribute :key, Quby::Types::Symbol
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
# label of the selected option of a single-select (radio, scale, select) question.
|
|
28
|
+
class SingleSelectLabel < Base
|
|
29
|
+
attribute :op, Quby::Types::Symbol.enum(:single_select_label)
|
|
30
|
+
attribute :key, Quby::Types::Symbol
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
StringType = StringValue | SingleSelectLabel
|
|
34
|
+
|
|
27
35
|
class Number
|
|
28
36
|
attribute :op, Quby::Types::Symbol.enum(:number)
|
|
29
37
|
attribute :value, Quby::Types::Integer | Quby::Types::Float
|
|
@@ -206,6 +206,7 @@ module Quby
|
|
|
206
206
|
key: question.key,
|
|
207
207
|
sbg_key: question.sbg_key,
|
|
208
208
|
type: QUBY_TYPE_TO_ROQUA_TYPE.fetch(question.type),
|
|
209
|
+
subtype: question.subtype,
|
|
209
210
|
title: parse_markdown_and_strip_tags(question.title),
|
|
210
211
|
context_free_title: question.context_free_title,
|
|
211
212
|
unit: question.unit,
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: quby-compiler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Marten Veldthuis
|
|
@@ -13,44 +13,62 @@ dependencies:
|
|
|
13
13
|
name: activemodel
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
|
-
- - "
|
|
16
|
+
- - ">"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '7.1'
|
|
19
|
+
- - "<"
|
|
17
20
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '
|
|
21
|
+
version: '8.2'
|
|
19
22
|
type: :runtime
|
|
20
23
|
prerelease: false
|
|
21
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
25
|
requirements:
|
|
23
|
-
- - "
|
|
26
|
+
- - ">"
|
|
24
27
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '
|
|
28
|
+
version: '7.1'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '8.2'
|
|
26
32
|
- !ruby/object:Gem::Dependency
|
|
27
33
|
name: actionview
|
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
|
29
35
|
requirements:
|
|
30
|
-
- - "
|
|
36
|
+
- - ">"
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '7.1'
|
|
39
|
+
- - "<"
|
|
31
40
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
41
|
+
version: '8.2'
|
|
33
42
|
type: :runtime
|
|
34
43
|
prerelease: false
|
|
35
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
45
|
requirements:
|
|
37
|
-
- - "
|
|
46
|
+
- - ">"
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '7.1'
|
|
49
|
+
- - "<"
|
|
38
50
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
51
|
+
version: '8.2'
|
|
40
52
|
- !ruby/object:Gem::Dependency
|
|
41
53
|
name: activesupport
|
|
42
54
|
requirement: !ruby/object:Gem::Requirement
|
|
43
55
|
requirements:
|
|
44
|
-
- - "
|
|
56
|
+
- - ">"
|
|
45
57
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '
|
|
58
|
+
version: '7.1'
|
|
59
|
+
- - "<"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '8.2'
|
|
47
62
|
type: :runtime
|
|
48
63
|
prerelease: false
|
|
49
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
65
|
requirements:
|
|
51
|
-
- - "
|
|
66
|
+
- - ">"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '7.1'
|
|
69
|
+
- - "<"
|
|
52
70
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
71
|
+
version: '8.2'
|
|
54
72
|
- !ruby/object:Gem::Dependency
|
|
55
73
|
name: csv
|
|
56
74
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -149,6 +167,20 @@ dependencies:
|
|
|
149
167
|
- - ">="
|
|
150
168
|
- !ruby/object:Gem::Version
|
|
151
169
|
version: '0'
|
|
170
|
+
- !ruby/object:Gem::Dependency
|
|
171
|
+
name: appraisal
|
|
172
|
+
requirement: !ruby/object:Gem::Requirement
|
|
173
|
+
requirements:
|
|
174
|
+
- - ">="
|
|
175
|
+
- !ruby/object:Gem::Version
|
|
176
|
+
version: '0'
|
|
177
|
+
type: :development
|
|
178
|
+
prerelease: false
|
|
179
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
180
|
+
requirements:
|
|
181
|
+
- - ">="
|
|
182
|
+
- !ruby/object:Gem::Version
|
|
183
|
+
version: '0'
|
|
152
184
|
email:
|
|
153
185
|
- marten@veldthuis.com
|
|
154
186
|
executables:
|