fjson 0.1.1 → 0.1.2
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/CHANGES +9 -0
- data/Rakefile +5 -2
- data/mkmf_tasks.rb +5 -4
- data/spec/array_spec.rb +12 -12
- data/spec/false_class_spec.rb +4 -4
- data/spec/float_spec.rb +4 -4
- data/spec/hash_spec.rb +12 -12
- data/spec/integer_spec.rb +4 -4
- data/spec/mkmf_tasks_spec.rb +39 -14
- data/spec/nil_class_spec.rb +4 -4
- data/spec/object_spec.rb +4 -4
- data/spec/spec_suite.rb +2 -2
- data/spec/state_spec.rb +21 -21
- data/spec/string_spec.rb +4 -4
- data/spec/string_when_not_supporting_unicode_and_kcode_is_not_utf8_json_spec.rb +3 -3
- data/spec/string_when_supporting_unicode_and_kcode_is_not_utf8_json_spec.rb +3 -3
- data/spec/string_with_latin1_character_set_json_spec.rb +26 -26
- data/spec/string_with_utf8_values_when_supporting_unicode_json_spec.rb +17 -17
- data/spec/true_class_spec.rb +4 -4
- metadata +54 -54
data/CHANGES
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
2006-11-04 (0.1.2)
|
2
|
+
* Applied patch by Marcus Rueckert to fix gem install
|
3
|
+
|
4
|
+
2006-11-04 (0.1.1)
|
5
|
+
* Security release fixing seg fault. Thanks to Ooga Labs.
|
6
|
+
|
7
|
+
2006-11-04 (0.1.0)
|
8
|
+
* FJSON is deprecated as of this release.
|
9
|
+
|
1
10
|
2006-11-04 (0.0.8)
|
2
11
|
* Fixed build issues. Better spec coverage on build.
|
3
12
|
|
data/Rakefile
CHANGED
@@ -5,7 +5,10 @@ def win32?
|
|
5
5
|
end
|
6
6
|
|
7
7
|
desc "Compiles the library"
|
8
|
-
task(:default) {mkmf_tasks.
|
8
|
+
task(:default) {mkmf_tasks.extension}
|
9
|
+
|
10
|
+
desc "Compiles the library"
|
11
|
+
task(:extension) {mkmf_tasks.extension}
|
9
12
|
|
10
13
|
desc "Compiles the library"
|
11
14
|
task(:compile) {mkmf_tasks.compile}
|
@@ -46,7 +49,7 @@ def mkmf_tasks
|
|
46
49
|
end
|
47
50
|
|
48
51
|
PKG_NAME = "fjson"
|
49
|
-
PKG_VERSION = "0.1.
|
52
|
+
PKG_VERSION = "0.1.2"
|
50
53
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
51
54
|
PKG_FILES = FileList[
|
52
55
|
'[A-Z]*',
|
data/mkmf_tasks.rb
CHANGED
@@ -9,10 +9,6 @@ class MkmfTasks
|
|
9
9
|
@actor = actor
|
10
10
|
end
|
11
11
|
|
12
|
-
def default
|
13
|
-
compile
|
14
|
-
end
|
15
|
-
|
16
12
|
def compile
|
17
13
|
@extension_paths.each do |extension|
|
18
14
|
dir = "ext/#{extension}"
|
@@ -21,6 +17,11 @@ class MkmfTasks
|
|
21
17
|
end
|
22
18
|
end
|
23
19
|
|
20
|
+
def extension
|
21
|
+
compile
|
22
|
+
install
|
23
|
+
end
|
24
|
+
|
24
25
|
def spec
|
25
26
|
compile
|
26
27
|
install
|
data/spec/array_spec.rb
CHANGED
@@ -4,39 +4,39 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
describe "A one dimensional Array" do
|
8
|
+
it "should create json" do
|
9
9
|
array = [1, 'hello', :hello]
|
10
|
-
array.to_json.
|
10
|
+
array.to_json.should == '[1,"hello","hello"]'
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
it "should allow child object to have to_json with no arguments" do
|
14
14
|
obj = Object.new
|
15
15
|
def obj.to_json
|
16
16
|
"json".to_json
|
17
17
|
end
|
18
18
|
|
19
19
|
array = [obj]
|
20
|
-
array.to_json.
|
20
|
+
array.to_json.should == "[\"json\"]"
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
describe "A multi-dimensional Array" do
|
25
|
+
it "should create json" do
|
26
26
|
array = [1, ['hello', [:hello]]]
|
27
|
-
array.to_json.
|
27
|
+
array.to_json.should == '[1,["hello",["hello"]]]'
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
it "should not support circular dependencies" do
|
31
31
|
array = []
|
32
32
|
array << 1
|
33
33
|
array << ['hello', array]
|
34
|
-
proc {array.to_json}.
|
34
|
+
proc {array.to_json}.should raise_error JSON::CircularDatastructure
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
#
|
39
|
-
#
|
38
|
+
#describe "Array performance" do
|
39
|
+
# it "" do
|
40
40
|
# begin_time = Time.now
|
41
41
|
# 100000.times do
|
42
42
|
# [1, ['hello', [:hello]]].to_json
|
data/spec/false_class_spec.rb
CHANGED
@@ -4,12 +4,12 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
false.to_json.
|
7
|
+
describe "A false object" do
|
8
|
+
it "should convert to json" do
|
9
|
+
false.to_json.should == "false"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
it "to_json should accept any number of arguments" do
|
13
13
|
false.to_json(1, 2)
|
14
14
|
end
|
15
15
|
end
|
data/spec/float_spec.rb
CHANGED
@@ -4,12 +4,12 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
(3.14).to_json.
|
7
|
+
describe "A float number" do
|
8
|
+
it "should convert to json" do
|
9
|
+
(3.14).to_json.should == "3.14"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
it "to_json should accept any number of arguments" do
|
13
13
|
(3.14).to_json(1, 2)
|
14
14
|
end
|
15
15
|
end
|
data/spec/hash_spec.rb
CHANGED
@@ -4,18 +4,18 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
describe "A one dimensional Hash" do
|
8
|
+
it "should create json" do
|
9
9
|
hash = {
|
10
10
|
:one => 1,
|
11
11
|
"hello" => :hello
|
12
12
|
}
|
13
13
|
json = hash.to_json
|
14
|
-
json.
|
15
|
-
json.
|
14
|
+
json.should include("\"one\":1")
|
15
|
+
json.should include("\"hello\":\"hello\"")
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
it "should allow child object to have to_json with no arguments" do
|
19
19
|
obj = Object.new
|
20
20
|
def obj.to_json
|
21
21
|
"json".to_json
|
@@ -25,12 +25,12 @@ context "A one dimensional Hash" do
|
|
25
25
|
"key" => obj
|
26
26
|
}
|
27
27
|
|
28
|
-
hash.to_json.
|
28
|
+
hash.to_json.should == "{\"key\":\"json\"}"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
describe "A multi-dimensional Hash" do
|
33
|
+
it "should create json" do
|
34
34
|
hash = {
|
35
35
|
:one => 1,
|
36
36
|
"hello" => {
|
@@ -38,13 +38,13 @@ context "A multi-dimensional Hash" do
|
|
38
38
|
},
|
39
39
|
}
|
40
40
|
json = hash.to_json
|
41
|
-
json.
|
42
|
-
json.
|
41
|
+
json.should include("\"one\":1")
|
42
|
+
json.should include("\"hello\":{\"hello2\":2}")
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
it "should not support circular dependencies" do
|
46
46
|
hash = { :one => 1 }
|
47
47
|
hash["hello"] = hash
|
48
|
-
proc {hash.to_json}.
|
48
|
+
proc {hash.to_json}.should raise_error(JSON::CircularDatastructure)
|
49
49
|
end
|
50
50
|
end
|
data/spec/integer_spec.rb
CHANGED
@@ -4,12 +4,12 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
5.to_json.
|
7
|
+
describe "An integer" do
|
8
|
+
it "should convert to json" do
|
9
|
+
5.to_json.should == "5"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
it "to_json should accept any number of arguments" do
|
13
13
|
5.to_json(1, 2)
|
14
14
|
end
|
15
15
|
end
|
data/spec/mkmf_tasks_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
dir = File.dirname(__FILE__)
|
2
2
|
require "#{dir}/spec_helper"
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
describe MkmfTasks, :shared => true do
|
5
|
+
before(:each) do
|
6
6
|
@actor = mock("Rake Actor")
|
7
7
|
@tasks = MkmfTasks.new(@actor)
|
8
8
|
|
@@ -10,13 +10,12 @@ context "A MkmfTasks" do
|
|
10
10
|
@extconf_file_name = @tasks.extconf_file_name = "extconf.mkmf.rb"
|
11
11
|
@project_dir = @tasks.project_dir = "/project/dir"
|
12
12
|
end
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
specify "compile makes files" do
|
15
|
+
describe MkmfTasks, "#compile" do
|
16
|
+
it_should_behave_like "MkmfTasks"
|
17
|
+
|
18
|
+
it "makes files" do
|
20
19
|
@tasks.extension_paths = ["foo", "extensions/bar"]
|
21
20
|
@tasks.extconf_arguments = "-extconfarg"
|
22
21
|
@tasks.extconf_file_name = "extconf.rb"
|
@@ -41,20 +40,42 @@ context "A MkmfTasks" do
|
|
41
40
|
|
42
41
|
@tasks.compile
|
43
42
|
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe MkmfTasks, "#extension" do
|
46
|
+
it_should_behave_like "MkmfTasks"
|
44
47
|
|
45
|
-
|
48
|
+
it "compiles and installs extensions" do
|
49
|
+
@tasks.should_receive(:compile).ordered
|
50
|
+
@tasks.should_receive(:install).ordered
|
51
|
+
@tasks.extension
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe MkmfTasks, "#spec" do
|
56
|
+
it_should_behave_like "MkmfTasks"
|
57
|
+
|
58
|
+
it "calls compile, install, and runs the specs" do
|
46
59
|
@tasks.should_receive(:compile).ordered
|
47
60
|
@tasks.should_receive(:install).ordered
|
48
61
|
@tasks.should_receive(:require).with("#{@project_dir}/spec/spec_suite").ordered
|
49
62
|
@tasks.spec
|
50
63
|
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe MkmfTasks, "#lib" do
|
67
|
+
it_should_behave_like "MkmfTasks"
|
51
68
|
|
52
|
-
|
69
|
+
it "creates lib directory" do
|
53
70
|
@tasks.should_receive(:directory).with("lib")
|
54
71
|
@tasks.lib
|
55
72
|
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe MkmfTasks, "#install" do
|
76
|
+
it_should_behave_like "MkmfTasks"
|
56
77
|
|
57
|
-
|
78
|
+
it "copies the build path to the library path" do
|
58
79
|
@tasks.extension_paths = ["foo", "extensions/bar"]
|
59
80
|
@tasks.file_extension = "so"
|
60
81
|
File.stub!(:exists?).and_return(true)
|
@@ -63,16 +84,20 @@ context "A MkmfTasks" do
|
|
63
84
|
@tasks.install
|
64
85
|
end
|
65
86
|
|
66
|
-
|
87
|
+
it "raises an exception when the source file does not exist" do
|
67
88
|
@tasks.extension_paths = ["foo", "extensions/bar"]
|
68
89
|
@tasks.file_extension = "so"
|
69
90
|
File.should_receive(:exists?).with("/project/dir/ext/foo/foo.so").and_return(false)
|
70
91
|
proc do
|
71
92
|
@tasks.install
|
72
|
-
end.
|
93
|
+
end.should raise_error(Exception, "File /project/dir/ext/foo/foo.so does not exist")
|
73
94
|
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe MkmfTasks, "#cleanup" do
|
98
|
+
it_should_behave_like "MkmfTasks"
|
74
99
|
|
75
|
-
|
100
|
+
it "removes all of the build artifacts" do
|
76
101
|
@tasks.extension_paths = ["extensions/foo", "extensions/bar"]
|
77
102
|
@tasks.file_extension = "file_extension"
|
78
103
|
|
data/spec/nil_class_spec.rb
CHANGED
@@ -4,12 +4,12 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
nil.to_json.
|
7
|
+
describe "A nil object" do
|
8
|
+
it "should convert to json" do
|
9
|
+
nil.to_json.should == "null"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
it "to_json should accept any number of arguments" do
|
13
13
|
nil.to_json(1, 2)
|
14
14
|
end
|
15
15
|
end
|
data/spec/object_spec.rb
CHANGED
@@ -4,14 +4,14 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
describe "An object" do
|
8
|
+
it "should convert its string representation to json" do
|
9
9
|
obj = Object.new
|
10
10
|
obj_str = obj.to_s
|
11
|
-
obj.to_json.
|
11
|
+
obj.to_json.should == '"' + obj_str + '"'
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
it "to_json should accept any number of arguments" do
|
15
15
|
Object.new.to_json(1, 2)
|
16
16
|
end
|
17
17
|
end
|
data/spec/spec_suite.rb
CHANGED
@@ -8,11 +8,11 @@ unless args.include?("-f") || args.include?("--format")
|
|
8
8
|
end
|
9
9
|
args << $0
|
10
10
|
|
11
|
-
$
|
11
|
+
$behaviour_runner = ::Spec::Runner::OptionParser.new.create_behaviour_runner(args, false, STDOUT, STDERR)
|
12
12
|
|
13
13
|
dir = File.dirname(__FILE__)
|
14
14
|
Dir["#{dir}/**/*_spec.rb"].each do |file|
|
15
15
|
require File.expand_path(file)
|
16
16
|
end
|
17
17
|
|
18
|
-
$
|
18
|
+
$behaviour_runner.run(nil, true)
|
data/spec/state_spec.rb
CHANGED
@@ -4,13 +4,13 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
describe "A JSON state" do
|
8
|
+
it "method from_state should return the passed in object when a state is passed in" do
|
9
9
|
state = JSON::State.new
|
10
|
-
JSON::State.from_state(state).
|
10
|
+
JSON::State.from_state(state).should == state
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
it "method from_state should return a new state with hash values when a hash is passed in" do
|
14
14
|
shim_state_class = Object.new
|
15
15
|
shim_state_class.extend JSON::State::ClassMethods
|
16
16
|
passed_params = nil
|
@@ -18,24 +18,24 @@ context "A JSON state" do
|
|
18
18
|
|
19
19
|
args = {}
|
20
20
|
shim_state_class.from_state(args)
|
21
|
-
passed_params.
|
21
|
+
passed_params.should == args
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
it "method from_state should return a new state with default parameters when an object that is not " +
|
25
25
|
"a state or a hash is passed in" do
|
26
26
|
state = JSON::State.from_state(Object.new)
|
27
|
-
state.
|
27
|
+
state.should be_instance_of(JSON::State)
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
it "should initialize its attributes to their defaults" do
|
31
31
|
state = JSON::State.new
|
32
|
-
state.indent.
|
33
|
-
state.space.
|
34
|
-
state.object_nl.
|
35
|
-
state.array_nl.
|
32
|
+
state.indent.should == ""
|
33
|
+
state.space.should == ""
|
34
|
+
state.object_nl.should == ""
|
35
|
+
state.array_nl.should == ""
|
36
36
|
end
|
37
37
|
|
38
|
-
|
38
|
+
it "should initialize its attributes with passed in values" do
|
39
39
|
params = {
|
40
40
|
:indent => Object.new,
|
41
41
|
:space => Object.new,
|
@@ -43,24 +43,24 @@ context "A JSON state" do
|
|
43
43
|
:array_nl => Object.new
|
44
44
|
}
|
45
45
|
state = JSON::State.new(params)
|
46
|
-
state.indent.
|
47
|
-
state.space.
|
48
|
-
state.object_nl.
|
49
|
-
state.array_nl.
|
46
|
+
state.indent.should == params[:indent]
|
47
|
+
state.space.should == params[:space]
|
48
|
+
state.object_nl.should == params[:object_nl]
|
49
|
+
state.array_nl.should == params[:array_nl]
|
50
50
|
end
|
51
51
|
|
52
|
-
|
52
|
+
it "should remember objects" do
|
53
53
|
state = JSON::State.new
|
54
54
|
obj = Object.new
|
55
55
|
state.remember(obj)
|
56
|
-
state.
|
56
|
+
state.should be_seen(obj)
|
57
57
|
end
|
58
58
|
|
59
|
-
|
59
|
+
it "should forget objects" do
|
60
60
|
state = JSON::State.new
|
61
61
|
obj = Object.new
|
62
62
|
state.remember(obj)
|
63
63
|
state.forget(obj)
|
64
|
-
state.
|
64
|
+
state.should_not be_seen(obj)
|
65
65
|
end
|
66
66
|
end
|
data/spec/string_spec.rb
CHANGED
@@ -4,12 +4,12 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
"test".to_json.
|
7
|
+
describe "A string" do
|
8
|
+
it "should convert to json" do
|
9
|
+
"test".to_json.should == '"test"'
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
it "to_json should accept any number of arguments" do
|
13
13
|
"test".to_json(1, 2)
|
14
14
|
end
|
15
15
|
end
|
@@ -4,15 +4,15 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
7
|
+
describe "String when not supporting unicode and KCODE is not UTF8 json" do
|
8
8
|
setup do
|
9
9
|
JSON.support_unicode = true
|
10
10
|
$KCODE = ""
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
it "should let high values pass through when " +
|
14
14
|
"not supporting unicode and KCODE is not UTF8" do
|
15
15
|
val = [0xcf].pack("U")
|
16
|
-
JSON.utf8_to_json(val).
|
16
|
+
JSON.utf8_to_json(val).should == "\303\217"
|
17
17
|
end
|
18
18
|
end
|
@@ -4,15 +4,15 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
7
|
+
describe "String when supporting unicode and KCODE is not utf8 json" do
|
8
8
|
setup do
|
9
9
|
JSON.support_unicode = true
|
10
10
|
$KCODE = ""
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
it "should let high values pass through when " +
|
14
14
|
"supporting unicode and KCODE is not UTF8" do
|
15
15
|
val = [0xcf].pack("U")
|
16
|
-
JSON.utf8_to_json(val).
|
16
|
+
JSON.utf8_to_json(val).should == "\303\217"
|
17
17
|
end
|
18
18
|
end
|
@@ -4,64 +4,64 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
describe "String with latin1 character set Json" do
|
8
|
+
it 'should format \b' do
|
9
9
|
utf_8_val = [?\b].pack("U")
|
10
|
-
JSON.utf8_to_json(utf_8_val).
|
10
|
+
JSON.utf8_to_json(utf_8_val).should == '\b'
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
it 'should format \t' do
|
14
14
|
utf_8_val = [?\t].pack("U")
|
15
|
-
JSON.utf8_to_json(utf_8_val).
|
15
|
+
JSON.utf8_to_json(utf_8_val).should == '\t'
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
it 'should format \n' do
|
19
19
|
utf_8_val = [?\n].pack("U")
|
20
|
-
JSON.utf8_to_json(utf_8_val).
|
20
|
+
JSON.utf8_to_json(utf_8_val).should == '\n'
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
it 'should format \f' do
|
24
24
|
utf_8_val = [?\f].pack("U")
|
25
|
-
JSON.utf8_to_json(utf_8_val).
|
25
|
+
JSON.utf8_to_json(utf_8_val).should == '\f'
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
it 'should format \r' do
|
29
29
|
utf_8_val = [?\r].pack("U")
|
30
|
-
JSON.utf8_to_json(utf_8_val).
|
30
|
+
JSON.utf8_to_json(utf_8_val).should == '\r'
|
31
31
|
end
|
32
32
|
|
33
|
-
|
33
|
+
it 'should format ?"' do
|
34
34
|
utf_8_val = [?"].pack("U")
|
35
|
-
JSON.utf8_to_json(utf_8_val).
|
35
|
+
JSON.utf8_to_json(utf_8_val).should == '\"'
|
36
36
|
end
|
37
37
|
|
38
|
-
|
38
|
+
it 'should format ?\\' do
|
39
39
|
utf_8_val = [?\\].pack("U")
|
40
|
-
JSON.utf8_to_json(utf_8_val).
|
40
|
+
JSON.utf8_to_json(utf_8_val).should == '\\\\'
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
it "should format values between 0x00 and 0x1f" do
|
44
44
|
utf_8_val = [0x0f].pack("U")
|
45
|
-
JSON.utf8_to_json(utf_8_val).
|
45
|
+
JSON.utf8_to_json(utf_8_val).should == '\\u000f'
|
46
46
|
utf_8_val = [0x1e].pack("U")
|
47
|
-
JSON.utf8_to_json(utf_8_val).
|
47
|
+
JSON.utf8_to_json(utf_8_val).should == '\\u001e'
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
|
-
JSON.utf8_to_json("test").
|
52
|
-
JSON.utf8_to_json('1').
|
50
|
+
it "should let ordinary text pass through" do
|
51
|
+
JSON.utf8_to_json("test").should == "test"
|
52
|
+
JSON.utf8_to_json('1').should == '1'
|
53
53
|
end
|
54
54
|
|
55
|
-
|
55
|
+
it "should support backslashes" do
|
56
56
|
json = '"\\\\.(?i:gif|jpe?g|png)$"'
|
57
57
|
data = JSON.parse(json)
|
58
|
-
JSON.unparse(data).
|
58
|
+
JSON.unparse(data).should == json
|
59
59
|
json = '"\\""'
|
60
60
|
data = JSON.parse(json)
|
61
|
-
JSON.unparse(data).
|
61
|
+
JSON.unparse(data).should == json
|
62
62
|
json = '"\/"'
|
63
63
|
data = JSON.parse(json)
|
64
|
-
data.
|
65
|
-
JSON.unparse(data).
|
64
|
+
data.should == '/'
|
65
|
+
JSON.unparse(data).should == json
|
66
66
|
end
|
67
67
|
end
|
@@ -4,50 +4,50 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
7
|
+
describe "String with UTF8 values when supporting unicode Json" do
|
8
8
|
setup do
|
9
9
|
JSON.support_unicode = true
|
10
10
|
$KCODE = "UTF8"
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
it "should format values between 0x00000080 and 0x000007ff" do
|
14
14
|
val = [0x0080].pack("U")
|
15
|
-
JSON.utf8_to_json(val).
|
15
|
+
JSON.utf8_to_json(val).should == "\\u0080"
|
16
16
|
|
17
17
|
val = [0x07ff].pack("U")
|
18
|
-
JSON.utf8_to_json(val).
|
18
|
+
JSON.utf8_to_json(val).should == "\\u07ff"
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
it "should format values between 0x00001000 and 0x0000ffff" do
|
22
22
|
val = [0x1000].pack("U")
|
23
|
-
JSON.utf8_to_json(val).
|
23
|
+
JSON.utf8_to_json(val).should == "\\u1000"
|
24
24
|
|
25
25
|
val = [0xffff].pack("U")
|
26
|
-
JSON.utf8_to_json(val).
|
26
|
+
JSON.utf8_to_json(val).should == "\\uffff"
|
27
27
|
end
|
28
28
|
|
29
|
-
|
29
|
+
it "should format values between 0x00010000 and 0x0010ffff" do
|
30
30
|
val = [0x010000].pack("U")
|
31
|
-
JSON.utf8_to_json(val).
|
31
|
+
JSON.utf8_to_json(val).should == "\\ud800dc00"
|
32
32
|
|
33
33
|
val = [0x10ffff].pack("U")
|
34
|
-
JSON.utf8_to_json(val).
|
34
|
+
JSON.utf8_to_json(val).should == "\\udbffdfff"
|
35
35
|
end
|
36
36
|
|
37
|
-
|
37
|
+
it "should parse unicode values" do
|
38
38
|
utf8 = '© ≠ €!'
|
39
39
|
json = '"\u00a9 \u2260 \u20ac!"'
|
40
|
-
utf8.to_json.
|
41
|
-
JSON.parse(json).
|
40
|
+
utf8.to_json.should == json
|
41
|
+
JSON.parse(json).should == utf8
|
42
42
|
|
43
43
|
utf8 = "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"
|
44
44
|
json = '"\u3042\u3044\u3046\u3048\u304a"'
|
45
|
-
utf8.to_json.
|
46
|
-
JSON.parse(json).
|
45
|
+
utf8.to_json.should == json
|
46
|
+
JSON.parse(json).should == utf8
|
47
47
|
|
48
48
|
utf8 = 'საქართველო'
|
49
49
|
json = '"\u10e1\u10d0\u10e5\u10d0\u10e0\u10d7\u10d5\u10d4\u10da\u10dd"'
|
50
|
-
utf8.to_json.
|
51
|
-
JSON.parse(json).
|
50
|
+
utf8.to_json.should == json
|
51
|
+
JSON.parse(json).should == utf8
|
52
52
|
end
|
53
53
|
end
|
data/spec/true_class_spec.rb
CHANGED
@@ -4,12 +4,12 @@ dir = File.dirname(__FILE__)
|
|
4
4
|
require File.expand_path("#{dir}/spec_helper")
|
5
5
|
require File.expand_path("#{dir}/../lib/fjson")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
true.to_json.
|
7
|
+
describe "A true object" do
|
8
|
+
it "should convert to json" do
|
9
|
+
true.to_json.should == "true"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
it "to_json should accept any number of arguments" do
|
13
13
|
true.to_json(1, 2)
|
14
14
|
end
|
15
15
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.3
|
3
3
|
specification_version: 1
|
4
4
|
name: fjson
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.1.2
|
7
|
+
date: 2007-05-25 00:00:00 -07:00
|
8
8
|
summary: This library is for parsing JSON strings and unparsing ruby data structures. This library is a fork of Florian Frank's JSON library with key parts implemented in C for performance improvements.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,100 +34,100 @@ files:
|
|
34
34
|
- CHANGES
|
35
35
|
- TODO
|
36
36
|
- README
|
37
|
-
- hash_benchmark.rb
|
38
37
|
- rake_helper.rb
|
39
|
-
- install.rb
|
40
38
|
- hash_benchmark_action_support.rb
|
41
39
|
- hash_benchmark_json.rb
|
42
|
-
- hash_benchmark_fjson.rb
|
43
40
|
- mkmf_tasks.rb
|
44
|
-
-
|
41
|
+
- hash_benchmark.rb
|
42
|
+
- hash_benchmark_fjson.rb
|
43
|
+
- install.rb
|
45
44
|
- lib/fjson.rb
|
46
|
-
- lib/
|
47
|
-
- lib/extensions/class.rb
|
48
|
-
- lib/extensions/string.rb
|
45
|
+
- lib/parser.rb
|
49
46
|
- lib/json/editor.rb
|
47
|
+
- lib/extensions/string.rb
|
48
|
+
- lib/extensions/class.rb
|
49
|
+
- lib/extensions/kernel.rb
|
50
|
+
- ext/state_ext/state_lib.h
|
51
|
+
- ext/state_ext/state_ext.h
|
52
|
+
- ext/json_ext/json_ext.h
|
50
53
|
- ext/extensions/false_class_ext/false_class_ext.h
|
51
54
|
- ext/extensions/hash_ext/hash_ext.h
|
52
|
-
- ext/extensions/
|
55
|
+
- ext/extensions/enumerable/enumerable.h
|
53
56
|
- ext/extensions/float_ext/float_ext.h
|
54
|
-
- ext/extensions/object_ext/object_ext.h
|
55
57
|
- ext/extensions/string_ext/string_ext.h
|
58
|
+
- ext/extensions/array_ext/array_ext.h
|
56
59
|
- ext/extensions/nil_class_ext/nil_class_ext.h
|
60
|
+
- ext/extensions/true_class_ext/true_class_ext.h
|
57
61
|
- ext/extensions/integer_ext/integer_ext.h
|
58
|
-
- ext/extensions/
|
59
|
-
- ext/
|
60
|
-
- ext/state_ext/
|
61
|
-
- ext/
|
62
|
-
- ext/json_ext/json_ext.h
|
62
|
+
- ext/extensions/object_ext/object_ext.h
|
63
|
+
- ext/state_ext/state_ext.c
|
64
|
+
- ext/state_ext/state_lib.c
|
65
|
+
- ext/json_ext/json_ext.c
|
63
66
|
- ext/extensions/false_class_ext/false_class_ext.c
|
64
67
|
- ext/extensions/hash_ext/hash_ext.c
|
65
|
-
- ext/extensions/
|
68
|
+
- ext/extensions/enumerable/enumerable.c
|
66
69
|
- ext/extensions/float_ext/float_ext.c
|
67
|
-
- ext/extensions/object_ext/object_ext.c
|
68
70
|
- ext/extensions/string_ext/string_ext.c
|
71
|
+
- ext/extensions/array_ext/array_ext.c
|
69
72
|
- ext/extensions/nil_class_ext/nil_class_ext.c
|
73
|
+
- ext/extensions/true_class_ext/true_class_ext.c
|
70
74
|
- ext/extensions/integer_ext/integer_ext.c
|
71
|
-
- ext/extensions/
|
72
|
-
- ext/
|
73
|
-
- ext/state_ext/
|
74
|
-
- ext/
|
75
|
-
- ext/json_ext/
|
75
|
+
- ext/extensions/object_ext/object_ext.c
|
76
|
+
- ext/state_ext/extconf.mkmf.rb
|
77
|
+
- ext/state_ext/extconf.rb
|
78
|
+
- ext/json_ext/extconf.mkmf.rb
|
79
|
+
- ext/json_ext/extconf.rb
|
76
80
|
- ext/extensions/false_class_ext/extconf.mkmf.rb
|
77
81
|
- ext/extensions/false_class_ext/extconf.rb
|
78
82
|
- ext/extensions/hash_ext/extconf.mkmf.rb
|
79
83
|
- ext/extensions/hash_ext/extconf.rb
|
80
|
-
- ext/extensions/true_class_ext/extconf.mkmf.rb
|
81
|
-
- ext/extensions/true_class_ext/extconf.rb
|
82
84
|
- ext/extensions/float_ext/extconf.mkmf.rb
|
83
85
|
- ext/extensions/float_ext/extconf.rb
|
84
|
-
- ext/extensions/object_ext/extconf.mkmf.rb
|
85
|
-
- ext/extensions/object_ext/extconf.rb
|
86
86
|
- ext/extensions/string_ext/extconf.mkmf.rb
|
87
87
|
- ext/extensions/string_ext/extconf.rb
|
88
|
+
- ext/extensions/array_ext/extconf.mkmf.rb
|
89
|
+
- ext/extensions/array_ext/extconf.rb
|
88
90
|
- ext/extensions/nil_class_ext/extconf.mkmf.rb
|
89
91
|
- ext/extensions/nil_class_ext/extconf.rb
|
92
|
+
- ext/extensions/true_class_ext/extconf.mkmf.rb
|
93
|
+
- ext/extensions/true_class_ext/extconf.rb
|
90
94
|
- ext/extensions/integer_ext/extconf.mkmf.rb
|
91
95
|
- ext/extensions/integer_ext/extconf.rb
|
92
|
-
- ext/extensions/
|
93
|
-
- ext/extensions/
|
94
|
-
- ext/state_ext/extconf.mkmf.rb
|
95
|
-
- ext/state_ext/extconf.rb
|
96
|
-
- ext/json_ext/extconf.mkmf.rb
|
97
|
-
- ext/json_ext/extconf.rb
|
98
|
-
- spec/mkmf_tasks_spec.rb
|
99
|
-
- spec/true_class_spec.rb
|
100
|
-
- spec/float_spec.rb
|
101
|
-
- spec/string_spec.rb
|
102
|
-
- spec/object_spec.rb
|
103
|
-
- spec/nil_class_spec.rb
|
96
|
+
- ext/extensions/object_ext/extconf.mkmf.rb
|
97
|
+
- ext/extensions/object_ext/extconf.rb
|
104
98
|
- spec/array_spec.rb
|
99
|
+
- spec/object_spec.rb
|
100
|
+
- spec/spec_suite.rb
|
101
|
+
- spec/string_when_supporting_unicode_and_kcode_is_not_utf8_json_spec.rb
|
105
102
|
- spec/spec_helper.rb
|
106
103
|
- spec/false_class_spec.rb
|
107
|
-
- spec/
|
108
|
-
- spec/state_spec.rb
|
104
|
+
- spec/string_spec.rb
|
109
105
|
- spec/hash_spec.rb
|
110
|
-
- spec/
|
111
|
-
- spec/
|
112
|
-
- spec/string_when_supporting_unicode_and_kcode_is_not_utf8_json_spec.rb
|
106
|
+
- spec/nil_class_spec.rb
|
107
|
+
- spec/state_spec.rb
|
113
108
|
- spec/string_with_latin1_character_set_json_spec.rb
|
114
|
-
- spec/string_with_utf8_values_when_supporting_unicode_json_spec.rb
|
115
|
-
test_files:
|
116
109
|
- spec/mkmf_tasks_spec.rb
|
117
110
|
- spec/true_class_spec.rb
|
111
|
+
- spec/string_when_not_supporting_unicode_and_kcode_is_not_utf8_json_spec.rb
|
112
|
+
- spec/string_with_utf8_values_when_supporting_unicode_json_spec.rb
|
113
|
+
- spec/integer_spec.rb
|
118
114
|
- spec/float_spec.rb
|
119
|
-
|
120
|
-
- spec/object_spec.rb
|
121
|
-
- spec/nil_class_spec.rb
|
115
|
+
test_files:
|
122
116
|
- spec/array_spec.rb
|
117
|
+
- spec/object_spec.rb
|
118
|
+
- spec/string_when_supporting_unicode_and_kcode_is_not_utf8_json_spec.rb
|
123
119
|
- spec/false_class_spec.rb
|
124
|
-
- spec/
|
125
|
-
- spec/state_spec.rb
|
120
|
+
- spec/string_spec.rb
|
126
121
|
- spec/hash_spec.rb
|
127
|
-
- spec/
|
128
|
-
- spec/
|
122
|
+
- spec/nil_class_spec.rb
|
123
|
+
- spec/state_spec.rb
|
129
124
|
- spec/string_with_latin1_character_set_json_spec.rb
|
125
|
+
- spec/mkmf_tasks_spec.rb
|
126
|
+
- spec/true_class_spec.rb
|
127
|
+
- spec/string_when_not_supporting_unicode_and_kcode_is_not_utf8_json_spec.rb
|
130
128
|
- spec/string_with_utf8_values_when_supporting_unicode_json_spec.rb
|
129
|
+
- spec/integer_spec.rb
|
130
|
+
- spec/float_spec.rb
|
131
131
|
rdoc_options: []
|
132
132
|
|
133
133
|
extra_rdoc_files:
|