Sha256: 98a26ee0837954ff54c35154df6922b51e0f8133372116a219578181824f4ac2

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

require 'command_mapper/types/list'
require 'command_mapper/types/key_value'

module CommandMapper
  module Types
    #
    # Represents a list of `key=value` pairs.
    #
    class KeyValueList < List

      #
      # Initializes the key-value list.
      #
      # @param [String] separator
      #   The list separator character (ex: `,`).
      #
      # @param [String] key_value_separator
      #   The key-value separator (ex: `=`).
      #
      # @param [Hash{Symbol => Object}] kwargs
      #   Additional keyword arguments for {KeyValue#initialize}.
      #
      def initialize(separator: ',', key_value_separator: '=', **kwargs)
        super(
          type:      KeyValue.new(separator: key_value_separator, **kwargs),
          separator: separator
        )
      end

      #
      # Formats the value.
      #
      # @param [Hash, Array((key, value))] value
      #   The list of key-value pairs.
      #
      # @return [String]
      #   The formatted key-value list.
      #
      def format(value)
        super(Array(value).map(&@type.method(:format)))
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
command_mapper-0.1.0 lib/command_mapper/types/key_value_list.rb
command_mapper-0.1.0.pre1 lib/command_mapper/types/key_value_list.rb