json_builder 3.1.2 → 3.1.3

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.
@@ -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"