smartdown 0.1.1 → 0.2.0
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.
- data/bin/smartdown +0 -1
- data/lib/smartdown/api/flow.rb +2 -2
- data/lib/smartdown/api/multiple_choice.rb +2 -7
- data/lib/smartdown/api/node.rb +8 -15
- data/lib/smartdown/api/outcome.rb +0 -4
- data/lib/smartdown/api/previous_question.rb +8 -20
- data/lib/smartdown/api/previous_question_page.rb +38 -0
- data/lib/smartdown/api/question.rb +2 -36
- data/lib/smartdown/api/question_page.rb +4 -2
- data/lib/smartdown/api/state.rb +7 -26
- data/lib/smartdown/engine/transition.rb +1 -1
- data/lib/smartdown/engine.rb +1 -2
- data/lib/smartdown/model/element/question/multiple_choice.rb +9 -0
- data/lib/smartdown/model/node.rb +3 -9
- data/lib/smartdown/parser/node_transform.rb +2 -2
- data/lib/smartdown/version.rb +1 -1
- data/spec/acceptance/parsing_spec.rb +1 -1
- data/spec/engine/transition_spec.rb +1 -1
- data/spec/parser/element/multiple_choice_question_spec.rb +1 -1
- data/spec/parser/node_parser_spec.rb +1 -1
- data/spec/support/model_builder.rb +2 -2
- data/spec/support_specs/model_builder_spec.rb +1 -1
- metadata +13 -12
- data/lib/smartdown/model/element/multiple_choice.rb +0 -7
data/bin/smartdown
CHANGED
@@ -17,7 +17,6 @@ if ARGV.size == 0
|
|
17
17
|
else
|
18
18
|
coversheet_path, *responses = ARGV
|
19
19
|
begin
|
20
|
-
#TODO: use same object as smartdown-frontend will be using here
|
21
20
|
input = Smartdown::Parser::DirectoryInput.new(coversheet_path)
|
22
21
|
flow = Smartdown::Parser::FlowInterpreter.new(input).interpret
|
23
22
|
engine = Smartdown::Engine.new(flow)
|
data/lib/smartdown/api/flow.rb
CHANGED
@@ -75,10 +75,10 @@ module Smartdown
|
|
75
75
|
if node.elements.any?{|element| element.is_a? Smartdown::Model::Element::StartButton}
|
76
76
|
Smartdown::Api::Coversheet.new(node)
|
77
77
|
elsif node.elements.any?{|element| element.is_a? Smartdown::Model::NextNodeRules}
|
78
|
-
if node.elements.any?{|element| element.
|
78
|
+
if node.elements.any?{|element| element.class.to_s.include?("Smartdown::Model::Element::Question")}
|
79
79
|
Smartdown::Api::QuestionPage.new(node)
|
80
80
|
else
|
81
|
-
|
81
|
+
raise("Unknown node type: #{node.elements.map(&:class)}")
|
82
82
|
end
|
83
83
|
else
|
84
84
|
Smartdown::Api::Outcome.new(node)
|
@@ -4,22 +4,17 @@ module Smartdown
|
|
4
4
|
module Api
|
5
5
|
class MultipleChoice < Question
|
6
6
|
def options
|
7
|
-
question = elements.find{|element| element.is_a? Smartdown::Model::Element::MultipleChoice}
|
7
|
+
question = elements.find{|element| element.is_a? Smartdown::Model::Element::Question::MultipleChoice}
|
8
8
|
question.choices.map do |choice|
|
9
9
|
OpenStruct.new(:label => choice[1], :value => choice[0])
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
def name
|
14
|
-
question = elements.find{|element| element.is_a? Smartdown::Model::Element::MultipleChoice}
|
14
|
+
question = elements.find{|element| element.is_a? Smartdown::Model::Element::Question::MultipleChoice}
|
15
15
|
question.name
|
16
16
|
end
|
17
17
|
|
18
|
-
#TODO: move to presenters in smart-answer app
|
19
|
-
def partial_template_name
|
20
|
-
"multiple_choice_question"
|
21
|
-
end
|
22
|
-
|
23
18
|
end
|
24
19
|
end
|
25
20
|
end
|
data/lib/smartdown/api/node.rb
CHANGED
@@ -6,33 +6,26 @@ module Smartdown
|
|
6
6
|
|
7
7
|
def initialize(node)
|
8
8
|
node_elements = node.elements.clone
|
9
|
-
headings = node_elements.select {
|
10
|
-
|
9
|
+
headings = node_elements.select { |element|
|
10
|
+
element.is_a? Smartdown::Model::Element::MarkdownHeading
|
11
11
|
}
|
12
12
|
@title = headings.first.content.to_s if headings.first
|
13
|
-
node_elements.
|
13
|
+
nb_questions = node_elements.select{ |element|
|
14
|
+
element.is_a? Smartdown::Model::Element::Question::MultipleChoice
|
15
|
+
}.count
|
16
|
+
if headings.count > nb_questions
|
17
|
+
node_elements.delete(headings.first) #Remove page title
|
18
|
+
end
|
14
19
|
@elements = node_elements
|
15
20
|
@front_matter = node.front_matter
|
16
21
|
@name = node.name
|
17
22
|
end
|
18
23
|
|
19
|
-
def has_title?
|
20
|
-
!!title
|
21
|
-
end
|
22
|
-
|
23
24
|
def body
|
24
25
|
elements_before_smartdown = elements.take_while{|element| !smartdown_element?(element)}
|
25
26
|
build_govspeak(elements_before_smartdown)
|
26
27
|
end
|
27
28
|
|
28
|
-
def has_body?
|
29
|
-
!!body
|
30
|
-
end
|
31
|
-
|
32
|
-
def has_devolved_body?
|
33
|
-
!!devolved_body
|
34
|
-
end
|
35
|
-
|
36
29
|
def devolved_body
|
37
30
|
elements_after_smartdown = elements.drop_while{|element| !smartdown_element?(element)}
|
38
31
|
build_govspeak(elements_after_smartdown)
|
@@ -2,10 +2,6 @@ module Smartdown
|
|
2
2
|
module Api
|
3
3
|
class Outcome < Node
|
4
4
|
|
5
|
-
def has_next_steps?
|
6
|
-
!!next_steps
|
7
|
-
end
|
8
|
-
|
9
5
|
def next_steps
|
10
6
|
next_step_element = elements.find{|element| element.is_a? Smartdown::Model::Element::NextSteps}
|
11
7
|
GovspeakPresenter.new(next_step_element.content).html if next_step_element
|
@@ -1,29 +1,17 @@
|
|
1
1
|
module Smartdown
|
2
2
|
module Api
|
3
3
|
class PreviousQuestion
|
4
|
+
extend Forwardable
|
4
5
|
|
5
|
-
|
6
|
+
def_delegators :@question, :title, :options
|
6
7
|
|
7
|
-
|
8
|
-
@title = title
|
9
|
-
@question_element = question_element
|
10
|
-
@response = response
|
11
|
-
@modifiable = modifiable
|
12
|
-
end
|
13
|
-
|
14
|
-
#TODO: remove need for this method by impleemnting modification properly
|
15
|
-
def modifiable?
|
16
|
-
@modifiable
|
17
|
-
end
|
8
|
+
attr_reader :response
|
18
9
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
#TODO: move to presenter, this object API should only expose question_element.choices
|
25
|
-
def response_label(value=response)
|
26
|
-
@question_element.choices.fetch(value)
|
10
|
+
def initialize(elements, response)
|
11
|
+
@response = response
|
12
|
+
if elements.find{|element| element.is_a? Smartdown::Model::Element::Question::MultipleChoice}
|
13
|
+
@question = MultipleChoice.new(elements)
|
14
|
+
end
|
27
15
|
end
|
28
16
|
|
29
17
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'smartdown/api/previous_question'
|
2
|
+
|
3
|
+
module Smartdown
|
4
|
+
module Api
|
5
|
+
class PreviousQuestionPage
|
6
|
+
|
7
|
+
attr_reader :title
|
8
|
+
|
9
|
+
def initialize(node, responses)
|
10
|
+
node_elements = node.elements.clone
|
11
|
+
headings = node_elements.select {
|
12
|
+
|element| element.is_a? Smartdown::Model::Element::MarkdownHeading
|
13
|
+
}
|
14
|
+
@title = headings.first.content.to_s if headings.first
|
15
|
+
nb_questions = node_elements.select{ |element|
|
16
|
+
element.is_a? Smartdown::Model::Element::Question::MultipleChoice
|
17
|
+
}.count
|
18
|
+
if headings.count > nb_questions
|
19
|
+
node_elements.delete(headings.first) #Remove page title
|
20
|
+
end
|
21
|
+
@elements = node_elements
|
22
|
+
@responses = responses
|
23
|
+
end
|
24
|
+
|
25
|
+
def questions
|
26
|
+
elements.slice_before do |element|
|
27
|
+
element.is_a? Smartdown::Model::Element::MarkdownHeading
|
28
|
+
end.each_with_index.map do |question_element_group, index|
|
29
|
+
Smartdown::Api::PreviousQuestion.new(question_element_group, responses[index])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
attr_reader :elements, :responses
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -2,57 +2,23 @@ module Smartdown
|
|
2
2
|
module Api
|
3
3
|
class Question
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
def initialize(elements, number=nil)
|
5
|
+
def initialize(elements)
|
8
6
|
@elements = elements
|
9
|
-
@number = number
|
10
7
|
end
|
11
8
|
|
12
|
-
#TODO: this assumes the title is the first element
|
13
9
|
def title
|
14
10
|
elements.first.content
|
15
11
|
end
|
16
12
|
|
17
|
-
def has_body?
|
18
|
-
!!body
|
19
|
-
end
|
20
|
-
|
21
13
|
def body
|
22
14
|
elements_before_smartdown = elements[1..-1].take_while{|element| !smartdown_element?(element)}
|
23
15
|
build_govspeak(elements_before_smartdown)
|
24
16
|
end
|
25
17
|
|
26
|
-
|
27
|
-
!!hint
|
28
|
-
end
|
29
|
-
|
30
|
-
#TODO: confirm we can delete this
|
31
|
-
# Usage TBC, most hints should actually be `body`s, semi-deprecated
|
32
|
-
# As we transition content we should better define it, or remove it
|
18
|
+
#TODO: deprecate
|
33
19
|
def hint
|
34
20
|
end
|
35
21
|
|
36
|
-
def prefix
|
37
|
-
"todo prefix"
|
38
|
-
end
|
39
|
-
|
40
|
-
def suffix
|
41
|
-
"todo suffix"
|
42
|
-
end
|
43
|
-
|
44
|
-
def subtitle
|
45
|
-
"todo subtitle"
|
46
|
-
end
|
47
|
-
|
48
|
-
#TODO
|
49
|
-
def error
|
50
|
-
end
|
51
|
-
|
52
|
-
#TODO: should not be needed
|
53
|
-
def responses
|
54
|
-
end
|
55
|
-
|
56
22
|
private
|
57
23
|
|
58
24
|
attr_reader :elements
|
@@ -6,8 +6,10 @@ module Smartdown
|
|
6
6
|
def questions
|
7
7
|
elements.slice_before do |element|
|
8
8
|
element.is_a? Smartdown::Model::Element::MarkdownHeading
|
9
|
-
end.
|
10
|
-
Smartdown::
|
9
|
+
end.map do |question_element_group|
|
10
|
+
if question_element_group.find{|element| element.is_a? Smartdown::Model::Element::Question::MultipleChoice}
|
11
|
+
Smartdown::Api::MultipleChoice.new(question_element_group)
|
12
|
+
end
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/smartdown/api/state.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'smartdown/api/
|
1
|
+
require 'smartdown/api/previous_question_page'
|
2
2
|
|
3
3
|
module Smartdown
|
4
4
|
module Api
|
@@ -8,7 +8,7 @@ module Smartdown
|
|
8
8
|
|
9
9
|
def initialize(current_node, previous_questionpage_smartdown_nodes, responses)
|
10
10
|
@current_node = current_node
|
11
|
-
@
|
11
|
+
@previous_questionpage_smartdown_nodes = previous_questionpage_smartdown_nodes
|
12
12
|
@responses = responses
|
13
13
|
end
|
14
14
|
|
@@ -20,29 +20,10 @@ module Smartdown
|
|
20
20
|
current_node.is_a? Smartdown::Api::Outcome
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
previous_questions.map.each_with_index do |previous_question, index|
|
28
|
-
previous_question = Smartdown::Api::PreviousQuestion.new(
|
29
|
-
previous_question_title_nodes[node_index][index].content,
|
30
|
-
previous_question,
|
31
|
-
responses[response_index],
|
32
|
-
index == 0
|
33
|
-
)
|
34
|
-
response_index+=1
|
35
|
-
previous_question
|
36
|
-
end
|
37
|
-
end.flatten
|
38
|
-
end
|
39
|
-
|
40
|
-
def previous_question_nodes
|
41
|
-
@previous_question_page_nodes.map(&:questions)
|
42
|
-
end
|
43
|
-
|
44
|
-
def previous_question_title_nodes
|
45
|
-
@previous_question_page_nodes.map(&:question_titles)
|
23
|
+
def previous_question_pages(responses)
|
24
|
+
previous_questionpage_smartdown_nodes.map do |smartdown_questionpage_node|
|
25
|
+
Smartdown::Api::PreviousQuestionPage.new(smartdown_questionpage_node, responses)
|
26
|
+
end
|
46
27
|
end
|
47
28
|
|
48
29
|
def current_question_number
|
@@ -51,7 +32,7 @@ module Smartdown
|
|
51
32
|
|
52
33
|
private
|
53
34
|
|
54
|
-
attr_reader :smartdown_state, :
|
35
|
+
attr_reader :smartdown_state, :previous_questionpage_smartdown_nodes
|
55
36
|
|
56
37
|
end
|
57
38
|
end
|
@@ -38,7 +38,7 @@ module Smartdown
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def input_variable_names_from_question
|
41
|
-
questions = node.elements.select { |e| e.
|
41
|
+
questions = node.elements.select { |e| e.class.to_s.include?("Smartdown::Model::Element::Question") }
|
42
42
|
questions.map(&:name)
|
43
43
|
end
|
44
44
|
|
data/lib/smartdown/engine.rb
CHANGED
@@ -31,9 +31,8 @@ module Smartdown
|
|
31
31
|
nb_questions = 0
|
32
32
|
current_node = flow.node(state.get(:current_node))
|
33
33
|
nb_questions += current_node.elements.select{|element|
|
34
|
-
element.
|
34
|
+
element.class.to_s.include?("Smartdown::Model::Element::Question")
|
35
35
|
}.count
|
36
|
-
|
37
36
|
#There is at least one relevant input per transition for now:
|
38
37
|
#Transition from start to first question relies on an input, regardless of its value
|
39
38
|
nb_relevant_inputs = [nb_questions, 1].max
|
data/lib/smartdown/model/node.rb
CHANGED
@@ -8,15 +8,9 @@ module Smartdown
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def questions
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#Because question titles and page titles use the same markdown,
|
15
|
-
#there are at least as many or more headings than questions on each page
|
16
|
-
#To get only the question titles, we are assuming that all the headings that
|
17
|
-
#are not question headings come first in the markdown, then question headings
|
18
|
-
def question_titles
|
19
|
-
h1s.drop(h1s.count - questions.count)
|
11
|
+
elements.select do |element|
|
12
|
+
element.class.to_s.include?("Smartdown::Model::Element::Question")
|
13
|
+
end
|
20
14
|
end
|
21
15
|
|
22
16
|
def title
|
@@ -4,7 +4,7 @@ require 'smartdown/model/front_matter'
|
|
4
4
|
require 'smartdown/model/rule'
|
5
5
|
require 'smartdown/model/nested_rule'
|
6
6
|
require 'smartdown/model/next_node_rules'
|
7
|
-
require 'smartdown/model/element/multiple_choice'
|
7
|
+
require 'smartdown/model/element/question/multiple_choice'
|
8
8
|
require 'smartdown/model/element/start_button'
|
9
9
|
require 'smartdown/model/element/markdown_heading'
|
10
10
|
require 'smartdown/model/element/markdown_paragraph'
|
@@ -56,7 +56,7 @@ module Smartdown
|
|
56
56
|
}
|
57
57
|
|
58
58
|
rule(:multiple_choice => {identifier: simple(:identifier), options: subtree(:choices)}) {
|
59
|
-
Smartdown::Model::Element::MultipleChoice.new(
|
59
|
+
Smartdown::Model::Element::Question::MultipleChoice.new(
|
60
60
|
identifier, Hash[choices]
|
61
61
|
)
|
62
62
|
}
|
data/lib/smartdown/version.rb
CHANGED
@@ -88,7 +88,7 @@ EXPECTED
|
|
88
88
|
end
|
89
89
|
|
90
90
|
it "has a multiple choice question" do
|
91
|
-
expect(question_node.questions).to match([instance_of(Smartdown::Model::Element::MultipleChoice)])
|
91
|
+
expect(question_node.questions).to match([instance_of(Smartdown::Model::Element::Question::MultipleChoice)])
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
@@ -165,7 +165,7 @@ describe Smartdown::Engine::Transition do
|
|
165
165
|
Smartdown::Model::Node.new(
|
166
166
|
current_node_name,
|
167
167
|
[
|
168
|
-
Smartdown::Model::Element::MultipleChoice.new(question_name, {"a" => "Apple"}),
|
168
|
+
Smartdown::Model::Element::Question::MultipleChoice.new(question_name, {"a" => "Apple"}),
|
169
169
|
Smartdown::Model::NextNodeRules.new(
|
170
170
|
[Smartdown::Model::Rule.new(double("predicate1"), "o1")]
|
171
171
|
)
|
@@ -32,7 +32,7 @@ describe Smartdown::Parser::Element::MultipleChoiceQuestion do
|
|
32
32
|
Smartdown::Parser::NodeInterpreter.new(node_name, source, parser: parser).interpret
|
33
33
|
}
|
34
34
|
|
35
|
-
it { should eq(Smartdown::Model::Element::MultipleChoice.new("yes_or_no", {"yes"=>"Yes", "no"=>"No"})) }
|
35
|
+
it { should eq(Smartdown::Model::Element::Question::MultipleChoice.new("yes_or_no", {"yes"=>"Yes", "no"=>"No"})) }
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -123,7 +123,7 @@ SOURCE
|
|
123
123
|
let(:expected_elements) {
|
124
124
|
[
|
125
125
|
Smartdown::Model::Element::MarkdownHeading.new("This is my title"),
|
126
|
-
Smartdown::Model::Element::MultipleChoice.new("my_question", "yes"=>"Yes", "no"=>"No"),
|
126
|
+
Smartdown::Model::Element::Question::MultipleChoice.new("my_question", "yes"=>"Yes", "no"=>"No"),
|
127
127
|
Smartdown::Model::Element::MarkdownHeading.new("Next node rules"),
|
128
128
|
Smartdown::Model::NextNodeRules.new([
|
129
129
|
Smartdown::Model::Rule.new(Smartdown::Model::Predicate::Named.new("pred1?"), "outcome")
|
@@ -3,7 +3,7 @@ require 'smartdown/model/node'
|
|
3
3
|
require 'smartdown/model/element/markdown_heading'
|
4
4
|
require 'smartdown/model/element/markdown_paragraph'
|
5
5
|
require 'smartdown/model/element/start_button'
|
6
|
-
require 'smartdown/model/element/multiple_choice'
|
6
|
+
require 'smartdown/model/element/question/multiple_choice'
|
7
7
|
require 'smartdown/model/element/conditional'
|
8
8
|
require 'smartdown/model/next_node_rules'
|
9
9
|
require 'smartdown/model/rule'
|
@@ -48,7 +48,7 @@ class ModelBuilder
|
|
48
48
|
def multiple_choice(name, options)
|
49
49
|
@elements ||= []
|
50
50
|
options_with_string_keys = ::Hash[options.map {|k,v| [k.to_s, v]}]
|
51
|
-
@elements << Smartdown::Model::Element::MultipleChoice.new(name, options_with_string_keys)
|
51
|
+
@elements << Smartdown::Model::Element::Question::MultipleChoice.new(name, options_with_string_keys)
|
52
52
|
@elements.last
|
53
53
|
end
|
54
54
|
|
@@ -15,7 +15,7 @@ describe ModelBuilder do
|
|
15
15
|
let(:node2) {
|
16
16
|
Smartdown::Model::Node.new("what_passport_do_you_have?", [
|
17
17
|
Smartdown::Model::Element::MarkdownHeading.new("What passport do you have?"),
|
18
|
-
Smartdown::Model::Element::MultipleChoice.new("what_passport_do_you_have?", {"greek" => "Greek", "british" => "British"}),
|
18
|
+
Smartdown::Model::Element::Question::MultipleChoice.new("what_passport_do_you_have?", {"greek" => "Greek", "british" => "British"}),
|
19
19
|
Smartdown::Model::NextNodeRules.new([
|
20
20
|
Smartdown::Model::Rule.new(
|
21
21
|
Smartdown::Model::Predicate::Named.new("eea_passport?"),
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2014-07-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: parslet
|
16
|
-
requirement: &
|
16
|
+
requirement: &18315460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.6.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *18315460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &18314660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.0.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *18314660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &18314100 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *18314100
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: gem_publisher
|
49
|
-
requirement: &
|
49
|
+
requirement: &18313460 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *18313460
|
58
58
|
description:
|
59
59
|
email: david.heath@digital.cabinet-office.gov.uk
|
60
60
|
executables:
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/smartdown/api/previous_question.rb
|
90
90
|
- lib/smartdown/api/outcome.rb
|
91
91
|
- lib/smartdown/api/multiple_choice.rb
|
92
|
+
- lib/smartdown/api/previous_question_page.rb
|
92
93
|
- lib/smartdown/version.rb
|
93
94
|
- lib/smartdown/engine/node_presenter.rb
|
94
95
|
- lib/smartdown/engine/state.rb
|
@@ -108,7 +109,7 @@ files:
|
|
108
109
|
- lib/smartdown/model/element/start_button.rb
|
109
110
|
- lib/smartdown/model/element/next_steps.rb
|
110
111
|
- lib/smartdown/model/element/markdown_heading.rb
|
111
|
-
- lib/smartdown/model/element/multiple_choice.rb
|
112
|
+
- lib/smartdown/model/element/question/multiple_choice.rb
|
112
113
|
- lib/smartdown/model/next_node_rules.rb
|
113
114
|
- lib/smartdown/model/nested_rule.rb
|
114
115
|
- lib/smartdown/model/rule.rb
|
@@ -167,7 +168,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
167
168
|
version: '0'
|
168
169
|
segments:
|
169
170
|
- 0
|
170
|
-
hash:
|
171
|
+
hash: -3191894024105276380
|
171
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
173
|
none: false
|
173
174
|
requirements:
|
@@ -176,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
177
|
version: '0'
|
177
178
|
segments:
|
178
179
|
- 0
|
179
|
-
hash:
|
180
|
+
hash: -3191894024105276380
|
180
181
|
requirements: []
|
181
182
|
rubyforge_project:
|
182
183
|
rubygems_version: 1.8.11
|