Sha256: 0ecca3e43dd01334d11b4660a2f72e40e9e40632e781d032f57b0b03da64002b

Contents?: true

Size: 1.81 KB

Versions: 12

Compression:

Stored size: 1.81 KB

Contents

# frozen_string_literal: true

require 'easy/jsonapi/item'
require 'easy/jsonapi/utility'

module JSONAPI
  # A generic name->value query pair
  class NameValuePair < JSONAPI::Item
    
    # @param name The name of the pair
    # @param value The value of the pair
    def initialize(name, value)
      name = name.to_s.gsub('-', '_')
      super({ name: name.to_s, value: value })
    end

    # @return [String] The name of the name->val pair
    def name
      @item[:name]
    end

    # @raise RunTimeError You shouldn't be able to update the name of a
    #   NameValuePair
    def name=(_)
      raise 'Cannot change the name of NameValuePair Objects'
    end

    # @return [String] The value of the name->val pair
    def value
      @item[:value]
    end

    # @param new_value [String | Symbol]  The name->val pair value
    def value=(new_value)
      @item[:value] = new_value
    end

    # Represents a pair as a string
    def to_s
      v = value
      val_str = case v
                when Array
                  val_str = '['
                  first = true
                  v.each do |val|
                    if first
                      val_str += "\"#{val}\""
                      first = false
                    else
                      val_str += ", \"#{val}\""
                    end
                  end
                  val_str += ']'
                when String
                  "\"#{v}\""
                when JSONAPI::NameValuePair
                  "{ #{v} }"
                else
                  v
                end
      "\"#{name}\": #{val_str}"
    end

    # Represents a pair as a hash
    def to_h
      { name.to_sym => JSONAPI::Utility.to_h_value(value) }
    end

    # prevent users and sublcasses from accessing Parent's #method_missing
    private :method_missing, :item, :item=
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
easy-jsonapi-1.0.11 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.10 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.9 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.8 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.7 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.6 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.5 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.4 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.3 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.2 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.1 lib/easy/jsonapi/name_value_pair.rb
easy-jsonapi-1.0.0 lib/easy/jsonapi/name_value_pair.rb