macros4cuke 0.5.14 → 0.5.15

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +7 -9
  3. data/CHANGELOG.md +20 -11
  4. data/Gemfile +2 -2
  5. data/LICENSE.txt +1 -1
  6. data/README.md +43 -42
  7. data/Rakefile +54 -54
  8. data/appveyor.yml +20 -0
  9. data/bin/macros4cuke +14 -15
  10. data/lib/macro_steps.rb +3 -3
  11. data/lib/macros4cuke/application.rb +1 -3
  12. data/lib/macros4cuke/cli/cmd-line.rb +1 -3
  13. data/lib/macros4cuke/coll-walker-factory.rb +1 -1
  14. data/lib/macros4cuke/constants.rb +2 -2
  15. data/lib/macros4cuke/formatter/all-notifications.rb +1 -1
  16. data/lib/macros4cuke/formatter/to-gherkin.rb +4 -6
  17. data/lib/macros4cuke/formatter/to-null.rb +14 -14
  18. data/lib/macros4cuke/formatter/to-trace.rb +1 -3
  19. data/lib/macros4cuke/formatting-service.rb +2 -2
  20. data/lib/macros4cuke/macro-collection.rb +4 -6
  21. data/lib/macros4cuke/macro-step-support.rb +0 -2
  22. data/lib/macros4cuke/macro-step.rb +18 -19
  23. data/lib/macros4cuke/templating/comment.rb +0 -2
  24. data/lib/macros4cuke/templating/engine.rb +26 -29
  25. data/lib/macros4cuke/templating/eo-line.rb +18 -21
  26. data/lib/macros4cuke/templating/placeholder.rb +12 -12
  27. data/lib/macros4cuke/templating/section.rb +1 -5
  28. data/lib/macros4cuke/templating/static-text.rb +0 -2
  29. data/lib/macros4cuke/templating/template-element.rb +6 -7
  30. data/spec/macros4cuke/cli/cmd-line_spec.rb +4 -4
  31. data/spec/macros4cuke/coll-walker-factory_spec.rb +42 -42
  32. data/spec/macros4cuke/formatter/to-trace_spec.rb +148 -149
  33. data/spec/macros4cuke/macro-collection_spec.rb +2 -2
  34. data/spec/macros4cuke/macro-step-support_spec.rb +10 -9
  35. data/spec/macros4cuke/macro-step_spec.rb +10 -9
  36. data/spec/macros4cuke/templating/comment_spec.rb +37 -38
  37. data/spec/macros4cuke/templating/engine_spec.rb +19 -22
  38. data/spec/macros4cuke/templating/eo-line_spec.rb +31 -32
  39. data/spec/macros4cuke/templating/placeholder_spec.rb +1 -2
  40. data/spec/macros4cuke/templating/section_spec.rb +10 -7
  41. data/spec/macros4cuke/templating/static_text_spec.rb +38 -39
  42. data/spec/macros4cuke/use-sample-collection.rb +3 -3
  43. metadata +9 -8
@@ -70,8 +70,6 @@ EOS
70
70
  end
71
71
  end
72
72
 
73
- public
74
-
75
73
  # Perform the command-line parsing
76
74
  def parse!(theCmdLineArgs)
77
75
  begin
@@ -112,7 +110,7 @@ EOS
112
110
  feature_path = dirs.reduce(Pathname.getwd) do |path, dir_name|
113
111
  path += dir_name
114
112
  unless path.exist?
115
- fail DirectoryNotFound.new(path.relative_path_from(Pathname.getwd))
113
+ raise DirectoryNotFound.new(path.relative_path_from(Pathname.getwd))
116
114
  end
117
115
  path
118
116
  end
@@ -62,7 +62,7 @@ class CollWalkerFactory
62
62
 
63
63
  else
64
64
  err_msg = "Don't know how to format a #{current_node.class}."
65
- fail(InternalError, err_msg)
65
+ raise(InternalError, err_msg)
66
66
  end
67
67
 
68
68
  current_node = backlog.shift
@@ -3,10 +3,10 @@
3
3
 
4
4
  module Macros4Cuke # Module used as a namespace
5
5
  # The version number of the gem.
6
- Version = '0.5.14'
6
+ Version = '0.5.15'.freeze
7
7
 
8
8
  # Brief description of the gem.
9
- Description = 'Add your own macro-steps to Cucumber scenarios'
9
+ Description = 'Add your own macro-steps to Cucumber scenarios'.freeze
10
10
 
11
11
  # Constant Macros4Cuke::RootDir contains the absolute path of Macro4Cuke's
12
12
  # root directory. Note: it also ends with a slash character.
@@ -19,7 +19,7 @@ module Macros4Cuke # Module used as a namespace
19
19
  :on_placeholder,
20
20
  :on_section,
21
21
  :on_section_end
22
- ]
22
+ ].freeze
23
23
  end # module
24
24
  end # module
25
25
 
@@ -19,8 +19,6 @@ class ToGherkin
19
19
  @step_count = 0
20
20
  end
21
21
 
22
- public
23
-
24
22
  # Tell which notifications this formatter subscribes to.
25
23
  def implements()
26
24
  return [:on_collection, :on_step, :on_step_end, :on_phrase, :on_source]
@@ -49,16 +47,16 @@ class ToGherkin
49
47
  def on_phrase(aLevel, aPhraseText, useTable)
50
48
  suffix = useTable ? ':' : ''
51
49
  io.print "#{indentation(aLevel)}Given I define the step "
52
- io.puts %Q("* I [#{aPhraseText}]#{suffix}" to mean:)
50
+ io.puts %("* I [#{aPhraseText}]#{suffix}" to mean:)
53
51
  end
54
52
 
55
53
  def on_source(aLevel, aSourceText)
56
54
  ljust = indentation(aLevel)
57
- triple_quotes = %Q(#{ljust}""")
55
+ triple_quotes = %(#{ljust}""")
58
56
  io.puts triple_quotes
59
57
 
60
58
  # Indent source text
61
- indented_text = aSourceText.gsub(/^/m, "#{ljust}")
59
+ indented_text = aSourceText.gsub(/^/m, ljust.to_s)
62
60
 
63
61
  io.puts indented_text
64
62
  io.puts triple_quotes
@@ -67,7 +65,7 @@ class ToGherkin
67
65
  private
68
66
 
69
67
  def indentation(aLevel)
70
- return ' ' * (aLevel)
68
+ return ' ' * aLevel
71
69
  end
72
70
  end # class
73
71
  end # module
@@ -17,59 +17,59 @@ module Macros4Cuke # Module used as a namespace
17
17
  end
18
18
 
19
19
  def on_collection(_, _)
20
- ; # Do nothing
20
+ # Do nothing
21
21
  end
22
22
 
23
23
  def on_collection_end(_)
24
- ; # Do nothing
24
+ # Do nothing
25
25
  end
26
26
 
27
27
  def on_step(_, _)
28
- ; # Do nothing
28
+ # Do nothing
29
29
  end
30
30
 
31
31
  def on_step_end(_)
32
- ; # Do nothing
32
+ # Do nothing
33
33
  end
34
34
 
35
35
  def on_phrase(_, _, _)
36
- ; # Do nothing
36
+ # Do nothing
37
37
  end
38
38
 
39
39
  def on_renderer(_, _)
40
- ; # Do nothing
40
+ # Do nothing
41
41
  end
42
42
 
43
43
  def on_renderer_end(_)
44
- ; # Do nothing
44
+ # Do nothing
45
45
  end
46
46
 
47
47
  def on_source(_, _)
48
- ; # Do nothing
48
+ # Do nothing
49
49
  end
50
50
 
51
51
  def on_static_text(_, _)
52
- ; # Do nothing
52
+ # Do nothing
53
53
  end
54
54
 
55
55
  def on_comment(_, _)
56
- ; # Do nothing
56
+ # Do nothing
57
57
  end
58
58
 
59
59
  def on_eol(_)
60
- ; # Do nothing
60
+ # Do nothing
61
61
  end
62
62
 
63
63
  def on_placeholder(_, _)
64
- ; # Do nothing
64
+ # Do nothing
65
65
  end
66
66
 
67
67
  def on_section(_, _)
68
- ; # Do Nothing
68
+ # Do Nothing
69
69
  end
70
70
 
71
71
  def on_section_end(_)
72
- ; # Do Nothing
72
+ # Do Nothing
73
73
  end
74
74
  end # class
75
75
  end # module
@@ -17,8 +17,6 @@ module Formatter
17
17
  @io = anIO
18
18
  end
19
19
 
20
- public
21
-
22
20
  # Tell which notifications the formatter subscribes to.
23
21
  def implements()
24
22
  return Formatter::AllNotifications
@@ -40,7 +38,7 @@ module Formatter
40
38
  trace_event(aLevel, __method__)
41
39
  end
42
40
 
43
- def on_phrase(aLevel, _, _)
41
+ def on_phrase(aLevel, _, _)
44
42
  trace_event(aLevel, __method__)
45
43
  end
46
44
 
@@ -33,14 +33,14 @@ class FormattingService
33
33
 
34
34
  # Complain if list is empty or nil
35
35
  if supported_events.nil? || supported_events.empty?
36
- fail(NoFormattingEventForFormatter.new(aFormatter))
36
+ raise(NoFormattingEventForFormatter.new(aFormatter))
37
37
  end
38
38
 
39
39
  # Check that each event from the event list the formatter is known.
40
40
  supported_events.each do |event|
41
41
  next if Formatter::AllNotifications.include? event
42
42
 
43
- fail(UnknownFormattingEvent.new(aFormatter, event))
43
+ raise(UnknownFormattingEvent.new(aFormatter, event))
44
44
  end
45
45
 
46
46
  formatters << aFormatter
@@ -1,7 +1,7 @@
1
1
  # File: macro-collection.rb
2
2
  # Purpose: Implementation of the MacroCollection class.
3
3
 
4
- require 'singleton' # We'll use the Singleton design pattern for this class.
4
+ require 'singleton' # We'll use the Singleton design pattern for this class.
5
5
  require_relative 'macro-step'
6
6
 
7
7
  module Macros4Cuke # Module used as a namespace
@@ -16,8 +16,6 @@ class MacroCollection
16
16
  # A Hash with pairs of the form: macro key => MacroStep object
17
17
 
18
18
 
19
- public
20
-
21
19
  # Add a new macro.
22
20
  # Pre-condition: there is no existing macro with the same key.
23
21
  # @param aPhrase [String] The text that is enclosed between
@@ -31,7 +29,7 @@ class MacroCollection
31
29
  # Prevent collision of macros (macros with same phrase).
32
30
  # This can occur if a macro was defined in a background section.
33
31
  # An exception is raised if the phrase syntax of both macros are the
34
- fail(DuplicateMacroError, aPhrase) if find_macro(aPhrase, useTable)
32
+ raise(DuplicateMacroError, aPhrase) if find_macro(aPhrase, useTable)
35
33
 
36
34
  macro_steps[new_macro.key] = new_macro
37
35
  end
@@ -47,10 +45,10 @@ class MacroCollection
47
45
  def render_steps(aPhrase, rawData = nil)
48
46
  use_table = !rawData.nil?
49
47
  macro = find_macro(aPhrase, use_table)
50
- fail(UnknownMacroError, aPhrase) if macro.nil?
48
+ raise(UnknownMacroError, aPhrase) if macro.nil?
51
49
 
52
50
  # Render the steps
53
- return macro.expand(aPhrase, rawData)
51
+ return macro.expand(aPhrase, rawData)
54
52
  end
55
53
 
56
54
 
@@ -16,8 +16,6 @@ module MacroStepSupport
16
16
  # The substeps being executed in the scenario represented as text.
17
17
  attr_reader(:substeps_trace)
18
18
 
19
- public
20
-
21
19
  # Add a new macro.
22
20
  # Pre-condition: there is no existing macro with the same key.
23
21
  # @param aPhrase [String] The text that is enclosed between
@@ -1,7 +1,6 @@
1
1
  # File: macro-step.rb
2
2
  # Purpose: Implementation of the MacroStep class.
3
3
 
4
-
5
4
  require_relative 'exceptions'
6
5
  require_relative 'templating/engine'
7
6
 
@@ -17,7 +16,7 @@ class MacroStep
17
16
  # The set of predefined macro argument constant values.
18
17
  BuiltinParameters = {
19
18
  'quotes' => '"""'
20
- }
19
+ }.freeze
21
20
 
22
21
  # A template engine that expands the sub-steps upon request.
23
22
  attr_reader(:renderer)
@@ -84,7 +83,7 @@ class MacroStep
84
83
  stripped_phrase = aMacroPhrase.strip # Remove leading ... trailing space(s)
85
84
 
86
85
  # Remove every underscore
87
- stripped_phrase.gsub!(/_/, '')
86
+ stripped_phrase.delete!('_')
88
87
 
89
88
  # Replace all consecutive whitespaces by an underscore
90
89
  stripped_phrase.gsub!(/\s+/, '_')
@@ -93,12 +92,12 @@ class MacroStep
93
92
  # Determine the pattern to isolate
94
93
  # each argument/parameter with its delimiters
95
94
  pattern = case mode
96
- when :definition
97
- /<(?:[^\\<>]|\\.)*>/
98
- when :invokation
99
- /"([^\\"]|\\.)*"/
95
+ when :definition
96
+ /<(?:[^\\<>]|\\.)*>/
97
+ when :invokation
98
+ /"([^\\"]|\\.)*"/
100
99
 
101
- end
100
+ end
102
101
 
103
102
  # Each text between quotes or chevron is replaced by the letter X
104
103
  normalized = stripped_phrase.gsub(pattern, 'X')
@@ -165,9 +164,9 @@ class MacroStep
165
164
  # @param params [Hash] The pairs phrase argument name => value
166
165
  def validate_row(a_row, params)
167
166
  (a_key, value) = a_row
168
- fail(UnknownArgumentError.new(a_key)) unless args.include? a_key
167
+ raise(UnknownArgumentError.new(a_key)) unless args.include? a_key
169
168
  if (phrase_args.include? a_key) && (params[a_key] != value)
170
- fail(AmbiguousArgumentValue.new(a_key, params[a_key], value))
169
+ raise(AmbiguousArgumentValue.new(a_key, params[a_key], value))
171
170
  end
172
171
 
173
172
  return a_row
@@ -185,17 +184,17 @@ class MacroStep
185
184
  # determine the syntax of the arguments/parameters
186
185
  # as a regular expression with one capturing group
187
186
  pattern = case mode
188
- when :definition
189
- /<((?:[^\\<>]|\\.)*)>/
190
- # /{{{([^}]*)}}}|{{([^}]*)}}/ # Two capturing groups!...
191
- when :invokation
192
- /"((?:[^\\"]|\\.)*)"/
193
- end
187
+ when :definition
188
+ /<((?:[^\\<>]|\\.)*)>/
189
+ # /{{{([^}]*)}}}|{{([^}]*)}}/ # Two capturing groups!...
190
+ when :invokation
191
+ /"((?:[^\\"]|\\.)*)"/
192
+ end
194
193
  raw_result = aMacroPhrase.scan(pattern)
195
194
  args = raw_result.flatten.compact
196
195
 
197
196
  # Replace escaped quotes by quote character.
198
- args.map! { |arg| arg.sub(/\\"/, '"') } if mode == :invokation
197
+ args.map! { |arg| arg.sub(/\\"/, '"') } if mode == :invokation
199
198
 
200
199
  return args
201
200
  end
@@ -206,7 +205,7 @@ class MacroStep
206
205
  # Error when the phrase names an argument that never occurs in the substeps
207
206
  thePhraseArgs.each do |phrase_arg|
208
207
  next if substepsVars.include? phrase_arg
209
- fail(UselessPhraseArgument.new(phrase_arg))
208
+ raise(UselessPhraseArgument.new(phrase_arg))
210
209
  end
211
210
  # Error when a substep has an argument that never appears in the phrase
212
211
  # and the macro-step does not use data table.
@@ -215,7 +214,7 @@ class MacroStep
215
214
  next if thePhraseArgs.include?(substep_arg) ||
216
215
  BuiltinParameters.include?(substep_arg)
217
216
 
218
- fail(UnreachableSubstepArgument.new(substep_arg))
217
+ raise(UnreachableSubstepArgument.new(substep_arg))
219
218
  end
220
219
  end
221
220
 
@@ -20,8 +20,6 @@ module Macros4Cuke # Module used as a namespace
20
20
  @source = aSourceText
21
21
  end
22
22
 
23
- public
24
-
25
23
  # Render the comment.
26
24
  # Comments are rendered as empty text. This is necessary because
27
25
  # Cucumber::RbSupport::RbWorld#steps complains when it sees a comment.
@@ -9,7 +9,7 @@ require_relative 'eo-line'
9
9
  require_relative 'comment'
10
10
  require_relative 'template-element'
11
11
  require_relative 'placeholder'
12
- require_relative 'section' # Load the Section and ConditionalSection
12
+ require_relative 'section' # Load the Section and ConditionalSection
13
13
 
14
14
 
15
15
  module Macros4Cuke # Module used as a namespace
@@ -32,7 +32,7 @@ class Engine
32
32
  # between chevrons <...> template tags.
33
33
  DisallowedSigns = begin
34
34
  # Use concatenation (+) to work around Ruby bug!
35
- forbidden = ' !"#' + "$%&'()*+,-./:;<=>?[\\]^`{|}~"
35
+ forbidden = ' !"#' + "$%&'()*+,-./:;<=>?[\\]^`{|}~"
36
36
  all_escaped = []
37
37
  forbidden.each_char { |ch| all_escaped << Regexp.escape(ch) }
38
38
  pattern = all_escaped.join('|')
@@ -54,8 +54,6 @@ class Engine
54
54
  @representation = compile(aSourceTemplate)
55
55
  end
56
56
 
57
- public
58
-
59
57
  # Render the template within the given scope object and
60
58
  # with the locals specified.
61
59
  # The method mimicks the signature of the Tilt::Template#render method.
@@ -112,7 +110,7 @@ class Engine
112
110
  scanner = StringScanner.new(aTextLine)
113
111
  result = []
114
112
 
115
- if scanner.check(/\s*#/) # Detect comment line
113
+ if scanner.check(/\s*#/) # Detect comment line
116
114
  result << [:comment, aTextLine]
117
115
  else
118
116
  until scanner.eos?
@@ -132,8 +130,6 @@ class Engine
132
130
  return result
133
131
  end
134
132
 
135
- private
136
-
137
133
  # Called when the given text line could not be parsed.
138
134
  # Raises an exception with the syntax issue identified.
139
135
  # @param aTextLine [String] A text line from the template.
@@ -152,13 +148,14 @@ class Engine
152
148
  when '>' then unbalance -= 1
153
149
  end
154
150
 
155
- fail(StandardError, "Nested opening chevron '<'.") if unbalance > 1
156
- fail(StandardError, "Missing opening chevron '<'.") if unbalance < 0
151
+ raise(StandardError, "Nested opening chevron '<'.") if unbalance > 1
152
+ raise(StandardError, "Missing opening chevron '<'.") if unbalance < 0
157
153
  end
158
154
 
159
- fail(StandardError, "Missing closing chevron '>'.") if unbalance == 1
155
+ raise(StandardError, "Missing closing chevron '>'.") if unbalance == 1
160
156
  end
161
-
157
+
158
+ private
162
159
 
163
160
  # Create the internal representation of the given template.
164
161
  def compile(aSourceTemplate)
@@ -172,7 +169,7 @@ class Engine
172
169
  # A tag text cannot be empty nor blank
173
170
  next if (kind != :dynamic) || !text.strip.empty?
174
171
 
175
- fail(EmptyArgumentError.new(line.strip))
172
+ raise(EmptyArgumentError.new(line.strip))
176
173
  end
177
174
 
178
175
  line_items
@@ -236,10 +233,10 @@ class Engine
236
233
  (kind, text) = aCouple
237
234
 
238
235
  result = case kind
239
- when :static then StaticText.new(text)
240
- when :comment then Comment.new(text)
241
- when :dynamic then parse_tag(text)
242
- end
236
+ when :static then StaticText.new(text)
237
+ when :comment then Comment.new(text)
238
+ when :dynamic then parse_tag(text)
239
+ end
243
240
 
244
241
  return result
245
242
  end
@@ -255,17 +252,17 @@ class Engine
255
252
  # Disallow punctuation and delimiter signs in tags.
256
253
  matching = DisallowedSigns.match(aText)
257
254
  end
258
- fail(InvalidCharError.new(aText, matching[0])) if matching
255
+ raise(InvalidCharError.new(aText, matching[0])) if matching
259
256
 
260
257
  result = case aText[0, 1]
261
- when '?'
262
- ConditionalSection.new(aText[1..-1], true)
258
+ when '?'
259
+ ConditionalSection.new(aText[1..-1], true)
263
260
 
264
- when '/'
265
- SectionEndMarker.new(aText[1..-1])
266
- else
267
- Placeholder.new(aText)
268
- end
261
+ when '/'
262
+ SectionEndMarker.new(aText[1..-1])
263
+ else
264
+ Placeholder.new(aText)
265
+ end
269
266
 
270
267
  return result
271
268
  end
@@ -273,7 +270,7 @@ class Engine
273
270
  # Transform a flat sequence of elements into a hierarchy of sections.
274
271
  # @param flat_sequence [Array] a linear list of elements (including sections)
275
272
  def compile_sections(flat_sequence)
276
- open_sections = [] # The list of nested open sections
273
+ open_sections = [] # The list of nested open sections
277
274
 
278
275
  compiled = flat_sequence.each_with_object([]) do |element, subResult|
279
276
  case element
@@ -294,8 +291,8 @@ class Engine
294
291
  end
295
292
 
296
293
  unless open_sections.empty?
297
- error_message = "Unterminated section #{open_sections.last}."
298
- fail(StandardError, error_message)
294
+ error_message = "Unterminated section #{open_sections.last}."
295
+ raise(StandardError, error_message)
299
296
  end
300
297
 
301
298
  return compiled
@@ -308,11 +305,11 @@ class Engine
308
305
 
309
306
  if sections.empty?
310
307
  msg = 'found while no corresponding section is open.'
311
- fail(StandardError, msg_prefix + msg)
308
+ raise(StandardError, msg_prefix + msg)
312
309
  end
313
310
  return if marker.name == sections.last.name
314
311
  msg = "doesn't match current section '#{sections.last.name}'."
315
- fail(StandardError, msg_prefix + msg)
312
+ raise(StandardError, msg_prefix + msg)
316
313
  end
317
314
  end # class
318
315
  end # module
@@ -1,21 +1,18 @@
1
- # File: eo-line.rb
2
-
3
-
4
- module Macros4Cuke # Module used as a namespace
5
- # Module containing all classes implementing the simple template engine
6
- # used internally in Macros4Cuke.
7
- module Templating
8
- # Class used internally by the template engine.
9
- # Represents an end of line that must be rendered as such.
10
- class EOLine
11
- # Render an end of line.
12
- # This method has the same signature as the {Engine#render} method.
13
- # @return [String] An end of line marker. Its exact value is OS-dependent.
14
- def render(_, _)
15
- return "\n"
16
- end
17
- end # class
18
- end # module
19
- end # module
20
-
21
- # End of file
1
+ module Macros4Cuke # Module used as a namespace
2
+ # Module containing all classes implementing the simple template engine
3
+ # used internally in Macros4Cuke.
4
+ module Templating
5
+ # Class used internally by the template engine.
6
+ # Represents an end of line that must be rendered as such.
7
+ class EOLine
8
+ # Render an end of line.
9
+ # This method has the same signature as the {Engine#render} method.
10
+ # @return [String] An end of line marker. Its exact value is OS-dependent.
11
+ def render(_, _)
12
+ return "\n"
13
+ end
14
+ end # class
15
+ end # module
16
+ end # module
17
+
18
+ # End of file
@@ -22,18 +22,18 @@ module Templating
22
22
  actual_value = retrieve_value_from(aContextObject, theLocals)
23
23
 
24
24
  result = case actual_value
25
- when NilClass
26
- ''
27
-
28
- when Array
29
- # TODO: Move away from hard-coded separator.
30
- actual_value.join('<br/>')
31
-
32
- when String
33
- actual_value
34
- else
35
- actual_value.to_s
36
- end
25
+ when NilClass
26
+ ''
27
+
28
+ when Array
29
+ # TODO: Move away from hard-coded separator.
30
+ actual_value.join('<br/>')
31
+
32
+ when String
33
+ actual_value
34
+ else
35
+ actual_value.to_s
36
+ end
37
37
 
38
38
  return result
39
39
  end
@@ -22,8 +22,6 @@ class Section < UnaryElement
22
22
  @children = []
23
23
  end
24
24
 
25
- public
26
-
27
25
  # Add a child element as member of the section
28
26
  def add_child(aChild)
29
27
  children << aChild
@@ -51,7 +49,7 @@ class Section < UnaryElement
51
49
  # Returns an empty string when no value is assigned to the placeholder.
52
50
  def render(_, _)
53
51
  msg = "Method Section.#{__method__} must be implemented in subclass."
54
- fail(NotImplementedError, msg)
52
+ raise(NotImplementedError, msg)
55
53
  end
56
54
  end # class
57
55
 
@@ -72,8 +70,6 @@ class ConditionalSection < Section
72
70
  @existence = renderWhenExisting
73
71
  end
74
72
 
75
- public
76
-
77
73
  # Render the placeholder given the passed arguments.
78
74
  # This method has the same signature as the {Engine#render} method.
79
75
  # @return [String] The text value assigned to the placeholder.
@@ -20,8 +20,6 @@ module Macros4Cuke # Module used as a namespace
20
20
  @source = aSourceText
21
21
  end
22
22
 
23
- public
24
-
25
23
  # Render the static text.
26
24
  # This method has the same signature as the {Engine#render} method.
27
25
  # @return [String] Static text is returned verbatim ("as is")
@@ -1,7 +1,6 @@
1
- # File: template-element.rb
2
-
3
- require_relative 'static-text'
4
- require_relative 'comment'
5
- require_relative 'eo-line'
6
-
7
- # End of file
1
+ # File: template-element.rb
2
+ require_relative 'static-text'
3
+ require_relative 'comment'
4
+ require_relative 'eo-line'
5
+
6
+ # End of file
@@ -134,7 +134,7 @@ END_MESSAGE
134
134
 
135
135
  it 'should complain when an option misses an argument' do
136
136
  hijack_stderr
137
- err_msg = <<-END_MESSAGE
137
+ err_msg = <<-END_MESSAGE
138
138
  No argument provided with command line option: --setup
139
139
  END_MESSAGE
140
140
 
@@ -148,7 +148,7 @@ END_MESSAGE
148
148
 
149
149
  it "should complain when project to setup doesn't exist" do
150
150
  hijack_stderr
151
- err_msg = <<-END_MESSAGE
151
+ err_msg = <<-END_MESSAGE
152
152
  Error in command-line:
153
153
  Cannot find the directory 'not_a_dir'.
154
154
  END_MESSAGE
@@ -166,7 +166,7 @@ END_MESSAGE
166
166
  mk_subdir('test_dir')
167
167
 
168
168
  hijack_stderr
169
- err_msg = <<-END_MESSAGE
169
+ err_msg = <<-END_MESSAGE
170
170
  Error in command-line:
171
171
  Cannot find the directory 'test_dir/features'.
172
172
  END_MESSAGE
@@ -181,7 +181,7 @@ END_MESSAGE
181
181
 
182
182
  mk_subdir('test_dir/features')
183
183
  hijack_stderr
184
- err_msg = <<-END_MESSAGE
184
+ err_msg = <<-END_MESSAGE
185
185
  Error in command-line:
186
186
  Cannot find the directory 'test_dir/features/support'.
187
187
  END_MESSAGE