quby-compiler 0.4.12 → 0.4.14
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 +11 -0
- data/exe/quby-compile +1 -1
- data/lib/quby/compiler/dsl/questionnaire_builder.rb +8 -0
- data/lib/quby/compiler/entities/anonymous_conditions.rb +23 -0
- data/lib/quby/compiler/entities/questionnaire.rb +2 -0
- data/lib/quby/compiler/entities/questions/date_question.rb +14 -6
- data/lib/quby/compiler/entities/questions/string_question.rb +1 -1
- data/lib/quby/compiler/entities/questions/text_question.rb +1 -1
- data/lib/quby/compiler/entities.rb +1 -0
- data/lib/quby/compiler/outputs/roqua_serializer.rb +2 -0
- data/lib/quby/compiler/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 864809e71abc58743617937e4cd9967afa23b80958a5c7fef3c7265d77404d08
|
4
|
+
data.tar.gz: b3abb8c5572b12ac98b0f8fb81258cbf621adc20c00f978d24f8251533c8279d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd7c67aa581503fcc3451d2a62e182e22c3bbb38f27f61c7347dd4a2a743e47b524c5b667acdf36293225da1807ad439a10ef172eede13da526de71c6dc319cb
|
7
|
+
data.tar.gz: eedc2ae95790da8039f2f1b56c2526b710db523fe4eff4d47345a405c907331146852e5c8d526a9343577d4aaf261fd8d0f3843afffa89b20208f51897e6287c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
# 0.4.14
|
2
|
+
|
3
|
+
* DSL: Add `hide_pii_from_researchers` and `hide_values_from_professionals`
|
4
|
+
* roqua.json: Add anonymous_conditions
|
5
|
+
|
6
|
+
# 0.4.13
|
7
|
+
|
8
|
+
* quby2.json:
|
9
|
+
* string-questions: Don't pass a size of 30, when no size had been specified
|
10
|
+
* rename date type to date_parts, switch to use `date_parts: [{part: year, key: 'yyyy'}, ..]`
|
11
|
+
|
1
12
|
# 0.4.12
|
2
13
|
|
3
14
|
* roqua.json: Add questionnaire license
|
data/exe/quby-compile
CHANGED
@@ -40,7 +40,7 @@ paths.each do |path|
|
|
40
40
|
definition = Quby::Compiler.validate(key, sourcecode, lookup_tables: lookup_tables)
|
41
41
|
if definition.errors.any?
|
42
42
|
error = definition.errors[:sourcecode].first
|
43
|
-
STDERR.puts
|
43
|
+
STDERR.puts(error)
|
44
44
|
validation_errors_found = true
|
45
45
|
next # let's not create new output files for questionnaires with errors
|
46
46
|
end
|
@@ -147,6 +147,14 @@ module Quby
|
|
147
147
|
@questionnaire.default_answer_value = value
|
148
148
|
end
|
149
149
|
|
150
|
+
def hide_pii_from_researchers(value)
|
151
|
+
@questionnaire.anonymous_conditions = @questionnaire.anonymous_conditions.new(hide_pii_from_researchers: value)
|
152
|
+
end
|
153
|
+
|
154
|
+
def hide_values_from_professionals(value)
|
155
|
+
@questionnaire.anonymous_conditions = @questionnaire.anonymous_conditions.new(hide_values_from_professionals: value)
|
156
|
+
end
|
157
|
+
|
150
158
|
def panel(title = nil, options = {}, &block)
|
151
159
|
panel = PanelBuilder.build(title, **options, **default_panel_options, &block)
|
152
160
|
@questionnaire.add_panel(panel)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Quby
|
2
|
+
module Compiler
|
3
|
+
module Entities
|
4
|
+
class AnonymousConditions < Dry::Struct
|
5
|
+
class ConstantRule < Dry::Struct
|
6
|
+
attribute :type, Types::String.constrained(eql: "constant")
|
7
|
+
attribute :value, Types::Bool
|
8
|
+
end
|
9
|
+
|
10
|
+
class BasedOnValueRule < Dry::Struct
|
11
|
+
attribute :type, Types::String.constrained(eql: "based_on_value")
|
12
|
+
attribute :question_key, Types::String
|
13
|
+
attribute :question_value, Types::String
|
14
|
+
end
|
15
|
+
|
16
|
+
Rule = ConstantRule | BasedOnValueRule
|
17
|
+
|
18
|
+
attribute? :hide_pii_from_researchers, Rule.optional
|
19
|
+
attribute? :hide_values_from_professionals, Rule.optional
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -53,6 +53,7 @@ module Quby
|
|
53
53
|
@lookup_tables = {}
|
54
54
|
@versions = []
|
55
55
|
@seeds_patch = {}
|
56
|
+
@anonymous_conditions = Entities::AnonymousConditions.new
|
56
57
|
end
|
57
58
|
|
58
59
|
attr_accessor :key
|
@@ -100,6 +101,7 @@ module Quby
|
|
100
101
|
attr_accessor :outcome_tables
|
101
102
|
attr_accessor :score_schemas
|
102
103
|
attr_accessor :lookup_tables
|
104
|
+
attr_accessor :anonymous_conditions
|
103
105
|
|
104
106
|
delegate :question_hash, :input_keys, :answer_keys, :expand_input_keys, to: :fields
|
105
107
|
|
@@ -24,7 +24,8 @@ module Quby
|
|
24
24
|
def initialize(key, options = {})
|
25
25
|
super
|
26
26
|
|
27
|
-
|
27
|
+
# only possible order we support.
|
28
|
+
@components = options[:components] ? POSSIBLE_COMPONENTS & options[:components] : DEFAULT_COMPONENTS
|
28
29
|
@required_components = options[:required_components] || @components
|
29
30
|
@optional_components = @components - @required_components
|
30
31
|
|
@@ -39,7 +40,8 @@ module Quby
|
|
39
40
|
def add_date_validation(explanation)
|
40
41
|
@validations << {type: :valid_date,
|
41
42
|
subtype: :"valid_date_#{components.sort.join('_')}",
|
42
|
-
explanation: explanation
|
43
|
+
explanation: explanation,
|
44
|
+
requiredParts: required_components}
|
43
45
|
end
|
44
46
|
|
45
47
|
def claimed_keys
|
@@ -60,10 +62,16 @@ module Quby
|
|
60
62
|
end
|
61
63
|
|
62
64
|
def as_json(options = {})
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
super.merge(
|
66
|
+
type: 'date_parts',
|
67
|
+
as: 'date_parts',
|
68
|
+
dateParts: components.map { |component|
|
69
|
+
{
|
70
|
+
part: component,
|
71
|
+
key: send("#{component}_key")
|
72
|
+
}
|
73
|
+
}
|
74
|
+
)
|
67
75
|
end
|
68
76
|
end
|
69
77
|
end
|
@@ -7,6 +7,7 @@ require 'quby/compiler/entities/version'
|
|
7
7
|
require 'quby/compiler/entities/question_option'
|
8
8
|
require 'quby/compiler/entities/item'
|
9
9
|
require 'quby/compiler/entities/score_calculation'
|
10
|
+
require 'quby/compiler/entities/anonymous_conditions'
|
10
11
|
|
11
12
|
require 'quby/compiler/entities/subscore_schema'
|
12
13
|
require 'quby/compiler/entities/score_schema'
|
@@ -36,6 +36,7 @@ module Quby
|
|
36
36
|
outcome_tables_schema: outcome_tables_schema,
|
37
37
|
questions: questions,
|
38
38
|
scores: scores,
|
39
|
+
anonymous_conditions: questionnaire.anonymous_conditions,
|
39
40
|
license: questionnaire.license,
|
40
41
|
licensor: questionnaire.licensor,
|
41
42
|
}
|
@@ -271,6 +272,7 @@ module Quby
|
|
271
272
|
end \
|
272
273
|
.text
|
273
274
|
.gsub(/\s+/, ' ')
|
275
|
+
.strip
|
274
276
|
.presence
|
275
277
|
end
|
276
278
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quby-compiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marten Veldthuis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- lib/quby/compiler/dsl/standardized_panel_generators.rb
|
187
187
|
- lib/quby/compiler/dsl/table_builder.rb
|
188
188
|
- lib/quby/compiler/entities.rb
|
189
|
+
- lib/quby/compiler/entities/anonymous_conditions.rb
|
189
190
|
- lib/quby/compiler/entities/charting/bar_chart.rb
|
190
191
|
- lib/quby/compiler/entities/charting/chart.rb
|
191
192
|
- lib/quby/compiler/entities/charting/charts.rb
|