Sha256: c3247fdbadcbe603af43c9a558b99ec77c4fcb0eab35f88238320fea8340f488

Contents?: true

Size: 1.12 KB

Versions: 19

Compression:

Stored size: 1.12 KB

Contents

module Cucumber
  module CiEnvironment
    module VariableExpression
      def evaluate(expression, env)
        return nil if expression.nil?
        begin
          expression.gsub(/\${(.*?)(?:(?<!\\)\/(.*)\/(.*))?}/) do
            variable = $1
            pattern = $2
            replacement = $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..-1].each_with_index do |group, i|
                replacement = replacement.gsub("\\#{i+1}", group)
              end
              replacement
            end
          end
        rescue
          nil
        end
      end

      def get_value(variable, env)
        if variable.index('*')
          env.each do |name, value|
            return value if Regexp.new(variable.gsub('*', '.*')) =~ name
          end
        end
        env[variable]
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 3 rubygems

Version Path
cucumber-ci-environment-10.0.1 lib/cucumber/ci_environment/variable_expression.rb
honeybadger-5.4.0 vendor/bundle/ruby/3.2.0/gems/cucumber-ci-environment-9.2.0/lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-10.0.0 lib/cucumber/ci_environment/variable_expression.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/cucumber-ci-environment-9.2.0/lib/cucumber/ci_environment/variable_expression.rb
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-ci-environment-9.1.0/lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-9.2.0 lib/cucumber/ci_environment/variable_expression.rb
rubypitaya-3.12.4 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-ci-environment-9.1.0/lib/cucumber/ci_environment/variable_expression.rb
rubypitaya-3.12.3 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-ci-environment-9.1.0/lib/cucumber/ci_environment/variable_expression.rb
rubypitaya-3.12.2 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-ci-environment-9.1.0/lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-9.1.0 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-9.0.4 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-9.0.3 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-9.0.2 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-9.0.1 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-9.0.0 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-8.1.0 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-8.0.1 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-8.0.0 lib/cucumber/ci_environment/variable_expression.rb
cucumber-ci-environment-7.0.1 lib/cucumber/ci_environment/variable_expression.rb