Sha256: ee3622ce977b8755693f1a12e8af35618c3a4310c021e91d9c3e1517a5d502d6

Contents?: true

Size: 1.21 KB

Versions: 20

Compression:

Stored size: 1.21 KB

Contents

module Dolly
  class Property
    attr_writer :value
    attr_accessor :name

    def initialize opts = {}
      @class_name = opts.delete(:class_name) if opts.present?
      @name = opts.delete(:name).to_s
      @default = opts.delete(:default)
      warn 'There are some unprocesed options' if opts.present?
    end

    def value
      return @default if @value.nil?
      return @value unless self_klass

      klass_sym = :"#{self_klass.name.underscore}_#{__method__}"

      return self_klass.new @value unless self.respond_to?(klass_sym)

      self.send klass_sym
    end

    def array_value
      @value.to_a
    end

    def hash_value
      @value.to_h
    end

    def string_value
      @value.to_s
    end

    def integer_value
      @value.to_i
    end

    def float_value
      @value.to_f
    end

    def true_class_value
      truthy_value?
    end

    def false_class_value
      truthy_value?
    end

    def boolean?
      self_klass == TrueClass || self_klass == FalseClass
    end

    private
    def truthy_value?
      @value =~ /true/ || @value === true
    end

    def self_klass
      return unless @class_name
      @class_name.is_a?(Class)? @class_name : @class_name.constantize
    end

  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
dolly-0.7.3 lib/dolly/property.rb
dolly-0.7.2 lib/dolly/property.rb
dolly-0.7.1 lib/dolly/property.rb
dolly-0.7.0 lib/dolly/property.rb
dolly-0.6.2 lib/dolly/property.rb
dolly-0.6.1 lib/dolly/property.rb
dolly-0.6.0 lib/dolly/property.rb
dolly-0.5.7 lib/dolly/property.rb
dolly-0.5.6 lib/dolly/property.rb
dolly-0.5.5 lib/dolly/property.rb
dolly-0.5.4 lib/dolly/property.rb
dolly-0.5.3 lib/dolly/property.rb
dolly-0.5.2 lib/dolly/property.rb
dolly-0.5.1 lib/dolly/property.rb
dolly-0.5.0 lib/dolly/property.rb
dolly-0.4.0 lib/dolly/property.rb
dolly-0.3.0 lib/dolly/property.rb
dolly-0.2.0 lib/dolly/property.rb
dolly-0.1.0 lib/dolly/property.rb
dolly-0.0.1 lib/dolly/property.rb