quby-compiler 0.4.15 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc2baf7860d3a8c906f3e3cafef35525bdad0e02ed5fc78848061e9ed4ffe7cc
4
- data.tar.gz: 9d53e98b35d034369731244fac42869ab7e90c06e30696e11f673e749ee8195f
3
+ metadata.gz: c114222ce815660bdbff3a284c6893b8dc809760818d1839193fec984a1027e3
4
+ data.tar.gz: 8b7938ae820807e963178a251313a3f6a237a3103e0d9aab92539eb5a534cd51
5
5
  SHA512:
6
- metadata.gz: c89d1de0be9a9d7959d072f1e473ae597ff3c00b90da846dff1c1c9da03492988f289687d8f800fd40be7895cf720c857d95f50efcaa09f7d3dbb6af5e87ff2e
7
- data.tar.gz: 9d95cd492d5ef6fb4ebaafa242d9855d71fe7fbc9f8c0f89e30a76b341636b8cbcc57f5ffaa8de8a11c10ebcfe6544b2e23b3ffade8179433a3ad95a83624628
6
+ metadata.gz: 65bba6e155ee6722e836054f584c8df708c1ef9e8a87d9cb560d8020c8c16b3dadfb17b59da4ec0df128f9236f4ff20a69705af6f456c11204f8195a3cb01c36
7
+ data.tar.gz: b9f974a3ab3e6da317397726cad05b3913cc12f81b912ef928fcec50ed9b994196a7404e99f18754abcf4632fab19aad5656e354021ce3573d6735d1a42b1af5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ # 0.5.0
2
+
3
+ * quby2.json BREAKING CHANGES!:
4
+ * Renamed: Questionnaire#fields to Questionnaire#questions
5
+ * Removed: Question#options
6
+ * Removed: Option#innerTitle and Option#placeholder
7
+ * Removed: Option#context_free_title
8
+
9
+ # 0.4.16
10
+
11
+ * quby2:
12
+ * Added children attribute to select questions to replace the options
13
+ * children can be of type option/html/placeholder
14
+ * Deprecate: Question#options
15
+ * Deprecate: Option#innerTitle moved to html type
16
+ * Deprecate: Option#placeholder moved to Question#placeholder attr
17
+ * Deprecate: Option#context_free_title, never needed
18
+
1
19
  # 0.4.15
2
20
 
3
21
  * quby2.json: Question#size is now always an integer/nil
@@ -12,12 +12,14 @@ module Quby
12
12
  attr_reader :value
13
13
  attr_reader :description, :context_free_description
14
14
  attr_reader :questions
15
+ # for scale/radio/checbox questions, piece of of html that is rendered between the options
15
16
  attr_reader :inner_title
16
17
  validates :inner_title, inclusion: {in: [true, false, nil], message: "must be boolean"}
17
18
  attr_reader :hides_questions
18
19
  attr_reader :shows_questions
19
20
  attr_reader :hidden
20
21
  validates :hidden, inclusion: {in: [true, false], message: "must be boolean"}
22
+ # for select questions, option with no value and key is removed from answers if this one is selected.
21
23
  attr_reader :placeholder
22
24
  validates :placeholder, inclusion: {in: [true, false], message: "must be boolean"}
23
25
  attr_reader :question
@@ -53,21 +55,35 @@ module Quby
53
55
  end
54
56
 
55
57
  def as_json(options = {})
58
+ if inner_title
59
+ inner_title_as_json(options)
60
+ elsif placeholder
61
+ nil # placeholder attr on question.
62
+ else
63
+ option_as_json(options)
64
+ end
65
+ end
66
+
67
+ def inner_title_as_json(options = {})
68
+ {
69
+ type: 'html',
70
+ key: SecureRandom.uuid,
71
+ html: Quby::MarkdownParser.new(description).to_html
72
+ }
73
+ end
74
+
75
+ def option_as_json(options = {})
56
76
  {
77
+ type: 'option',
57
78
  key: key,
58
79
  value: value,
59
80
  description: question.type == :select \
60
81
  ? description
61
82
  : Quby::MarkdownParser.new(description).to_html,
62
- context_free_description: question.type == :select \
63
- ? context_free_description
64
- : Quby::MarkdownParser.new(context_free_description).to_html,
65
83
  questions: questions,
66
- innerTitle: inner_title,
67
84
  hidesQuestions: hides_questions,
68
85
  showsQuestions: shows_questions,
69
86
  hidden: hidden,
70
- placeholder: placeholder,
71
87
  viewId: view_id
72
88
  }
73
89
  end
@@ -208,7 +208,7 @@ module Quby
208
208
  outcomeDescription: outcome_description,
209
209
  shortDescription: short_description,
210
210
  panels: panels,
211
- fields: fields.as_json,
211
+ questions: fields.question_hash.as_json,
212
212
  flags: flags,
213
213
  textvars: textvars,
214
214
  visibilityRules: visibility_rules
@@ -67,7 +67,7 @@ module Quby
67
67
  end
68
68
 
69
69
  def as_json(options = {})
70
- super.merge(options: @options.as_json)
70
+ super.merge(children: @options.as_json)
71
71
  end
72
72
  end
73
73
  end
@@ -6,7 +6,7 @@ module Quby
6
6
  module Questions
7
7
  class RadioQuestion < Question
8
8
  def as_json(options = {})
9
- super.merge(options: @options.as_json)
9
+ super.merge(children: @options.as_json)
10
10
  end
11
11
  end
12
12
  end
@@ -6,7 +6,10 @@ module Quby
6
6
  module Questions
7
7
  class SelectQuestion < Question
8
8
  def as_json(options = {})
9
- super.merge(options: @options.as_json)
9
+ super.merge(
10
+ children: @options.as_json.compact, # for now just options, but we'll add optgroups later.
11
+ placeholder: @options.find { _1.placeholder }&.description # nil for no placeholder
12
+ )
10
13
  end
11
14
  end
12
15
  end
@@ -1,5 +1,5 @@
1
1
  module Quby
2
2
  module Compiler
3
- VERSION = "0.4.15"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  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.15
4
+ version: 0.5.0
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-07 00:00:00.000000000 Z
11
+ date: 2022-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel