macros4cuke 0.4.02 → 0.4.03
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.
- checksums.yaml +8 -8
- data/CHANGELOG.md +7 -2
- data/features/support/env.rb +0 -3
- data/lib/macros4cuke/coll-walker-factory.rb +1 -0
- data/lib/macros4cuke/constants.rb +2 -2
- data/lib/macros4cuke/templating/engine.rb +5 -165
- data/lib/macros4cuke/templating/placeholder.rb +52 -0
- data/lib/macros4cuke/templating/section.rb +116 -0
- data/lib/macros4cuke/templating/template-element.rb +88 -0
- data/lib/macros4cuke/templating/unary-element.rb +39 -0
- data/spec/macros4cuke/templating/placeholder_spec.rb +1 -1
- data/spec/macros4cuke/templating/section_spec.rb +4 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmEwYWE3ZGQxYzQ3MzdiMzhmMDAxNDk1YWJkMGZhMmVlZWVlMTdhNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NjYwZDQwNDg0MmQ1MzlkN2QyNjVkNWU5OWZmODFkMmI4NDY3ZmRlNQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjMxYzAxMDYyNmNiMmFhZjEyNTRkNDAxMDk3NDc4MmQ2MmRjOTZiN2I2MDgx
|
10
|
+
YmRmMTljODRiMmNmYmU0NzE4ZjU3MGZmNTI5MDNmYTg1MDk2ZDRlZDk1ZWZm
|
11
|
+
MmRiMDYxZTJlYjI5YjkxOWFjMGQ1ZTgwZjVlMjkwODc2MzYzNjM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTRiNTkwYjY2ODBmNmJlNDdiYmMwNDliNjQ3MDA3YzA3MmE2YWMwMWIzYmU4
|
14
|
+
NDBjZWE3OWY2OTYzNDgxNjEzZmYzYTVjYzE2MWVjMzA2ZjFiMWMwNDhhNWNh
|
15
|
+
NzM1YWE1ZTZlNDBmNTA1MDJiOTcwYTJiNDgyYTgyYjA3MWYyNDA=
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
-
### 0.4.
|
1
|
+
### 0.4.03 / 2013-12-11
|
2
|
+
* [CHANGE] File `engine.rb`: Monolithic file splitted into more class-specific files.
|
3
|
+
* [CHANGE] File `constants.rb`: Removal of legacy app in comment.
|
4
|
+
|
5
|
+
|
6
|
+
### 0.4.02 / 2013-11-17
|
2
7
|
* [CHANGE] File `README.md`: Added section on new feature: capability to list all macros.
|
3
8
|
* [CHANGE] Files from `macro_steps.rb`: Added the `require` to enable the new step.
|
4
9
|
|
5
|
-
### 0.4.01 / 2013-
|
10
|
+
### 0.4.01 / 2013-11-17
|
6
11
|
* [CHANGE] File `.rubocop.yml`: Disabled a few new 0.15.0 cops
|
7
12
|
* [CHANGE] Files from `lib` and `spec` dirs updated for Rubocop 0.15.0
|
8
13
|
|
data/features/support/env.rb
CHANGED
@@ -5,9 +5,6 @@
|
|
5
5
|
# to use the Macros4Cuke gem.
|
6
6
|
|
7
7
|
require 'pp'
|
8
|
-
#require_relative '../../lib/macros4cuke/macro-collection'
|
9
|
-
#require_relative '../../lib/macros4cuke/formatting-service'
|
10
|
-
#require_relative '../../lib/macros4cuke/formatter/to-gherkin'
|
11
8
|
|
12
9
|
begin
|
13
10
|
require 'simplecov' # Development dependency only...
|
@@ -3,12 +3,12 @@
|
|
3
3
|
|
4
4
|
module Macros4Cuke # Module used as a namespace
|
5
5
|
# The version number of the gem.
|
6
|
-
Version = '0.4.
|
6
|
+
Version = '0.4.03'
|
7
7
|
|
8
8
|
# Brief description of the gem.
|
9
9
|
Description = 'Macro-steps for Cucumber'
|
10
10
|
|
11
|
-
# Constant Macros4Cuke::RootDir contains the absolute path of
|
11
|
+
# Constant Macros4Cuke::RootDir contains the absolute path of Macro4Cuke's
|
12
12
|
# root directory. Note: it also ends with a slash character.
|
13
13
|
unless defined?(RootDir)
|
14
14
|
# The initialisation of constant RootDir is guarded in order
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# File: engine.rb
|
2
|
-
# Purpose: Implementation of the
|
2
|
+
# Purpose: Implementation of the Engine class.
|
3
3
|
|
4
4
|
require 'strscan' # Use the StringScanner for lexical analysis.
|
5
5
|
require_relative '../exceptions' # Load the custom exception classes.
|
6
6
|
|
7
|
+
require_relative 'template-element'
|
8
|
+
require_relative 'placeholder'
|
9
|
+
require_relative 'section' # Load the Section and ConditionalSection
|
10
|
+
|
7
11
|
|
8
12
|
module Macros4Cuke # Module used as a namespace
|
9
13
|
|
@@ -81,170 +85,6 @@ class EOLine
|
|
81
85
|
end # class
|
82
86
|
|
83
87
|
|
84
|
-
# Base class used internally by the template engine.
|
85
|
-
# The generalization of any element from a template that has one variable
|
86
|
-
# whose actual value influences the rendition.
|
87
|
-
class UnaryElement
|
88
|
-
# The name of the placeholder/variable.
|
89
|
-
attr_reader(:name)
|
90
|
-
|
91
|
-
# @param aVarName [String] The name of the placeholder from a template.
|
92
|
-
def initialize(aVarName)
|
93
|
-
@name = aVarName
|
94
|
-
end
|
95
|
-
|
96
|
-
protected
|
97
|
-
|
98
|
-
# This method has the same signature as the {Engine#render} method.
|
99
|
-
# @return [Object] The actual value from the locals or context
|
100
|
-
# that is assigned to the variable.
|
101
|
-
def retrieve_value_from(aContextObject, theLocals)
|
102
|
-
actual_value = theLocals[name]
|
103
|
-
if actual_value.nil? && aContextObject.respond_to?(name.to_sym)
|
104
|
-
actual_value = aContextObject.send(name.to_sym)
|
105
|
-
end
|
106
|
-
|
107
|
-
return actual_value
|
108
|
-
end
|
109
|
-
|
110
|
-
end # class
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
# Class used internally by the template engine.
|
115
|
-
# Represents a named placeholder in a template, that is,
|
116
|
-
# a name placed between <..> in the template.
|
117
|
-
# At rendition, a placeholder is replaced by the text value
|
118
|
-
# that is associated with it.
|
119
|
-
class Placeholder < UnaryElement
|
120
|
-
|
121
|
-
public
|
122
|
-
|
123
|
-
# Render the placeholder given the passed arguments.
|
124
|
-
# This method has the same signature as the {Engine#render} method.
|
125
|
-
# @return [String] The text value assigned to the placeholder.
|
126
|
-
# Returns an empty string when no value is assigned to the placeholder.
|
127
|
-
def render(aContextObject, theLocals)
|
128
|
-
actual_value = retrieve_value_from(aContextObject, theLocals)
|
129
|
-
|
130
|
-
result = case actual_value
|
131
|
-
when NilClass
|
132
|
-
''
|
133
|
-
|
134
|
-
when Array
|
135
|
-
# TODO: Move away from hard-coded separator.
|
136
|
-
actual_value.join('<br/>')
|
137
|
-
|
138
|
-
when String
|
139
|
-
actual_value
|
140
|
-
else
|
141
|
-
actual_value.to_s
|
142
|
-
end
|
143
|
-
|
144
|
-
return result
|
145
|
-
end
|
146
|
-
|
147
|
-
end # class
|
148
|
-
|
149
|
-
|
150
|
-
# Base class used internally by the template engine.
|
151
|
-
# Represents a section in a template, that is,
|
152
|
-
# a set of template elements for which its rendition depends
|
153
|
-
# on the value of a variable.
|
154
|
-
class Section < UnaryElement
|
155
|
-
# The child elements of the section
|
156
|
-
attr_reader(:children)
|
157
|
-
|
158
|
-
# @param aVarName [String] The name of the placeholder from a template.
|
159
|
-
def initialize(aVarName)
|
160
|
-
super(aVarName)
|
161
|
-
@children = []
|
162
|
-
end
|
163
|
-
|
164
|
-
public
|
165
|
-
|
166
|
-
# Add a child element as member of the section
|
167
|
-
def add_child(aChild)
|
168
|
-
children << aChild
|
169
|
-
end
|
170
|
-
|
171
|
-
# Retrieve all placeholder names that appear in the template.
|
172
|
-
# @return [Array] The list of placeholder names.
|
173
|
-
def variables()
|
174
|
-
all_vars = children.each_with_object([]) do |a_child, subResult|
|
175
|
-
case a_child
|
176
|
-
when Placeholder
|
177
|
-
subResult << a_child.name
|
178
|
-
when Section
|
179
|
-
subResult.concat(a_child.variables)
|
180
|
-
else
|
181
|
-
# Do nothing
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
return all_vars.flatten.uniq
|
186
|
-
end
|
187
|
-
|
188
|
-
|
189
|
-
# Render the placeholder given the passed arguments.
|
190
|
-
# This method has the same signature as the {Engine#render} method.
|
191
|
-
# @return [String] The text value assigned to the placeholder.
|
192
|
-
# Returns an empty string when no value is assigned to the placeholder.
|
193
|
-
def render(aContextObject, theLocals)
|
194
|
-
msg = "Method Section.#{__method__} must be implemented in subclass."
|
195
|
-
fail(NotImplementedError, msg)
|
196
|
-
end
|
197
|
-
|
198
|
-
end # class
|
199
|
-
|
200
|
-
|
201
|
-
# A specialized section in a template for which its rendition
|
202
|
-
# depends on the (in)existence of an actual value bound to the variable name.
|
203
|
-
class ConditionalSection < Section
|
204
|
-
# A boolean that indicates whether the rendition condition is
|
205
|
-
# the existence of a value for the variable (true)
|
206
|
-
# or its inexistence (false).
|
207
|
-
attr_reader(:existence)
|
208
|
-
|
209
|
-
# @param aVarName [String] The name of the placeholder from a template.
|
210
|
-
# @param renderWhenExisting [boolean] When true, render the children elements
|
211
|
-
# if a value exists for the variable.
|
212
|
-
def initialize(aVarName, renderWhenExisting = true)
|
213
|
-
super(aVarName)
|
214
|
-
@existence = renderWhenExisting
|
215
|
-
end
|
216
|
-
|
217
|
-
public
|
218
|
-
|
219
|
-
# Render the placeholder given the passed arguments.
|
220
|
-
# This method has the same signature as the {Engine#render} method.
|
221
|
-
# @return [String] The text value assigned to the placeholder.
|
222
|
-
# Returns an empty string when no value is assigned to the placeholder.
|
223
|
-
def render(aContextObject, theLocals)
|
224
|
-
actual_value = retrieve_value_from(aContextObject, theLocals)
|
225
|
-
if (!actual_value.nil? && existence) || (actual_value.nil? && !existence)
|
226
|
-
# Let render the children
|
227
|
-
result = children.each_with_object('') do |a_child, sub_result|
|
228
|
-
sub_result << a_child.render(aContextObject, theLocals)
|
229
|
-
end
|
230
|
-
else
|
231
|
-
result = ''
|
232
|
-
end
|
233
|
-
|
234
|
-
return result
|
235
|
-
end
|
236
|
-
|
237
|
-
|
238
|
-
# @return [String] The original text representation of the tag.
|
239
|
-
def to_s()
|
240
|
-
return "<?#{name}>"
|
241
|
-
end
|
242
|
-
|
243
|
-
end # class
|
244
|
-
|
245
|
-
|
246
|
-
SectionEndMarker = Struct.new(:name)
|
247
|
-
|
248
88
|
|
249
89
|
# A very simple implementation of a templating engine.
|
250
90
|
# Earlier versions of Macros4Cuke relied on the logic-less
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# File: placeholder.rb
|
2
|
+
# Purpose: Implementation of the Placeholder class.
|
3
|
+
|
4
|
+
require_relative 'unary-element' # Load the superclass
|
5
|
+
|
6
|
+
|
7
|
+
module Macros4Cuke # Module used as a namespace
|
8
|
+
|
9
|
+
# Module containing all classes implementing the simple template engine
|
10
|
+
# used internally in Macros4Cuke.
|
11
|
+
module Templating
|
12
|
+
|
13
|
+
# Class used internally by the template engine.
|
14
|
+
# Represents a named placeholder in a template, that is,
|
15
|
+
# a name placed between <..> in the template.
|
16
|
+
# At rendition, a placeholder is replaced by the text value
|
17
|
+
# that is associated with it.
|
18
|
+
class Placeholder < UnaryElement
|
19
|
+
|
20
|
+
public
|
21
|
+
|
22
|
+
# Render the placeholder given the passed arguments.
|
23
|
+
# This method has the same signature as the {Engine#render} method.
|
24
|
+
# @return [String] The text value assigned to the placeholder.
|
25
|
+
# Returns an empty string when no value is assigned to the placeholder.
|
26
|
+
def render(aContextObject, theLocals)
|
27
|
+
actual_value = retrieve_value_from(aContextObject, theLocals)
|
28
|
+
|
29
|
+
result = case actual_value
|
30
|
+
when NilClass
|
31
|
+
''
|
32
|
+
|
33
|
+
when Array
|
34
|
+
# TODO: Move away from hard-coded separator.
|
35
|
+
actual_value.join('<br/>')
|
36
|
+
|
37
|
+
when String
|
38
|
+
actual_value
|
39
|
+
else
|
40
|
+
actual_value.to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
return result
|
44
|
+
end
|
45
|
+
|
46
|
+
end # class
|
47
|
+
|
48
|
+
end # module
|
49
|
+
|
50
|
+
end # module
|
51
|
+
|
52
|
+
# End of file
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# File: section.rb
|
2
|
+
# Purpose: Implementation of the Section and ConditionalSection classes.
|
3
|
+
|
4
|
+
require_relative 'unary-element' # Load the superclass
|
5
|
+
|
6
|
+
|
7
|
+
module Macros4Cuke # Module used as a namespace
|
8
|
+
|
9
|
+
|
10
|
+
# Module containing all classes implementing the simple template engine
|
11
|
+
# used internally in Macros4Cuke.
|
12
|
+
module Templating
|
13
|
+
|
14
|
+
# Base class used internally by the template engine.
|
15
|
+
# Represents a section in a template, that is,
|
16
|
+
# a set of template elements for which its rendition depends
|
17
|
+
# on the value of a variable.
|
18
|
+
class Section < UnaryElement
|
19
|
+
# The child elements of the section
|
20
|
+
attr_reader(:children)
|
21
|
+
|
22
|
+
# @param aVarName [String] The name of the placeholder from a template.
|
23
|
+
def initialize(aVarName)
|
24
|
+
super(aVarName)
|
25
|
+
@children = []
|
26
|
+
end
|
27
|
+
|
28
|
+
public
|
29
|
+
|
30
|
+
# Add a child element as member of the section
|
31
|
+
def add_child(aChild)
|
32
|
+
children << aChild
|
33
|
+
end
|
34
|
+
|
35
|
+
# Retrieve all placeholder names that appear in the template.
|
36
|
+
# @return [Array] The list of placeholder names.
|
37
|
+
def variables()
|
38
|
+
all_vars = children.each_with_object([]) do |a_child, subResult|
|
39
|
+
case a_child
|
40
|
+
when Placeholder
|
41
|
+
subResult << a_child.name
|
42
|
+
when Section
|
43
|
+
subResult.concat(a_child.variables)
|
44
|
+
else
|
45
|
+
# Do nothing
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
return all_vars.flatten.uniq
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
# Render the placeholder given the passed arguments.
|
54
|
+
# This method has the same signature as the {Engine#render} method.
|
55
|
+
# @return [String] The text value assigned to the placeholder.
|
56
|
+
# Returns an empty string when no value is assigned to the placeholder.
|
57
|
+
def render(aContextObject, theLocals)
|
58
|
+
msg = "Method Section.#{__method__} must be implemented in subclass."
|
59
|
+
fail(NotImplementedError, msg)
|
60
|
+
end
|
61
|
+
|
62
|
+
end # class
|
63
|
+
|
64
|
+
|
65
|
+
# A specialized section in a template for which its rendition
|
66
|
+
# depends on the (in)existence of an actual value bound to the variable name.
|
67
|
+
class ConditionalSection < Section
|
68
|
+
# A boolean that indicates whether the rendition condition is
|
69
|
+
# the existence of a value for the variable (true)
|
70
|
+
# or its inexistence (false).
|
71
|
+
attr_reader(:existence)
|
72
|
+
|
73
|
+
# @param aVarName [String] The name of the placeholder from a template.
|
74
|
+
# @param renderWhenExisting [boolean] When true, render the children elements
|
75
|
+
# if a value exists for the variable.
|
76
|
+
def initialize(aVarName, renderWhenExisting = true)
|
77
|
+
super(aVarName)
|
78
|
+
@existence = renderWhenExisting
|
79
|
+
end
|
80
|
+
|
81
|
+
public
|
82
|
+
|
83
|
+
# Render the placeholder given the passed arguments.
|
84
|
+
# This method has the same signature as the {Engine#render} method.
|
85
|
+
# @return [String] The text value assigned to the placeholder.
|
86
|
+
# Returns an empty string when no value is assigned to the placeholder.
|
87
|
+
def render(aContextObject, theLocals)
|
88
|
+
actual_value = retrieve_value_from(aContextObject, theLocals)
|
89
|
+
if (!actual_value.nil? && existence) || (actual_value.nil? && !existence)
|
90
|
+
# Let render the children
|
91
|
+
result = children.each_with_object('') do |a_child, sub_result|
|
92
|
+
sub_result << a_child.render(aContextObject, theLocals)
|
93
|
+
end
|
94
|
+
else
|
95
|
+
result = ''
|
96
|
+
end
|
97
|
+
|
98
|
+
return result
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
# @return [String] The original text representation of the tag.
|
103
|
+
def to_s()
|
104
|
+
return "<?#{name}>"
|
105
|
+
end
|
106
|
+
|
107
|
+
end # class
|
108
|
+
|
109
|
+
|
110
|
+
SectionEndMarker = Struct.new(:name)
|
111
|
+
|
112
|
+
end # module
|
113
|
+
|
114
|
+
end # module
|
115
|
+
|
116
|
+
# End of file
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# File: template-element.rb
|
2
|
+
# Purpose: Implementation of core classes used in the template engine.
|
3
|
+
|
4
|
+
|
5
|
+
require_relative '../exceptions' # Load the custom exception classes.
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
module Macros4Cuke # Module used as a namespace
|
10
|
+
|
11
|
+
|
12
|
+
# Module containing all classes implementing the simple template engine
|
13
|
+
# used internally in Macros4Cuke.
|
14
|
+
module Templating
|
15
|
+
|
16
|
+
# Class used internally by the template engine.
|
17
|
+
# Represents a static piece of text from a template.
|
18
|
+
# A static text is a text that is reproduced verbatim
|
19
|
+
# when rendering a template.
|
20
|
+
class StaticText
|
21
|
+
# The static text extracted from the original template.
|
22
|
+
attr_reader(:source)
|
23
|
+
|
24
|
+
|
25
|
+
# @param aSourceText [String] A piece of text extracted
|
26
|
+
# from the template that must be rendered verbatim.
|
27
|
+
def initialize(aSourceText)
|
28
|
+
@source = aSourceText
|
29
|
+
end
|
30
|
+
|
31
|
+
public
|
32
|
+
|
33
|
+
# Render the static text.
|
34
|
+
# This method has the same signature as the {Engine#render} method.
|
35
|
+
# @return [String] Static text is returned verbatim ("as is")
|
36
|
+
def render(aContextObject, theLocals)
|
37
|
+
return source
|
38
|
+
end
|
39
|
+
end # class
|
40
|
+
|
41
|
+
|
42
|
+
# Class used internally by the template engine.
|
43
|
+
# Represents a comment from a template.
|
44
|
+
# A static text is a text that is reproduced verbatim
|
45
|
+
# when rendering a template.
|
46
|
+
class Comment
|
47
|
+
# The comment as extracted from the original template.
|
48
|
+
attr_reader(:source)
|
49
|
+
|
50
|
+
|
51
|
+
# @param aSourceText [String] A piece of text extracted
|
52
|
+
# from the template that must be rendered verbatim.
|
53
|
+
def initialize(aSourceText)
|
54
|
+
@source = aSourceText
|
55
|
+
end
|
56
|
+
|
57
|
+
public
|
58
|
+
|
59
|
+
# Render the comment.
|
60
|
+
# Comments are rendered as empty text. This is necessary because
|
61
|
+
# Cucumber::RbSupport::RbWorld#steps complains when it sees a comment.
|
62
|
+
# This method has the same signature as the {Engine#render} method.
|
63
|
+
# @return [String] Empty string ("as is")
|
64
|
+
def render(aContextObject, theLocals)
|
65
|
+
return ''
|
66
|
+
end
|
67
|
+
end # class
|
68
|
+
|
69
|
+
|
70
|
+
# Class used internally by the template engine.
|
71
|
+
# Represents an end of line that must be rendered as such.
|
72
|
+
class EOLine
|
73
|
+
|
74
|
+
public
|
75
|
+
|
76
|
+
# Render an end of line.
|
77
|
+
# This method has the same signature as the {Engine#render} method.
|
78
|
+
# @return [String] An end of line marker. Its exact value is OS-dependent.
|
79
|
+
def render(aContextObject, theLocals)
|
80
|
+
return "\n"
|
81
|
+
end
|
82
|
+
end # class
|
83
|
+
|
84
|
+
end # module
|
85
|
+
|
86
|
+
end # module
|
87
|
+
|
88
|
+
# End of file
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# File: unary-element.rb
|
2
|
+
# Purpose: Implementation of the Section and ConditionalSection classes.
|
3
|
+
|
4
|
+
require_relative 'unary-element' # Load the superclass
|
5
|
+
|
6
|
+
|
7
|
+
module Macros4Cuke # Module used as a namespace
|
8
|
+
|
9
|
+
# Base class used internally by the template engine.
|
10
|
+
# The generalization of any element from a template that has one variable
|
11
|
+
# whose actual value influences the rendition.
|
12
|
+
class UnaryElement
|
13
|
+
# The name of the placeholder/variable.
|
14
|
+
attr_reader(:name)
|
15
|
+
|
16
|
+
# @param aVarName [String] The name of the placeholder from a template.
|
17
|
+
def initialize(aVarName)
|
18
|
+
@name = aVarName
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
# This method has the same signature as the {Engine#render} method.
|
24
|
+
# @return [Object] The actual value from the locals or context
|
25
|
+
# that is assigned to the variable.
|
26
|
+
def retrieve_value_from(aContextObject, theLocals)
|
27
|
+
actual_value = theLocals[name]
|
28
|
+
if actual_value.nil? && aContextObject.respond_to?(name.to_sym)
|
29
|
+
actual_value = aContextObject.send(name.to_sym)
|
30
|
+
end
|
31
|
+
|
32
|
+
return actual_value
|
33
|
+
end
|
34
|
+
|
35
|
+
end # class
|
36
|
+
|
37
|
+
end # module
|
38
|
+
|
39
|
+
# End of file
|
@@ -1,9 +1,12 @@
|
|
1
1
|
# File: section_spec.rb
|
2
2
|
|
3
3
|
require_relative '../../spec_helper'
|
4
|
+
require_relative '../../../lib/macros4cuke/templating/template-element'
|
5
|
+
require_relative '../../../lib/macros4cuke/templating/placeholder'
|
4
6
|
|
5
7
|
# Load the classes under test
|
6
|
-
require_relative '../../../lib/macros4cuke/templating/
|
8
|
+
require_relative '../../../lib/macros4cuke/templating/section'
|
9
|
+
|
7
10
|
|
8
11
|
module Macros4Cuke
|
9
12
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: macros4cuke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.03
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11
|
11
|
+
date: 2013-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -114,6 +114,10 @@ files:
|
|
114
114
|
- lib/macros4cuke/macro-step-support.rb
|
115
115
|
- lib/macros4cuke/macro-step.rb
|
116
116
|
- lib/macros4cuke/templating/engine.rb
|
117
|
+
- lib/macros4cuke/templating/placeholder.rb
|
118
|
+
- lib/macros4cuke/templating/section.rb
|
119
|
+
- lib/macros4cuke/templating/template-element.rb
|
120
|
+
- lib/macros4cuke/templating/unary-element.rb
|
117
121
|
- examples/demo/cucumber.yml
|
118
122
|
- examples/demo/features/basic.feature
|
119
123
|
- examples/demo/features/multiline.feature
|