pg_json 0.1.23 → 0.1.24
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/pg_json +5 -3
- data/lib/pg_json/sequel/pg_json.rb +48 -29
- metadata +1 -1
data/bin/pg_json
CHANGED
@@ -81,18 +81,20 @@ simple :text do
|
|
81
81
|
end
|
82
82
|
simple :date do
|
83
83
|
# "'\"'||to_char(data, 'YYYY-MM-DD')::text||'\"'"
|
84
|
-
"'{\"__type__\":\"date\",\"value\":\"'||to_char(data, 'YYYY-MM-DD')::text||'\"}'"
|
84
|
+
# "'{\"__type__\":\"date\",\"value\":\"'||to_char(data, 'YYYY-MM-DD')::text||'\"}'"
|
85
|
+
"'date:'||to_char(data, 'YYYY-MM-DD')"
|
85
86
|
end
|
86
87
|
simple :time do
|
87
88
|
# "'\"'||to_char(data, 'HH24:MI:SS')::text||'\"'"
|
88
|
-
"'
|
89
|
+
"'time:'||to_char(data, 'HH24:MI:SS')"
|
89
90
|
end
|
90
91
|
# simple :timestamp do
|
91
92
|
# # "extract(epoch from data)::integer::text"
|
92
93
|
# "'{\"__type__\":\"timestamp\",\"value\":'||extract(epoch from data)::integer::text||'}'"
|
93
94
|
# end
|
94
95
|
simple :timestamp do
|
95
|
-
"'{\"__type__\":\"timestamp\",\"value\":\"'||to_char(data, 'YYYY-MM-DD\"T\"HH24:MI:SS\"+02:00\"')||'\"}'"
|
96
|
+
# "'{\"__type__\":\"timestamp\",\"value\":\"'||to_char(data, 'YYYY-MM-DD\"T\"HH24:MI:SS\"+02:00\"')||'\"}'"
|
97
|
+
"'timestamp:'||to_char(data, 'YYYY-MM-DD\"T\"HH24:MI:SS\"+02:00\"')"
|
96
98
|
end
|
97
99
|
|
98
100
|
while composite = ARGV.slice!(0)
|
@@ -1,44 +1,63 @@
|
|
1
1
|
require "date"
|
2
|
-
|
3
|
-
JSON_TYPES = {} unless defined? JSON_TYPES
|
4
|
-
JSON_TYPES[:date] = lambda do |v|
|
5
|
-
|
6
|
-
end
|
7
|
-
JSON_TYPES[:time] = lambda do |v|
|
8
|
-
|
9
|
-
end
|
10
|
-
# JSON_TYPES[:datetime] = lambda do |v|
|
11
|
-
# v.nil? ? nil : v.to_datetime
|
2
|
+
#
|
3
|
+
# JSON_TYPES = {} unless defined? JSON_TYPES
|
4
|
+
# JSON_TYPES[:date] = lambda do |v|
|
5
|
+
# v.nil? ? nil : v.to_date
|
6
|
+
# end
|
7
|
+
# JSON_TYPES[:time] = lambda do |v|
|
8
|
+
# v.nil? ? nil : v.to_time
|
9
|
+
# end
|
10
|
+
# # JSON_TYPES[:datetime] = lambda do |v|
|
11
|
+
# # v.nil? ? nil : v.to_datetime
|
12
|
+
# # end
|
13
|
+
# JSON_TYPES[:timestamp] = lambda do |v|
|
14
|
+
# # format '2012-04-21T00:00:00+0200'
|
15
|
+
# v.nil? ? nil : DateTime.parse(v).to_time
|
12
16
|
# end
|
13
|
-
JSON_TYPES[:timestamp] = lambda do |v|
|
14
|
-
# format '2012-04-21T00:00:00+0200'
|
15
|
-
v.nil? ? nil : DateTime.parse(v).to_time
|
16
|
-
end
|
17
17
|
|
18
18
|
class Hash
|
19
19
|
def json_typify!
|
20
|
-
replacements = []
|
21
20
|
self.each do |k, v|
|
22
21
|
if v.is_a? Hash
|
23
|
-
|
24
|
-
if v[:value]
|
25
|
-
# puts "::: #{v.inspect}"
|
26
|
-
replacements << [k, JSON_TYPES[v[:__type__].to_sym].call(v[:value])]
|
27
|
-
else
|
28
|
-
replacements << [k, nil]
|
29
|
-
end
|
30
|
-
else
|
31
|
-
v.json_typify!
|
32
|
-
end
|
22
|
+
v.json_typify!
|
33
23
|
elsif v.is_a? Array
|
34
24
|
v.json_typify!
|
25
|
+
else
|
26
|
+
if !v.nil? && v.is_a? String
|
27
|
+
if m = (v =~ /^date:/)
|
28
|
+
self[k] = v[5..-1]
|
29
|
+
elsif m = (v =~ /^timestamp:/)
|
30
|
+
self[k] = v[10..-1]
|
31
|
+
elsif m = (v =~ /^time:/)
|
32
|
+
self[k] = v[5..-1]
|
33
|
+
end
|
34
|
+
end
|
35
35
|
end
|
36
36
|
end
|
37
|
-
replacements.each do |r|
|
38
|
-
k, v = r
|
39
|
-
self[k] = v
|
40
|
-
end
|
41
37
|
end
|
38
|
+
# def json_typify!
|
39
|
+
# replacements = []
|
40
|
+
# self.each do |k, v|
|
41
|
+
# if v.is_a? Hash
|
42
|
+
# if v[:__type__]
|
43
|
+
# if v[:value]
|
44
|
+
# # puts "::: #{v.inspect}"
|
45
|
+
# replacements << [k, JSON_TYPES[v[:__type__].to_sym].call(v[:value])]
|
46
|
+
# else
|
47
|
+
# replacements << [k, nil]
|
48
|
+
# end
|
49
|
+
# else
|
50
|
+
# v.json_typify!
|
51
|
+
# end
|
52
|
+
# elsif v.is_a? Array
|
53
|
+
# v.json_typify!
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
# replacements.each do |r|
|
57
|
+
# k, v = r
|
58
|
+
# self[k] = v
|
59
|
+
# end
|
60
|
+
# end
|
42
61
|
|
43
62
|
def recursively_symbolize_keys!
|
44
63
|
self.symbolize_keys!
|