Method: LazyGraph::Node#build_caster

Defined in:
lib/lazy_graph/node.rb

#build_casterObject



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/lazy_graph/node.rb', line 117

def build_caster
  if @is_decimal
    ->(value) { value.is_a?(BigDecimal) ? value : value.to_d }
  elsif @is_date
    lambda { |value|
      if value.is_a?(String)
        Date.parse(value)
      else
        value.is_a?(Symbol) ? Date.parse(value.to_s) : value
      end
    }
  elsif @is_boolean
    lambda do |value|
      if value.is_a?(TrueClass) || value.is_a?(FalseClass)
        value
      else
        value.is_a?(MissingValue) ? false : !!value
      end
    end
  elsif @is_timestamp
    lambda do |value|
      case value
      when String
        DateTime.parse(value).to_time
      when Numeric
        Time.at(value)
      else
        value
      end
    end
  elsif @is_string
    lambda(&:to_s)
  else
    ->(value) { value }
  end
end