json_builder 3.1.2 → 3.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- json_builder (3.1.2)
4
+ json_builder (3.1.3)
5
5
  activesupport (>= 2.0.0)
6
6
 
7
7
  GEM
@@ -11,7 +11,7 @@ GEM
11
11
  i18n (~> 0.6)
12
12
  multi_json (~> 1.0)
13
13
  i18n (0.6.0)
14
- multi_json (1.1.0)
14
+ multi_json (1.3.5)
15
15
  rake (0.9.2.2)
16
16
  tzinfo (0.3.31)
17
17
 
@@ -13,6 +13,16 @@ class TrueClass
13
13
  end
14
14
 
15
15
  class String
16
+ JS_ESCAPE_MAP = {
17
+ '\\' => '\\\\',
18
+ '</' => '<\/',
19
+ "\r\n" => '\n',
20
+ "\n" => '\n',
21
+ "\r" => '\n',
22
+ '"' => '\\"',
23
+ "'" => "\\'"
24
+ }
25
+
16
26
  def to_builder
17
27
  %("#{json_escape}")
18
28
  end
@@ -20,10 +30,9 @@ class String
20
30
  private
21
31
 
22
32
  def json_escape
23
- self.gsub(/\n/, '\\n').
24
- gsub(/\r/, '\\r').
25
- gsub(/\t/, '\\t').
26
- gsub(/\f/, '\\f')
33
+ gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) { |match|
34
+ JS_ESCAPE_MAP[match]
35
+ }
27
36
  end
28
37
  end
29
38
 
@@ -1,3 +1,3 @@
1
1
  module JSONBuilder
2
- VERSION = '3.1.2'
2
+ VERSION = '3.1.3'
3
3
  end
@@ -39,6 +39,10 @@ class TestMember < Test::Unit::TestCase
39
39
  assert_equal '"hello": "olleh"', member('hello', Dozer.new('hello')).to_s
40
40
  end
41
41
 
42
+ def test_double_quoted_value
43
+ assert_equal '"hello": "\"Hello\" he said"', member('hello', '"Hello" he said').to_s
44
+ end
45
+
42
46
  def test_without_key
43
47
  assert_raises(JSONBuilder::MissingKeyError) { member(nil, true).to_s }
44
48
  end
@@ -64,4 +64,8 @@ class TestValue < Test::Unit::TestCase
64
64
  def test_custom_class
65
65
  assert_equal '"olleh"', value(Dozer.new('hello'))
66
66
  end
67
+
68
+ def test_double_quoted_value
69
+ assert_equal '"\"hello\""', value('"hello"')
70
+ end
67
71
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_builder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
4
  prerelease:
6
- segments:
7
- - 3
8
- - 1
9
- - 2
10
- version: 3.1.2
5
+ version: 3.1.3
11
6
  platform: ruby
12
7
  authors:
13
8
  - Garrett Bjerkhoel
@@ -15,38 +10,30 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2012-04-04 00:00:00 Z
13
+ date: 2012-05-24 00:00:00 Z
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
- prerelease: false
16
+ name: activesupport
22
17
  requirement: &id001 !ruby/object:Gem::Requirement
23
18
  none: false
24
19
  requirements:
25
20
  - - ">="
26
21
  - !ruby/object:Gem::Version
27
- hash: 15
28
- segments:
29
- - 2
30
- - 0
31
- - 0
32
22
  version: 2.0.0
33
- version_requirements: *id001
34
- name: activesupport
35
23
  type: :runtime
36
- - !ruby/object:Gem::Dependency
37
24
  prerelease: false
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: tzinfo
38
28
  requirement: &id002 !ruby/object:Gem::Requirement
39
29
  none: false
40
30
  requirements:
41
31
  - - ">="
42
32
  - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
33
  version: "0"
47
- version_requirements: *id002
48
- name: tzinfo
49
34
  type: :development
35
+ prerelease: false
36
+ version_requirements: *id002
50
37
  description: Rails provides an excellent XML Builder by default to build RSS and ATOM feeds, but nothing to help you build complex and custom JSON data structures. The standard to_json works well, but can get very verbose when you need full control of what is generated. JSON Builder hopes to solve that problem.
51
38
  email:
52
39
  - me@garrettbjerkhoel.com
@@ -93,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
80
  requirements:
94
81
  - - ">="
95
82
  - !ruby/object:Gem::Version
96
- hash: 3
83
+ hash: 4467735550645950409
97
84
  segments:
98
85
  - 0
99
86
  version: "0"
@@ -102,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
89
  requirements:
103
90
  - - ">="
104
91
  - !ruby/object:Gem::Version
105
- hash: 3
92
+ hash: 4467735550645950409
106
93
  segments:
107
94
  - 0
108
95
  version: "0"