2018-12-13 13:39:08 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-03-27 19:54:05 +05:30
|
|
|
module Gitlab
|
|
|
|
module Ci
|
|
|
|
module Pipeline
|
|
|
|
module Expression
|
|
|
|
module Lexeme
|
|
|
|
class Variable < Lexeme::Value
|
|
|
|
PATTERN = /\$(?<name>\w+)/.freeze
|
|
|
|
|
2020-10-24 23:57:45 +05:30
|
|
|
def evaluate(variables = {})
|
2022-01-26 12:08:38 +05:30
|
|
|
unless variables.is_a?(ActiveSupport::HashWithIndifferentAccess)
|
|
|
|
variables = variables.with_indifferent_access
|
|
|
|
end
|
|
|
|
|
|
|
|
variables.fetch(@value, nil)
|
2018-03-27 19:54:05 +05:30
|
|
|
end
|
|
|
|
|
2020-10-24 23:57:45 +05:30
|
|
|
def inspect
|
|
|
|
"$#{@value}"
|
2018-03-27 19:54:05 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
def self.build(string)
|
|
|
|
new(string.match(PATTERN)[:name])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|