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.
Files changed (3) hide show
  1. data/bin/pg_json +5 -3
  2. data/lib/pg_json/sequel/pg_json.rb +48 -29
  3. 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
- "'{\"__type__\":\"time\",\"value\":\"'||to_char(data, 'HH24:MI:SS')::text||'\"}'"
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
- 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
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
- if v[:__type__]
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!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: