Sha256: 88d1defe6625b6bd139cbce6281c63d2af1b6c0c736192737b70e923690b6462

Contents?: true

Size: 791 Bytes

Versions: 1

Compression:

Stored size: 791 Bytes

Contents

module RestMan
  class ParamsArray

    # :include: _doc/lib/restman/params_array/process_pair.rdoc
    class ProcessPair < ActiveMethod::Base

      argument :pair

      def call
        case pair
        when Hash
          convert_hash_pair_to_array
        when Array
          parse_array_pair
        else
          ProcessPair.call(pair.to_a)
        end
      end

      private

      def convert_hash_pair_to_array
        if pair.length != 1
          raise ArgumentError.new("Bad # of fields for pair: #{pair.inspect}")
        end

        pair.to_a.fetch(0)
      end

      def parse_array_pair
        if pair.length > 2
          raise ArgumentError.new("Bad # of fields for pair: #{pair.inspect}")
        end
        [pair.fetch(0), pair[1]]
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rest-man-1.1.0 lib/restman/params_array/process_pair.rb