quby-compiler 0.6.6 → 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 +4 -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/sexp_variable.rb +15 -2
- data/lib/quby/compiler/entities/sexp_variables.rb +8 -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
|
@@ -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
|
|
@@ -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
|
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:
|