Sha256: e84fe8b55da2167796598a5514de4aa39ca9db71510753313a73f7d0d37ad83d

Contents?: true

Size: 787 Bytes

Versions: 9

Compression:

Stored size: 787 Bytes

Contents

module Synchronisable
  # Provides a set of helper methods
  # to describe user input.
  #
  # @api private
  #
  # @see Synchronisable::InputParser
  class InputDescriptor
    attr_reader :data

    def initialize(data)
      @data = data
    end

    def empty?
      @data.blank?
    end

    def params?
      @data.is_a?(Hash)
    end

    def remote_id?
      @data.is_a?(String)
    end

    def local_id?
      @data.is_a?(Integer)
    end

    def array_of_ids?
       enumerable? && (
        first_element.is_a?(String) ||
        first_element.is_a?(Integer)
      )
    end

    def element_class
      first_element.try(:class)
    end

    private

    def first_element
      @data.try(:first)
    end

    def enumerable?
      @data.is_a?(Enumerable)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
synchronisable-1.1.3 lib/synchronisable/input_descriptor.rb
synchronisable-1.1.2 lib/synchronisable/input_descriptor.rb
synchronisable-1.1.1 lib/synchronisable/input_descriptor.rb
synchronisable-1.1.0 lib/synchronisable/input_descriptor.rb
synchronisable-1.0.9 lib/synchronisable/input_descriptor.rb
synchronisable-1.0.8 lib/synchronisable/input_descriptor.rb
synchronisable-1.0.7 lib/synchronisable/input_descriptor.rb
synchronisable-1.0.6 lib/synchronisable/input_descriptor.rb
synchronisable-1.0.5 lib/synchronisable/input_descriptor.rb