Sha256: 715e0e0d0847fefe26aac6e87b1a41fb7c94cd81ebf1cfe9633d287bc3ffa3d9

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

module Arrest
  class Attribute
    attr_accessor :name, :actions, :clazz, :json_name

    def initialize name, clazz, actions = nil
      @name = name.to_sym
      @actions = actions || [:create, :retrieve, :update, :delete]
      @clazz = clazz
      @json_name = Source.json_key_converter.key_to_json(name).to_sym
    end

    def read_only?
      @actions == [:retrieve]
    end

    def mutable?
      @actions.include?(:create) || @actions.include?(:update)
    end

    def from_hash(parent, value)
      return if value == nil

      if @clazz.respond_to?(:convert)
        return @clazz.convert(value)
      end

      converter = CONVERTER[@clazz]
      if converter == nil
        puts "No converter for: #{@clazz.name}"
        converter = IdentConv
      end
      converter.convert value
    end


    def to_hash value
      return nil unless value != nil

      if @clazz.respond_to?(:mk_json)
        return @clazz.mk_json(value)
      end

      converter = CONVERTER[@clazz]
      if converter == nil
        puts "No converter for: #{@clazz.name}"
        converter = IdentConv
      end
      converter.mk_json value
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
arrest-0.0.85 lib/arrest/attributes/attribute.rb
arrest-0.0.84 lib/arrest/attributes/attribute.rb
arrest-0.0.83.crud lib/arrest/attributes/attribute.rb