Sha256: 15eb479dcb26e67ab3acf484a2fddc4f2f463d4a7d53b439fb79e2fc6e575e52
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
module Dolly class Property attr_writer :value attr_accessor :name attr_reader :class_name, :default def initialize opts = {} @class_name = opts.delete(:class_name) if opts.present? @name = opts.delete(:name).to_s @default = opts.delete(:default) @value = @default if @default warn 'There are some unprocessed options!' if opts.present? end def value #TODO: tets if this actually sets `doc[ "name" ]` 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 date_value @value.to_date end def time_value @value.to_time end def date_time_value @value.to_datetime 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dolly-0.9.0 | lib/dolly/property.rb |