activerecord-postgres-hstore 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
0.7.2 / 2013-02-07
|
2
|
+
|
3
|
+
* Bug fixes
|
4
|
+
|
5
|
+
* Properly quote/escape double quotes https://github.com/engageis/activerecord-postgres-hstore/issues/78
|
6
|
+
|
7
|
+
* Enhancements
|
8
|
+
|
9
|
+
* Delegate hstore dumping/loading to https://github.com/seamusabshere/pg-hstore
|
10
|
+
* Add a CHANGELOG!
|
@@ -4,7 +4,7 @@ $:.unshift lib unless $:.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "activerecord-postgres-hstore"
|
7
|
-
s.version = "0.7.
|
7
|
+
s.version = "0.7.2"
|
8
8
|
|
9
9
|
s.platform = Gem::Platform::RUBY
|
10
10
|
s.license = "MIT"
|
@@ -16,8 +16,9 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.required_ruby_version = ">= 1.8.7"
|
17
17
|
s.required_rubygems_version = ">= 1.3.6"
|
18
18
|
|
19
|
-
s.add_dependency "rails"
|
19
|
+
s.add_dependency "rails", ">= 3.1"
|
20
20
|
s.add_dependency "rake"
|
21
|
+
s.add_dependency 'pg-hstore', '>=1.1.5'
|
21
22
|
s.add_development_dependency "bundler"
|
22
23
|
s.add_development_dependency "rdoc"
|
23
24
|
s.add_development_dependency "rspec", "~> 2.11"
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'pg_hstore'
|
2
|
+
|
1
3
|
module ActiveRecord
|
2
4
|
module Coders
|
3
5
|
class Hstore
|
@@ -22,39 +24,13 @@ module ActiveRecord
|
|
22
24
|
end
|
23
25
|
|
24
26
|
private
|
25
|
-
# Escapes values such that they will work in an hstore string
|
26
|
-
def hstore_escape(str)
|
27
|
-
return 'NULL' if str.nil?
|
28
|
-
return str if str =~ /^".*"$/
|
29
|
-
'"%s"' % str
|
30
|
-
end
|
31
27
|
|
32
28
|
def to_hstore obj
|
33
|
-
|
34
|
-
obj.map do |idx, val|
|
35
|
-
"%s=>%s" % [hstore_escape(idx), hstore_escape(val)]
|
36
|
-
end * ","
|
37
|
-
end
|
38
|
-
|
39
|
-
def hstore_pair
|
40
|
-
quoted_string = /"[^"\\]*(?:\\.[^"\\]*)*"/
|
41
|
-
unquoted_string = /[^\s=,][^\s=,\\]*(?:\\.[^\s=,\\]*|=[^,>])*/
|
42
|
-
string = /(#{quoted_string}|#{unquoted_string})/
|
43
|
-
/#{string}\s*=>\s*#{string}/
|
29
|
+
PgHstore.dump obj, true
|
44
30
|
end
|
45
31
|
|
46
32
|
def from_hstore hstore
|
47
|
-
|
48
|
-
token_pairs = token_pairs.map { |k,v|
|
49
|
-
[k,v].map { |t|
|
50
|
-
case t
|
51
|
-
when nil then t
|
52
|
-
when /\A"(.*)"\Z/m then $1.gsub(/\\(.)/, '\1')
|
53
|
-
else t.gsub(/\\(.)/, '\1')
|
54
|
-
end
|
55
|
-
}
|
56
|
-
}
|
57
|
-
Hash[ token_pairs ]
|
33
|
+
PgHstore.load hstore, false
|
58
34
|
end
|
59
35
|
end
|
60
36
|
end
|
@@ -82,6 +82,17 @@ describe ActiveRecord::Coders::Hstore do
|
|
82
82
|
let(:value){ {'a' => 'a'} }
|
83
83
|
it{ should eql('"a"=>"a"') }
|
84
84
|
end
|
85
|
+
|
86
|
+
context 'when value has double quotes' do
|
87
|
+
let(:value){ {"a" => "\"a\""} }
|
88
|
+
it{ should eql(%q("a"=>"\"a\"")) }
|
89
|
+
end
|
90
|
+
|
91
|
+
# @seamusabshere not sure about this test
|
92
|
+
# context 'when value has double-escaped double quotes' do
|
93
|
+
# let(:value){ {"a" => "\\\"a\\\""} }
|
94
|
+
# it{ should eql(%q("a"=>"\"a\"")) }
|
95
|
+
# end
|
85
96
|
end
|
86
97
|
|
87
98
|
describe ".load" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-postgres-hstore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-02-
|
13
|
+
date: 2013-02-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '3.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,7 +27,7 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ! '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: '
|
30
|
+
version: '3.1'
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: rake
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,6 +44,22 @@ dependencies:
|
|
44
44
|
- - ! '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: pg-hstore
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.1.5
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.1.5
|
47
63
|
- !ruby/object:Gem::Dependency
|
48
64
|
name: bundler
|
49
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,6 +119,7 @@ files:
|
|
103
119
|
- .gitignore
|
104
120
|
- .rspec
|
105
121
|
- .travis.yml
|
122
|
+
- CHANGELOG
|
106
123
|
- Gemfile
|
107
124
|
- LICENSE
|
108
125
|
- README.md
|