Class: ArelExtensions::Nodes::JsonNode
- Inherits:
-
Function
- Object
- Arel::Nodes::Function
- Function
- ArelExtensions::Nodes::JsonNode
show all
- Defined in:
- lib/arel_extensions/nodes/json.rb
Constant Summary
collapse
- RETURN_TYPE =
:json
Constants inherited
from Function
Function::MBSTRING
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Function
#!=, #==, #as, #convert_to_date_node, #convert_to_datetime_node, #convert_to_node, #convert_to_number, #convert_to_string_node, #expr, #left, #return_type, #right, #type_of_attribute
#cast, #convert_to_node, #imatches, #in, #matches, #not_in, #when
Instance Attribute Details
#dict ⇒ Object
Returns the value of attribute dict.
6
7
8
|
# File 'lib/arel_extensions/nodes/json.rb', line 6
def dict
@dict
end
|
Instance Method Details
#convert_to_json_node(n) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# 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.null
when Arel::SelectManager
Arel.grouping(n)
else
convert_to_node(n)
end
end
|
#get(key) ⇒ Object
13
14
15
|
# File 'lib/arel_extensions/nodes/json.rb', line 13
def get key
JsonGet.new(self,key)
end
|
#group(as_array = true, orders = nil) ⇒ Object
21
22
23
|
# File 'lib/arel_extensions/nodes/json.rb', line 21
def group as_array = true, orders = nil
JsonGroup.new(self,as_array, orders)
end
|
#hash ⇒ Object
25
26
27
|
# File 'lib/arel_extensions/nodes/json.rb', line 25
def hash
[@dict].hash
end
|
#merge(*expr) ⇒ Object
8
9
10
11
|
# 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) ⇒ Object
17
18
19
|
# File 'lib/arel_extensions/nodes/json.rb', line 17
def set key, value
JsonSet.new(self,key,value)
end
|
#type_of_node(v) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/arel_extensions/nodes/json.rb', line 57
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
|