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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 96a88dc734b7b4dcec4c90b1a296ce1daa1db155b7c07c6e8211f510d6f6d6a8
4
- data.tar.gz: d7f5255fc362997ed992b3a8fa5b3b7419e6944d5ec33275c968e8fa41eed6e8
3
+ metadata.gz: 3b15f3bb6d801cc4285f64d05d715cbf86326ae4a6aae32767b3e1bd720c805f
4
+ data.tar.gz: 6ff6dbd94acf1c14ae61f6bc3eb96f6e462b4728ad2e781752cc8980380377ff
5
5
  SHA512:
6
- metadata.gz: be0139d2d2fb49f4d282fe2ff0bf8eecfcfadf0e54ac5a5f7ed5c05b1797e687690666bba7cc8cd4504bff8860d3c4353b23fa99fc7296e6763758a5d603ee17
7
- data.tar.gz: cc9c0bea2deb15f53da4a299f63117a93cce53326e333cba11e1ce08d5047ad968eb0d91cc1393b4620adfa945affc93f1049cfb2f18a5f9aa9a471260318da3
6
+ metadata.gz: 6fd74f49d869607c6306a0d6c6fe62088930cbfd7a894be53f04a16efa7f15846fb2876f37171f92df3137e180bec112e76f322d7a78c973474f2c16f7e45f88
7
+ data.tar.gz: 15a0708156bcfb9563bc1c684da99a4a9ad523a3d6ff92571a4a3d1bacd8b1106b05ae629f1b76d60bcf178cee6cd54a1d7ae89f31d950165400cd7814597a7c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.6.7
2
+
3
+ * dsl_quby2.json: Add single_select_label to s-expressions.
4
+
1
5
  # 0.6.6
2
6
 
3
7
  * dsl: Add Question#subtype (iso_country_number).
@@ -49,7 +49,7 @@ module Quby
49
49
 
50
50
  content = sources.map { |url, ext| tag.source src: url, type: "video/#{ext}" }
51
51
  .append(I18n.t('video_not_supported'))
52
- .yield_self(&tag.method(:safe_join))
52
+ .then { safe_join(_1) }
53
53
 
54
54
  content_tag(:video, content, options)
55
55
  end
@@ -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::StringValue === node
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
@@ -1,5 +1,5 @@
1
1
  module Quby
2
2
  module Compiler
3
- VERSION = "0.6.6"
3
+ VERSION = "0.6.7"
4
4
  end
5
5
  end
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.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: '5.0'
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: '5.0'
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: '5.0'
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: '5.0'
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: '5.0'
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: '5.0'
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: