jsonbuilder 0.3.0 → 0.3.1
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.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/jsonbuilder.gemspec +7 -8
- data/lib/builder/json_format.rb +2 -1
- metadata +19 -7
- data/lib/patch/active_support_json_decode.rb +0 -87
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
gem.email = 'nov@matake.jp'
|
11
11
|
gem.homepage = 'http://github.com/nov/jsonbuilder'
|
12
12
|
gem.authors = ['nov matake']
|
13
|
-
gem.add_dependency 'activesupport'
|
13
|
+
gem.add_dependency 'activesupport', '>=2.3.2'
|
14
14
|
gem.add_development_dependency 'rspec'
|
15
15
|
gem.add_development_dependency 'rcov'
|
16
16
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/jsonbuilder.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{jsonbuilder}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["nov matake"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-08-11}
|
13
13
|
s.description = %q{Builder::XmlMarkup like JsonBuilder}
|
14
14
|
s.email = %q{nov@matake.jp}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -30,7 +30,6 @@ Gem::Specification.new do |s|
|
|
30
30
|
"lib/ext/stackable_array.rb",
|
31
31
|
"lib/ext/stackable_hash.rb",
|
32
32
|
"lib/jsonbuilder.rb",
|
33
|
-
"lib/patch/active_support_json_decode.rb",
|
34
33
|
"spec/builder/array_mode_spec.rb",
|
35
34
|
"spec/builder/hash_structure_spec.rb",
|
36
35
|
"spec/builder/json_format_spec.rb",
|
@@ -43,7 +42,7 @@ Gem::Specification.new do |s|
|
|
43
42
|
s.homepage = %q{http://github.com/nov/jsonbuilder}
|
44
43
|
s.rdoc_options = ["--charset=UTF-8"]
|
45
44
|
s.require_paths = ["lib"]
|
46
|
-
s.rubygems_version = %q{1.3.
|
45
|
+
s.rubygems_version = %q{1.3.7}
|
47
46
|
s.summary = %q{Builder::XmlMarkup like JsonBuilder}
|
48
47
|
s.test_files = [
|
49
48
|
"spec/builder/array_mode_spec.rb",
|
@@ -59,17 +58,17 @@ Gem::Specification.new do |s|
|
|
59
58
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
60
59
|
s.specification_version = 3
|
61
60
|
|
62
|
-
if Gem::Version.new(Gem::
|
63
|
-
s.add_runtime_dependency(%q<activesupport>, [">=
|
61
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
62
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.2"])
|
64
63
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
65
64
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
66
65
|
else
|
67
|
-
s.add_dependency(%q<activesupport>, [">=
|
66
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.2"])
|
68
67
|
s.add_dependency(%q<rspec>, [">= 0"])
|
69
68
|
s.add_dependency(%q<rcov>, [">= 0"])
|
70
69
|
end
|
71
70
|
else
|
72
|
-
s.add_dependency(%q<activesupport>, [">=
|
71
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.2"])
|
73
72
|
s.add_dependency(%q<rspec>, [">= 0"])
|
74
73
|
s.add_dependency(%q<rcov>, [">= 0"])
|
75
74
|
end
|
data/lib/builder/json_format.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 17
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- nov matake
|
@@ -14,28 +15,34 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-08-11 00:00:00 +09:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: activesupport
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 7
|
27
30
|
segments:
|
28
|
-
-
|
29
|
-
|
31
|
+
- 2
|
32
|
+
- 3
|
33
|
+
- 2
|
34
|
+
version: 2.3.2
|
30
35
|
type: :runtime
|
31
36
|
version_requirements: *id001
|
32
37
|
- !ruby/object:Gem::Dependency
|
33
38
|
name: rspec
|
34
39
|
prerelease: false
|
35
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
36
42
|
requirements:
|
37
43
|
- - ">="
|
38
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
39
46
|
segments:
|
40
47
|
- 0
|
41
48
|
version: "0"
|
@@ -45,9 +52,11 @@ dependencies:
|
|
45
52
|
name: rcov
|
46
53
|
prerelease: false
|
47
54
|
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
48
56
|
requirements:
|
49
57
|
- - ">="
|
50
58
|
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
51
60
|
segments:
|
52
61
|
- 0
|
53
62
|
version: "0"
|
@@ -76,7 +85,6 @@ files:
|
|
76
85
|
- lib/ext/stackable_array.rb
|
77
86
|
- lib/ext/stackable_hash.rb
|
78
87
|
- lib/jsonbuilder.rb
|
79
|
-
- lib/patch/active_support_json_decode.rb
|
80
88
|
- spec/builder/array_mode_spec.rb
|
81
89
|
- spec/builder/hash_structure_spec.rb
|
82
90
|
- spec/builder/json_format_spec.rb
|
@@ -95,23 +103,27 @@ rdoc_options:
|
|
95
103
|
require_paths:
|
96
104
|
- lib
|
97
105
|
required_ruby_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
98
107
|
requirements:
|
99
108
|
- - ">="
|
100
109
|
- !ruby/object:Gem::Version
|
110
|
+
hash: 3
|
101
111
|
segments:
|
102
112
|
- 0
|
103
113
|
version: "0"
|
104
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
105
116
|
requirements:
|
106
117
|
- - ">="
|
107
118
|
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
108
120
|
segments:
|
109
121
|
- 0
|
110
122
|
version: "0"
|
111
123
|
requirements: []
|
112
124
|
|
113
125
|
rubyforge_project:
|
114
|
-
rubygems_version: 1.3.
|
126
|
+
rubygems_version: 1.3.7
|
115
127
|
signing_key:
|
116
128
|
specification_version: 3
|
117
129
|
summary: Builder::XmlMarkup like JsonBuilder
|
@@ -1,87 +0,0 @@
|
|
1
|
-
# Copy of rails 2.3.2 ActiveSupport::JSON since 2.2.2 doesn't correctly decode unicode.
|
2
|
-
require 'yaml'
|
3
|
-
require 'strscan'
|
4
|
-
require 'active_support/core_ext'
|
5
|
-
require 'active_support/json'
|
6
|
-
|
7
|
-
silence_warnings {
|
8
|
-
module ActiveSupport
|
9
|
-
module JSON
|
10
|
-
class ParseError < StandardError
|
11
|
-
end
|
12
|
-
|
13
|
-
class << self
|
14
|
-
# Converts a JSON string into a Ruby object.
|
15
|
-
def decode(json)
|
16
|
-
YAML.load(convert_json_to_yaml(json))
|
17
|
-
rescue ArgumentError => e
|
18
|
-
raise ParseError, "Invalid JSON string"
|
19
|
-
end
|
20
|
-
|
21
|
-
protected
|
22
|
-
# matches YAML-formatted dates
|
23
|
-
DATE_REGEX = /^(?:\d{4}-\d{2}-\d{2}|\d{4}-\d{1,2}-\d{1,2}[ \t]+\d{1,2}:\d{2}:\d{2}(\.[0-9]*)?(([ \t]*)Z|[-+]\d{2}?(:\d{2})?)?)$/
|
24
|
-
|
25
|
-
# Ensure that ":" and "," are always followed by a space
|
26
|
-
def convert_json_to_yaml(json) #:nodoc:
|
27
|
-
scanner, quoting, marks, pos, times = StringScanner.new(json), false, [], nil, []
|
28
|
-
while scanner.scan_until(/(\\['"]|['":,\\]|\\.)/)
|
29
|
-
case char = scanner[1]
|
30
|
-
when '"', "'"
|
31
|
-
if !quoting
|
32
|
-
quoting = char
|
33
|
-
pos = scanner.pos
|
34
|
-
elsif quoting == char
|
35
|
-
if json[pos..scanner.pos-2] =~ DATE_REGEX
|
36
|
-
# found a date, track the exact positions of the quotes so we can remove them later.
|
37
|
-
# oh, and increment them for each current mark, each one is an extra padded space that bumps
|
38
|
-
# the position in the final YAML output
|
39
|
-
total_marks = marks.size
|
40
|
-
times << pos+total_marks << scanner.pos+total_marks
|
41
|
-
end
|
42
|
-
quoting = false
|
43
|
-
end
|
44
|
-
when ":",","
|
45
|
-
marks << scanner.pos - 1 unless quoting
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
if marks.empty?
|
50
|
-
json.gsub(/\\([\\\/]|u[[:xdigit:]]{4})/) do
|
51
|
-
ustr = $1
|
52
|
-
if ustr.starts_with?('u')
|
53
|
-
[ustr[1..-1].to_i(16)].pack("U")
|
54
|
-
elsif ustr == '\\'
|
55
|
-
'\\\\'
|
56
|
-
else
|
57
|
-
ustr
|
58
|
-
end
|
59
|
-
end
|
60
|
-
else
|
61
|
-
left_pos = [-1].push(*marks)
|
62
|
-
right_pos = marks << scanner.pos + scanner.rest_size
|
63
|
-
output = []
|
64
|
-
left_pos.each_with_index do |left, i|
|
65
|
-
scanner.pos = left.succ
|
66
|
-
output << scanner.peek(right_pos[i] - scanner.pos + 1).gsub(/\\([\\\/]|u[[:xdigit:]]{4})/) do
|
67
|
-
ustr = $1
|
68
|
-
if ustr.starts_with?('u')
|
69
|
-
[ustr[1..-1].to_i(16)].pack("U")
|
70
|
-
elsif ustr == '\\'
|
71
|
-
'\\\\'
|
72
|
-
else
|
73
|
-
ustr
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
output = output * " "
|
78
|
-
|
79
|
-
times.each { |i| output[i-1] = ' ' }
|
80
|
-
output.gsub!(/\\\//, '/')
|
81
|
-
output
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
}
|