postmodern/command_mapper.rb

View on GitHub
lib/command_mapper/types/key_value_list.rb

Summary

Maintainability
A
0 mins
Test Coverage
require_relative 'list'
require_relative '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 to format.
      #
      # @return [String]
      #   The formatted key-value list.
      #
      # @api semipublic
      #
      def format(value)
        super(Array(value).map(&@type.method(:format)))
      end

    end
  end
end