pg_json 0.1.23 → 0.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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!
|