Sha256: 8e7969ea931d0df6a03819b1e598fc0fe3f08677d6a9c27db89b1ab988b2ca95

Contents?: true

Size: 970 Bytes

Versions: 2

Compression:

Stored size: 970 Bytes

Contents

module Cucumber
  module CucumberExpressions
    class Parameter
      attr_reader :type_name, :type, :capture_group_regexps

      # Create a new Parameter
      #
      # @param type_name [Array] array of class or type name to use in {arg:type_name}
      # @param capture_group_regexps [Array] list of regexps for capture groups.
      # @param transformer lambda that transforms a String to (possibly) another type
      #
      def initialize(type_name, type, capture_group_regexps, transformer)
        @type_name, @type, @transformer = type_name, type, transformer
        @capture_group_regexps = string_array(capture_group_regexps)
      end

      def transform(value)
        @transformer.call(value)
      end

      private

      def string_array(capture_group_regexps)
        array = capture_group_regexps.is_a?(Array) ? capture_group_regexps : [capture_group_regexps]
        array.map { |r| r.is_a?(String) ? r : r.source }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cucumber-expressions-2.0.1 lib/cucumber/cucumber_expressions/parameter.rb
cucumber-expressions-2.0.0 lib/cucumber/cucumber_expressions/parameter.rb