6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/cucumber/ci_environment/variable_expression.rb', line 6
def evaluate(expression, env)
return nil if expression.nil?
begin
expression.gsub(/\${(.*?)(?:(?<!\\)\/(.*)\/(.*))?}/) do
variable = Regexp.last_match(1)
pattern = Regexp.last_match(2)
replacement = Regexp.last_match(3)
value = get_value(variable, env)
raise "Undefined variable #{variable}" if value.nil?
if pattern.nil?
value
else
regexp = Regexp.new(pattern.gsub('\/', '/'))
match = value.match(regexp)
raise "No match for variable #{variable}" if match.nil?
match[1..].each_with_index do |group, i|
replacement = replacement.gsub("\\#{i + 1}", group)
end
replacement
end
end
rescue StandardError
nil
end
end
|