class ArelExtensions::Nodes::JsonNode
Constants
- RETURN_TYPE
Attributes
dict[RW]
Public Instance Methods
convert_to_json_node(n)
click to toggle source
# File lib/arel_extensions/nodes/json.rb, line 29 def convert_to_json_node(n) case n when JsonNode n.dict when Array n.map{|e| (e.is_a?(Array) || e.is_a?(Hash)) ? Json.new(e) : convert_to_json_node(e) } when Hash n.reduce({}){|acc,v| acc[convert_to_json_node(v[0])] = (v[1].is_a?(Array) || v[1].is_a?(Hash)) ? Json.new(v[1]) : convert_to_json_node(v[1]) acc } when String, Numeric, TrueClass, FalseClass convert_to_node(n) when Date convert_to_node(n.strftime("%Y-%m-%d")) when DateTime, Time convert_to_node(n.strftime("%Y-%m-%dT%H:%M:%S.%L%:z")) when NilClass Arel.sql('null') else convert_to_node(n) end end
get(key)
click to toggle source
# File lib/arel_extensions/nodes/json.rb, line 13 def get key JsonGet.new(self,key) end
group(as_array = true, orders = nil)
click to toggle source
# File lib/arel_extensions/nodes/json.rb, line 21 def group as_array = true, orders = nil JsonGroup.new(self,as_array, orders) end
hash()
click to toggle source
# File lib/arel_extensions/nodes/json.rb, line 25 def hash [@dict].hash end
merge(*expr)
click to toggle source
# File lib/arel_extensions/nodes/json.rb, line 8 def merge *expr args = [self] + expr.map{|e| Json.new(e)} JsonMerge.new(args) end
set(key, value)
click to toggle source
# File lib/arel_extensions/nodes/json.rb, line 17 def set key, value JsonSet.new(self,key,value) end
type_of_node(v)
click to toggle source
# File lib/arel_extensions/nodes/json.rb, line 55 def type_of_node(v) if v.is_a?(Arel::Attributes::Attribute) self.type_of_attribute(v) elsif v.respond_to?(:return_type) v.return_type elsif v.nil? :nil else :string end end