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.
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: