smartdown 0.13.1 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (C) 2014 HM Government (Government Digital Service)
3
+ Copyright (C) 2014 Crown Copyright (Government Digital Service)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
@@ -2,13 +2,17 @@ module Smartdown
2
2
  module Api
3
3
  class Node
4
4
 
5
- attr_reader :title ,:elements, :front_matter, :name
5
+ attr_reader :title ,:elements, :front_matter, :name, :markers
6
6
 
7
7
  def initialize(node)
8
8
  node_elements = node.elements.clone
9
9
  headings = node_elements.select { |element|
10
10
  element.is_a? Smartdown::Model::Element::MarkdownHeading
11
11
  }
12
+ markers = node_elements.select { |element|
13
+ element.is_a? Smartdown::Model::Element::Marker
14
+ }
15
+ markers.each { |marker| node_elements.delete(marker) }
12
16
  nb_questions = node_elements.select{ |element|
13
17
  element.class.to_s.include?("Smartdown::Model::Element::Question")
14
18
  }.count
@@ -16,6 +20,7 @@ module Smartdown
16
20
  node_elements.delete(headings.first) #Remove page title
17
21
  @title = headings.first.content.to_s
18
22
  end
23
+ @markers = markers
19
24
  @elements = node_elements
20
25
  @front_matter = node.front_matter
21
26
  @name = node.name
@@ -45,7 +50,7 @@ module Smartdown
45
50
  private
46
51
 
47
52
  def markdown_element?(element)
48
- (element.is_a? Smartdown::Model::Element::MarkdownLine) ||
53
+ (element.is_a? Smartdown::Model::Element::MarkdownLine) ||
49
54
  (element.is_a? Smartdown::Model::Element::MarkdownHeading)
50
55
  end
51
56
 
@@ -0,0 +1,7 @@
1
+ module Smartdown
2
+ module Model
3
+ module Element
4
+ Marker = Struct.new(:marker_name)
5
+ end
6
+ end
7
+ end
@@ -1,7 +1,7 @@
1
1
  module Smartdown
2
2
  module Model
3
3
  module Scenarios
4
- Scenario = Struct.new(:description, :question_groups, :outcome)
4
+ Scenario = Struct.new(:description, :question_groups, :outcome, :markers)
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,18 @@
1
+ require 'smartdown/parser/base'
2
+
3
+ module Smartdown
4
+ module Parser
5
+ module Element
6
+ class Marker < Base
7
+ rule(:marker) {
8
+ str('{{marker: ') >>
9
+ identifier.as(:marker) >>
10
+ str('}}') >>
11
+ line_ending
12
+ }
13
+
14
+ root(:marker)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -2,6 +2,7 @@ require 'smartdown/parser/base'
2
2
  require 'smartdown/parser/rules'
3
3
  require 'smartdown/parser/element/front_matter'
4
4
  require 'smartdown/parser/element/start_button'
5
+ require 'smartdown/parser/element/marker'
5
6
  require 'smartdown/parser/element/multiple_choice_question'
6
7
  require 'smartdown/parser/element/date_question'
7
8
  require 'smartdown/parser/element/money_question'
@@ -30,6 +31,7 @@ module Smartdown
30
31
  Element::MoneyQuestion.new |
31
32
  Rules.new |
32
33
  Element::StartButton.new |
34
+ Element::Marker.new |
33
35
  Element::NextSteps.new |
34
36
  Element::MarkdownLine.new |
35
37
  Element::MarkdownBlankLine.new
@@ -8,6 +8,7 @@ require 'smartdown/model/nested_rule'
8
8
  require 'smartdown/model/next_node_rules'
9
9
  require 'smartdown/model/element/question'
10
10
  require 'smartdown/model/element/start_button'
11
+ require 'smartdown/model/element/marker'
11
12
  require 'smartdown/model/element/markdown_heading'
12
13
  require 'smartdown/model/element/markdown_line'
13
14
  require 'smartdown/model/element/conditional'
@@ -63,6 +64,10 @@ module Smartdown
63
64
  Smartdown::Model::Element::StartButton.new(start_node.to_s)
64
65
  }
65
66
 
67
+ rule(:marker => simple(:marker)) {
68
+ Smartdown::Model::Element::Marker.new(marker.to_s)
69
+ }
70
+
66
71
  rule(:front_matter => subtree(:attrs), body: subtree(:body)) {
67
72
  Smartdown::Model::Node.new(
68
73
  node_name, body, Smartdown::Model::FrontMatter.new(Hash[attrs])
@@ -226,12 +231,15 @@ module Smartdown
226
231
  rule(:rule => {predicate: subtree(:predicate), outcome: simple(:outcome_name) } ) {
227
232
  Smartdown::Model::Rule.new(predicate, outcome_name.to_s)
228
233
  }
234
+
229
235
  rule(:nested_rule => {predicate: subtree(:predicate), child_rules: subtree(:child_rules) } ) {
230
236
  Smartdown::Model::NestedRule.new(predicate, child_rules)
231
237
  }
238
+
232
239
  rule(:next_node_rules => subtree(:rules)) {
233
240
  Smartdown::Model::NextNodeRules.new(rules)
234
241
  }
242
+
235
243
  end
236
244
  end
237
245
  end
@@ -0,0 +1,93 @@
1
+ require "json"
2
+ require "smartdown/model/scenarios/scenario_set"
3
+ require "smartdown/model/scenarios/scenario"
4
+ require "smartdown/model/scenarios/question"
5
+
6
+ module Smartdown
7
+ module Parser
8
+ class ScenarioSetInterpreter
9
+ def initialize(scenario_string)
10
+ @scenario_lines = scenario_string.split("\n")
11
+ end
12
+
13
+ def scenario
14
+ Smartdown::Model::Scenarios::Scenario.new(
15
+ description,
16
+ question_groups,
17
+ outcome,
18
+ markers
19
+ )
20
+ end
21
+
22
+ def description_lines
23
+ @scenario_lines.select{ |line| line.start_with?("#") }
24
+ end
25
+
26
+ def description
27
+ description_lines.map do |description_line|
28
+ description_line[1..-1].strip
29
+ end.join(";")
30
+ end
31
+
32
+ def question_groups
33
+ lines = @scenario_lines - description_lines
34
+ if has_markers?
35
+ question_pages = group_questions_by_page(lines[0..-3])
36
+ else
37
+ question_pages = group_questions_by_page(lines[0..-2])
38
+ end
39
+ question_groups = question_pages.map { |question_page| interpret_question_page(question_page) }
40
+ end
41
+
42
+ def outcome
43
+ if has_markers?
44
+ @scenario_lines[@scenario_lines.size - 2]
45
+ else
46
+ @scenario_lines.last
47
+ end
48
+ end
49
+
50
+ def has_markers?
51
+ @scenario_lines.last.match(/(has markers:|has marker:)/)
52
+ end
53
+
54
+ def markers
55
+ if has_markers?
56
+ last_line = @scenario_lines.last
57
+ comma_sperated_markers = last_line.slice(last_line.index(":") + 1, last_line.size)
58
+ comma_sperated_markers.split(',').map(&:strip)
59
+ else
60
+ []
61
+ end
62
+ end
63
+
64
+ private
65
+
66
+ def group_questions_by_page(lines)
67
+ result = []
68
+ lines.each do |scenario_line|
69
+ if scenario_line.start_with?("-")
70
+ result << [scenario_line[1..-1]]
71
+ else
72
+ result.last << scenario_line
73
+ end
74
+ end
75
+ result
76
+ end
77
+
78
+ def interpret_question_page(question_page)
79
+ question_page.map { |question|
80
+ interpret_question(question)
81
+ }
82
+ end
83
+
84
+ def interpret_question(question_string)
85
+ name, answer = question_string.split(":").map(&:strip)
86
+ Smartdown::Model::Scenarios::Question.new(
87
+ name,
88
+ answer,
89
+ )
90
+ end
91
+ end
92
+ end
93
+ end
@@ -1,6 +1,5 @@
1
1
  require "smartdown/model/scenarios/scenario_set"
2
- require "smartdown/model/scenarios/scenario"
3
- require "smartdown/model/scenarios/question"
2
+ require "smartdown/parser/scenario_set_interpreter"
4
3
 
5
4
  module Smartdown
6
5
  module Parser
@@ -18,50 +17,9 @@ module Smartdown
18
17
  def interpret_scenario_set(scenario_set)
19
18
  Smartdown::Model::Scenarios::ScenarioSet.new(
20
19
  scenario_set.name,
21
- scenario_set.read.split("\n\n").map { |scenario_string| interpret_scenario(scenario_string) }
22
- )
23
- end
24
-
25
- def interpret_scenario(scenario_string)
26
- scenario_lines = scenario_string.split("\n")
27
- description_lines = scenario_lines.select{ |line| line.start_with?("#") }
28
- description = description_lines.map { |description_line|
29
- description_line[1..-1].strip
30
- }.join(";")
31
- scenario_lines = scenario_lines - description_lines
32
- outcome = scenario_lines.last
33
- question_pages = group_questions_by_page(scenario_lines[0..-2])
34
- question_groups = question_pages.map { |question_page| interpret_question_page(question_page) }
35
- Smartdown::Model::Scenarios::Scenario.new(
36
- description,
37
- question_groups,
38
- outcome,
39
- )
40
- end
41
-
42
- def group_questions_by_page(scenario_lines)
43
- result = []
44
- scenario_lines.each do |scenario_line|
45
- if scenario_line.start_with?("-")
46
- result << [scenario_line[1..-1]]
47
- else
48
- result.last << scenario_line
20
+ scenario_set.read.split("\n\n").map do |scenario_string|
21
+ ScenarioSetInterpreter.new(scenario_string).scenario
49
22
  end
50
- end
51
- result
52
- end
53
-
54
- def interpret_question_page(question_page)
55
- question_page.map { |question|
56
- interpret_question(question)
57
- }
58
- end
59
-
60
- def interpret_question(question_string)
61
- name, answer = question_string.split(":").map(&:strip)
62
- Smartdown::Model::Scenarios::Question.new(
63
- name,
64
- answer,
65
23
  )
66
24
  end
67
25
  end
@@ -1,3 +1,3 @@
1
1
  module Smartdown
2
- VERSION = "0.13.1"
2
+ VERSION = "0.14.0"
3
3
  end
@@ -16,15 +16,11 @@ describe Smartdown::Api::Node do
16
16
  let(:front_matter) { Smartdown::Model::FrontMatter.new({}) }
17
17
  let(:node_model) { Smartdown::Model::Node.new(node_name, elements, front_matter) }
18
18
 
19
- let(:next_node_rules_content) {
20
- %{ Rule 1: Do not talk about Fight Club.
21
- Rule 2: Do not talk about Fight Club.
22
- Rule 3: If someone says "stop" or goes limp, taps out the fight is over.
23
- Rule 4: Only two guys to a fight.
24
- Rule 5: One fight at a time.
25
- Rule 6: No shirts, no shoes.
26
- Rule 7: Fights will go on as long as they have to.
27
- Rule 8: If this is your first night at Fight Club, you have to fight.} }
19
+ let(:next_node_rules_content) {
20
+ %{ Rule 1: Is a rule
21
+ Rule 2: Is another rule }
22
+ }
23
+
28
24
  let(:next_node_rules) { Smartdown::Model::NextNodeRules.new(next_node_rules_content) }
29
25
 
30
26
  let(:question_element) {
@@ -39,10 +35,10 @@ describe Smartdown::Api::Node do
39
35
  let(:node_heading_content) { "hehehe" }
40
36
  let(:node_heading) { Smartdown::Model::Element::MarkdownHeading.new(node_heading_content) }
41
37
 
42
- let(:question_heading_content) { "Do you feel lucky?" }
38
+ let(:question_heading_content) { "Is this a question?" }
43
39
  let(:question_heading) { Smartdown::Model::Element::MarkdownHeading.new(question_heading_content) }
44
40
 
45
- let(:body_content) { "I <3 bodyshopping" }
41
+ let(:body_content) { "Body" }
46
42
  let(:body_elements) {
47
43
  Smartdown::Model::Elements.new(
48
44
  [
@@ -52,14 +48,14 @@ describe Smartdown::Api::Node do
52
48
  )
53
49
  }
54
50
 
55
- let(:post_body_content) { "hur hur such content" }
51
+ let(:post_body_content) { "content" }
56
52
  let(:post_body_elements) {
57
53
  Smartdown::Model::Elements.new(
58
54
  [Smartdown::Model::Element::MarkdownLine.new(post_body_content)]
59
55
  )
60
56
  }
61
57
 
62
- let(:other_post_body_content) { "Postman Pat and his black and white cat" }
58
+ let(:other_post_body_content) { "Post Body Content" }
63
59
  let(:other_post_body_elements) {
64
60
  Smartdown::Model::Elements.new(
65
61
  [
@@ -69,6 +65,7 @@ describe Smartdown::Api::Node do
69
65
  )
70
66
  }
71
67
 
68
+ let(:marker) { Smartdown::Model::Element::Marker.new("Content Marker") }
72
69
 
73
70
  context "with a body and post_body (and next node rules)" do
74
71
  let(:elements) { [node_heading, body_elements, question_heading, question_element, post_body_elements, other_post_body_elements, next_node_rules] }
@@ -157,4 +154,14 @@ describe Smartdown::Api::Node do
157
154
  end
158
155
  end
159
156
 
157
+ context "with a marker" do
158
+ let(:elements) { [node_heading, question_heading, question_element, marker] }
159
+
160
+ describe "#markers" do
161
+ it 'returns the markers' do
162
+ expect(node.markers).to eq([Smartdown::Model::Element::Marker.new("Content Marker")])
163
+ end
164
+ end
165
+ end
166
+
160
167
  end
@@ -1,11 +1,19 @@
1
1
  # You picked a safe pet
2
2
 
3
- Good call.
3
+ {{marker: is_a_safe_pet}}
4
4
 
5
5
  # Markdown/Govspeak examples
6
6
 
7
+ $IF question_1 is 'cat'
8
+
9
+ {{marker: safe_pets_are_cool}}
10
+
11
+ $ENDIF
12
+
13
+ Good call.
7
14
  ## H2 example
8
15
 
16
+
9
17
  With answers, that are smart. Down with that?
10
18
 
11
19
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
@@ -2,3 +2,4 @@
2
2
  # And cats are amazing
3
3
  - question_1: cat
4
4
  outcome_safe_pet
5
+ has markers: is_a_safe_pet, safe_pets_are_cool
@@ -0,0 +1,30 @@
1
+ require 'smartdown/parser/element/marker'
2
+ require 'smartdown/parser/node_parser'
3
+ require 'smartdown/parser/node_interpreter'
4
+
5
+ describe Smartdown::Parser::Element::Marker do
6
+ subject(:parser) { described_class.new }
7
+
8
+ it "parses a marker with a marker name" do
9
+ should parse("{{marker: hello_there}}").as({marker: "hello_there"})
10
+ should parse("{{marker: hello_there}}\n").as({marker: "hello_there"})
11
+ end
12
+
13
+ it "requires a name" do
14
+ should_not parse("{{marker:}}")
15
+ end
16
+
17
+ it "does not allow spaces in name" do
18
+ should_not parse("{{marker: hello there}}")
19
+ end
20
+
21
+ describe "transformed" do
22
+ let(:node_name) { "my_node" }
23
+ let(:source) { "{{marker: hello_there}}\n" }
24
+ subject(:transformed) {
25
+ Smartdown::Parser::NodeInterpreter.new(node_name, source, parser: parser).interpret
26
+ }
27
+
28
+ it { should eq(Smartdown::Model::Element::Marker.new("hello_there")) }
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require 'smartdown/parser/scenario_set_interpreter'
2
+
3
+ describe Smartdown::Parser::ScenarioSetInterpreter do
4
+ let(:outcome) { File.open(File.dirname(__FILE__) + "/../fixtures/acceptance/animal-example-simple/scenarios/tigers_and_cats.txt", "rb").read }
5
+ subject { described_class.new(outcome) }
6
+
7
+ describe "#description" do
8
+ it { expect(subject.description).to eq("User has a cat;And cats are amazing") }
9
+ end
10
+
11
+ describe "#question_groups" do
12
+ it { expect(subject.question_groups).to eq([ [ Smartdown::Model::Scenarios::Question.new("question_1", "cat") ] ]) }
13
+ end
14
+
15
+ describe "#outcome" do
16
+ it { expect(subject.outcome).to eq("outcome_safe_pet") }
17
+ end
18
+
19
+ describe "#markers" do
20
+ it { expect(subject.markers).to eq(["is_a_safe_pet", "safe_pets_are_cool"]) }
21
+ end
22
+
23
+
24
+ end
@@ -0,0 +1,38 @@
1
+ require 'smartdown'
2
+ require 'smartdown/parser/scenario_sets_interpreter'
3
+
4
+ describe Smartdown::Parser::ScenarioSetsInterpreter do
5
+ def fixture(name)
6
+ File.dirname(__FILE__) + "/../fixtures/acceptance/#{name}/#{name}.txt"
7
+ end
8
+
9
+ let(:input) { Smartdown::Parser::DirectoryInput.new(fixture("animal-example-simple")) }
10
+ subject(:scenario_sets) { described_class.new(input).interpret }
11
+
12
+
13
+ context "flow with one question per page" do
14
+ it "has two scenario_sets" do
15
+ expect(scenario_sets.size).to eq(2)
16
+ end
17
+
18
+ it "has scenario_set names" do
19
+ expect(scenario_sets.map(&:name)).to match_array(["lions", "tigers_and_cats"])
20
+ end
21
+
22
+ it "has scenarios with description, questions, markers and outcome" do
23
+ tigers_and_cats_scenario_set = scenario_sets.find { |scenario_set| scenario_set.name == "tigers_and_cats" }
24
+ expect(tigers_and_cats_scenario_set.scenarios.size).to eq(1)
25
+ expect(tigers_and_cats_scenario_set.scenarios.first.description).to eq("User has a cat;And cats are amazing")
26
+ expect(tigers_and_cats_scenario_set.scenarios.first.question_groups.size).to eq(1)
27
+ expect(tigers_and_cats_scenario_set.scenarios.first.outcome).to eq("outcome_safe_pet")
28
+ expect(tigers_and_cats_scenario_set.scenarios.first.markers).to eq(['is_a_safe_pet', 'safe_pets_are_cool'])
29
+ end
30
+
31
+ it "has scenario questions with name and answer" do
32
+ tigers_and_cats_scenario_set = scenario_sets.find { |scenario_set| scenario_set.name == "tigers_and_cats" }
33
+ tigers_and_cats_scenario = tigers_and_cats_scenario_set.scenarios.first
34
+ expect(tigers_and_cats_scenario.question_groups.first.first.name).to eq("question_1")
35
+ expect(tigers_and_cats_scenario.question_groups.first.first.answer).to eq("cat")
36
+ end
37
+ end
38
+ end
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.13.1
4
+ version: 0.14.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-19 00:00:00.000000000 Z
12
+ date: 2015-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: parslet
16
- requirement: &12661260 !ruby/object:Gem::Requirement
16
+ requirement: &23997380 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.6.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *12661260
24
+ version_requirements: *23997380
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: uk_postcode
27
- requirement: &12660740 !ruby/object:Gem::Requirement
27
+ requirement: &23996560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *12660740
35
+ version_requirements: *23996560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &12660200 !ruby/object:Gem::Requirement
38
+ requirement: &24022840 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *12660200
46
+ version_requirements: *24022840
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &12659780 !ruby/object:Gem::Requirement
49
+ requirement: &24022300 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *12659780
57
+ version_requirements: *24022300
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: pry
60
- requirement: &12659200 !ruby/object:Gem::Requirement
60
+ requirement: &24021740 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *12659200
68
+ version_requirements: *24021740
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: gem_publisher
71
- requirement: &12658640 !ruby/object:Gem::Requirement
71
+ requirement: &24021220 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *12658640
79
+ version_requirements: *24021220
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: timecop
82
- requirement: &12658200 !ruby/object:Gem::Requirement
82
+ requirement: &24020020 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *12658200
90
+ version_requirements: *24020020
91
91
  description:
92
92
  email: david.heath@digital.cabinet-office.gov.uk
93
93
  executables:
@@ -101,6 +101,7 @@ files:
101
101
  - lib/smartdown/parser/node_transform.rb
102
102
  - lib/smartdown/parser/question.rb
103
103
  - lib/smartdown/parser/node_interpreter.rb
104
+ - lib/smartdown/parser/scenario_set_interpreter.rb
104
105
  - lib/smartdown/parser/snippet_pre_parser.rb
105
106
  - lib/smartdown/parser/base.rb
106
107
  - lib/smartdown/parser/input_set.rb
@@ -114,6 +115,7 @@ files:
114
115
  - lib/smartdown/parser/element/postcode_question.rb
115
116
  - lib/smartdown/parser/element/money_question.rb
116
117
  - lib/smartdown/parser/element/conditional.rb
118
+ - lib/smartdown/parser/element/marker.rb
117
119
  - lib/smartdown/parser/element/start_button.rb
118
120
  - lib/smartdown/parser/element/front_matter.rb
119
121
  - lib/smartdown/parser/element/country_question.rb
@@ -178,6 +180,7 @@ files:
178
180
  - lib/smartdown/model/answer/text.rb
179
181
  - lib/smartdown/model/element/question.rb
180
182
  - lib/smartdown/model/element/conditional.rb
183
+ - lib/smartdown/model/element/marker.rb
181
184
  - lib/smartdown/model/element/start_button.rb
182
185
  - lib/smartdown/model/element/markdown_line.rb
183
186
  - lib/smartdown/model/element/next_steps.rb
@@ -203,13 +206,16 @@ files:
203
206
  - spec/parser/base_spec.rb
204
207
  - spec/parser/input_set_spec.rb
205
208
  - spec/parser/rules_spec.rb
209
+ - spec/parser/scenario_set_interpreter_spec.rb
206
210
  - spec/parser/predicates_spec.rb
211
+ - spec/parser/scenario_sets_interpreter_spec.rb
207
212
  - spec/parser/element/postcode_question_spec.rb
208
213
  - spec/parser/element/next_steps_spec.rb
209
214
  - spec/parser/element/multiple_choice_question_spec.rb
210
215
  - spec/parser/element/country_question_spec.rb
211
216
  - spec/parser/element/conditional_spec.rb
212
217
  - spec/parser/element/start_button_parser_spec.rb
218
+ - spec/parser/element/marker_spec.rb
213
219
  - spec/parser/element/date_question_spec.rb
214
220
  - spec/parser/element/markdown_heading_spec.rb
215
221
  - spec/parser/element/front_matter_spec.rb
@@ -309,7 +315,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
309
315
  version: '0'
310
316
  segments:
311
317
  - 0
312
- hash: 1413061790039635549
318
+ hash: -4151966028766809979
313
319
  required_rubygems_version: !ruby/object:Gem::Requirement
314
320
  none: false
315
321
  requirements:
@@ -318,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
318
324
  version: '0'
319
325
  segments:
320
326
  - 0
321
- hash: 1413061790039635549
327
+ hash: -4151966028766809979
322
328
  requirements: []
323
329
  rubyforge_project:
324
330
  rubygems_version: 1.8.11
@@ -334,13 +340,16 @@ test_files:
334
340
  - spec/parser/base_spec.rb
335
341
  - spec/parser/input_set_spec.rb
336
342
  - spec/parser/rules_spec.rb
343
+ - spec/parser/scenario_set_interpreter_spec.rb
337
344
  - spec/parser/predicates_spec.rb
345
+ - spec/parser/scenario_sets_interpreter_spec.rb
338
346
  - spec/parser/element/postcode_question_spec.rb
339
347
  - spec/parser/element/next_steps_spec.rb
340
348
  - spec/parser/element/multiple_choice_question_spec.rb
341
349
  - spec/parser/element/country_question_spec.rb
342
350
  - spec/parser/element/conditional_spec.rb
343
351
  - spec/parser/element/start_button_parser_spec.rb
352
+ - spec/parser/element/marker_spec.rb
344
353
  - spec/parser/element/date_question_spec.rb
345
354
  - spec/parser/element/markdown_heading_spec.rb
346
355
  - spec/parser/element/front_matter_spec.rb