macros4cuke 0.5.14 → 0.5.15

Sign up to get free protection for your applications and to get access to all the features.
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