quby-compiler 0.4.15 → 0.4.16

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: 1b37ba70c10be5b93150a219396c5af20cac6c9b1ec2d18e0afa2acdd8c6f7b4
4
+ data.tar.gz: c0782d3d8cc1fb6dbdcd21e0613811e941254dbd68edfc10bbe71084cf3c872c
5
5
  SHA512:
6
- metadata.gz: c89d1de0be9a9d7959d072f1e473ae597ff3c00b90da846dff1c1c9da03492988f289687d8f800fd40be7895cf720c857d95f50efcaa09f7d3dbb6af5e87ff2e
7
- data.tar.gz: 9d95cd492d5ef6fb4ebaafa242d9855d71fe7fbc9f8c0f89e30a76b341636b8cbcc57f5ffaa8de8a11c10ebcfe6544b2e23b3ffade8179433a3ad95a83624628
6
+ metadata.gz: ed384ce1f96bac8d3159d26111ad7ad96dc17471e849aaf495877482eb5f587d521c7698f053e7f3bcafc320417f6d164e756ac8b0ede495d33072bbf318d17d
7
+ data.tar.gz: cfbc1079c4a8603a16499c2b180ecc1c416d2d2338899aaf5839376cae32dffb42cfa0d2a38cc5e8b4ce570f55dfc38c657a2d8716dd1b4e8e255e9095f3f642
data/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ # 0.5.0
2
+
3
+ * quby2.json BREAKING CHANGES!:
4
+ * Removed: Question#options
5
+ * Removed: Option#innerTitle and Option#placeholder
6
+ * Removed: Option#context_free_title
7
+
8
+ # 0.4.16
9
+
10
+ * quby2:
11
+ * Added children attribute to select questions to replace the options
12
+ * children can be of type option/html/placeholder
13
+ * Deprecate: Question#options
14
+ * Deprecate: Option#innerTitle moved to html type
15
+ * Deprecate: Option#placeholder moved to Question#placeholder attr
16
+ * Deprecate: Option#context_free_title, never needed
17
+
1
18
  # 0.4.15
2
19
 
3
20
  * 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,7 +55,26 @@ 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 \
@@ -63,11 +84,11 @@ module Quby
63
84
  ? context_free_description
64
85
  : Quby::MarkdownParser.new(context_free_description).to_html,
65
86
  questions: questions,
66
- innerTitle: inner_title,
87
+ innerTitle: inner_title, # deprecated, removed in 0.5.0
67
88
  hidesQuestions: hides_questions,
68
89
  showsQuestions: shows_questions,
69
90
  hidden: hidden,
70
- placeholder: placeholder,
91
+ placeholder: placeholder, # deprecated, removed in 0.5.0
71
92
  viewId: view_id
72
93
  }
73
94
  end
@@ -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, options: @options.map(&:option_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, options: @options.map(&:option_as_json))
10
10
  end
11
11
  end
12
12
  end
@@ -6,7 +6,11 @@ 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
+ options: @options.map(&:option_as_json), # deprecated, removed in 0.5
12
+ placeholder: @options.find { _1.placeholder }&.description # nil for no placeholder
13
+ )
10
14
  end
11
15
  end
12
16
  end
@@ -1,5 +1,5 @@
1
1
  module Quby
2
2
  module Compiler
3
- VERSION = "0.4.15"
3
+ VERSION = "0.4.16"
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.4.16
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-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel