summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2016-06-21 10:58:50 +0200
committerFlorian Frank <flori@ping.de>2016-06-21 10:58:50 +0200
commit76f41a84e2bace20c3076aba53887537e37dfdb2 (patch)
tree63575c015f6f84b77fb7fff296e708b4a3b42820
parente33584dfe582e8b0b6bcf1fe14099a9801275ce3 (diff)
parente96a29e9bb261410a53b63acf26a9ec780b5199c (diff)
downloadjson-76f41a84e2bace20c3076aba53887537e37dfdb2.tar.gz
Merge branch 'nobu-trunk'
-rw-r--r--Rakefile1
-rw-r--r--ext/json/ext/parser/parser.c75
-rw-r--r--ext/json/ext/parser/parser.rl3
-rw-r--r--json.gemspecbin5410 -> 4479 bytes
-rw-r--r--json_pure.gemspec40
-rw-r--r--lib/json.rb1
-rw-r--r--lib/json/add/bigdecimal.rb1
-rw-r--r--lib/json/add/complex.rb3
-rw-r--r--lib/json/add/core.rb1
-rw-r--r--lib/json/add/date.rb1
-rw-r--r--lib/json/add/date_time.rb1
-rw-r--r--lib/json/add/exception.rb1
-rw-r--r--lib/json/add/ostruct.rb1
-rw-r--r--lib/json/add/range.rb1
-rw-r--r--lib/json/add/rational.rb1
-rw-r--r--lib/json/add/regexp.rb1
-rw-r--r--lib/json/add/struct.rb1
-rw-r--r--lib/json/add/symbol.rb1
-rw-r--r--lib/json/add/time.rb1
-rw-r--r--lib/json/common.rb1
-rw-r--r--lib/json/generic_object.rb9
-rw-r--r--lib/json/pure/generator.rb1
-rw-r--r--lib/json/pure/parser.rb1
-rw-r--r--tests/json_addition_test.rb5
-rw-r--r--tests/json_common_interface_test.rb5
-rw-r--r--tests/json_encoding_test.rb1
-rw-r--r--tests/json_ext_parser_test.rb1
-rw-r--r--tests/json_fixtures_test.rb3
-rw-r--r--tests/json_generator_test.rb34
-rw-r--r--tests/json_generic_object_test.rb1
-rw-r--r--tests/json_parser_test.rb61
-rw-r--r--tests/json_string_matching_test.rb1
32 files changed, 147 insertions, 112 deletions
diff --git a/Rakefile b/Rakefile
index 4aa311e..4448d2e 100644
--- a/Rakefile
+++ b/Rakefile
@@ -361,6 +361,7 @@ else
sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2"
end
src = File.read("parser.c").gsub(/[ \t]+$/, '')
+ src.gsub!(/^static const int (JSON_.*=.*);$/, 'enum {\1};')
File.open("parser.c", "w") {|f| f.print src}
end
end
diff --git a/ext/json/ext/parser/parser.c b/ext/json/ext/parser/parser.c
index 7e32ef0..a65d17d 100644
--- a/ext/json/ext/parser/parser.c
+++ b/ext/json/ext/parser/parser.c
@@ -103,11 +103,11 @@ static ID i_json_creatable_p, i_json_create, i_create_id, i_create_additions,
#line 106 "parser.c"
-static const int JSON_object_start = 1;
-static const int JSON_object_first_final = 27;
-static const int JSON_object_error = 0;
+enum {JSON_object_start = 1};
+enum {JSON_object_first_final = 27};
+enum {JSON_object_error = 0};
-static const int JSON_object_en_main = 1;
+enum {JSON_object_en_main = 1};
#line 165 "parser.rl"
@@ -481,11 +481,11 @@ case 26:
#line 484 "parser.c"
-static const int JSON_value_start = 1;
-static const int JSON_value_first_final = 29;
-static const int JSON_value_error = 0;
+enum {JSON_value_start = 1};
+enum {JSON_value_first_final = 29};
+enum {JSON_value_error = 0};
-static const int JSON_value_en_main = 1;
+enum {JSON_value_en_main = 1};
#line 285 "parser.rl"
@@ -879,11 +879,11 @@ case 28:
#line 882 "parser.c"
-static const int JSON_integer_start = 1;
-static const int JSON_integer_first_final = 3;
-static const int JSON_integer_error = 0;
+enum {JSON_integer_start = 1};
+enum {JSON_integer_first_final = 3};
+enum {JSON_integer_error = 0};
-static const int JSON_integer_en_main = 1;
+enum {JSON_integer_en_main = 1};
#line 309 "parser.rl"
@@ -978,11 +978,11 @@ case 5:
#line 981 "parser.c"
-static const int JSON_float_start = 1;
-static const int JSON_float_first_final = 8;
-static const int JSON_float_error = 0;
+enum {JSON_float_start = 1};
+enum {JSON_float_first_final = 8};
+enum {JSON_float_error = 0};
-static const int JSON_float_en_main = 1;
+enum {JSON_float_en_main = 1};
#line 343 "parser.rl"
@@ -1144,11 +1144,11 @@ case 7:
#line 1147 "parser.c"
-static const int JSON_array_start = 1;
-static const int JSON_array_first_final = 17;
-static const int JSON_array_error = 0;
+enum {JSON_array_start = 1};
+enum {JSON_array_first_final = 17};
+enum {JSON_array_error = 0};
-static const int JSON_array_en_main = 1;
+enum {JSON_array_en_main = 1};
#line 395 "parser.rl"
@@ -1476,11 +1476,11 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
#line 1479 "parser.c"
-static const int JSON_string_start = 1;
-static const int JSON_string_first_final = 8;
-static const int JSON_string_error = 0;
+enum {JSON_string_start = 1};
+enum {JSON_string_first_final = 8};
+enum {JSON_string_error = 0};
-static const int JSON_string_en_main = 1;
+enum {JSON_string_en_main = 1};
#line 508 "parser.rl"
@@ -1800,7 +1800,6 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
json->object_class = Qnil;
json->array_class = Qnil;
}
- source = rb_convert_type(source, T_STRING, "String", "to_str");
source = convert_encoding(StringValue(source));
json->current_nesting = 0;
StringValue(source);
@@ -1811,15 +1810,15 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
}
-#line 1813 "parser.c"
-static const int JSON_start = 1;
-static const int JSON_first_final = 10;
-static const int JSON_error = 0;
+#line 1814 "parser.c"
+enum {JSON_start = 1};
+enum {JSON_first_final = 10};
+enum {JSON_error = 0};
-static const int JSON_en_main = 1;
+enum {JSON_en_main = 1};
-#line 721 "parser.rl"
+#line 722 "parser.rl"
/*
@@ -1836,16 +1835,16 @@ static VALUE cParser_parse(VALUE self)
GET_PARSER;
-#line 1838 "parser.c"
+#line 1839 "parser.c"
{
cs = JSON_start;
}
-#line 737 "parser.rl"
+#line 738 "parser.rl"
p = json->source;
pe = p + json->len;
-#line 1847 "parser.c"
+#line 1848 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -1879,7 +1878,7 @@ st0:
cs = 0;
goto _out;
tr2:
-#line 713 "parser.rl"
+#line 714 "parser.rl"
{
char *np = JSON_parse_value(json, p, pe, &result);
if (np == NULL) { p--; {p++; cs = 10; goto _out;} } else {p = (( np))-1;}
@@ -1889,7 +1888,7 @@ st10:
if ( ++p == pe )
goto _test_eof10;
case 10:
-#line 1891 "parser.c"
+#line 1892 "parser.c"
switch( (*p) ) {
case 13: goto st10;
case 32: goto st10;
@@ -1978,12 +1977,12 @@ case 9:
_out: {}
}
-#line 740 "parser.rl"
+#line 741 "parser.rl"
if (cs >= JSON_first_final && p == pe) {
return result;
} else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
+ rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p);
return Qnil;
}
}
diff --git a/ext/json/ext/parser/parser.rl b/ext/json/ext/parser/parser.rl
index f479281..eac3e6c 100644
--- a/ext/json/ext/parser/parser.rl
+++ b/ext/json/ext/parser/parser.rl
@@ -695,7 +695,6 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
json->object_class = Qnil;
json->array_class = Qnil;
}
- source = rb_convert_type(source, T_STRING, "String", "to_str");
source = convert_encoding(StringValue(source));
json->current_nesting = 0;
StringValue(source);
@@ -743,7 +742,7 @@ static VALUE cParser_parse(VALUE self)
if (cs >= JSON_first_final && p == pe) {
return result;
} else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
+ rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p);
return Qnil;
}
}
diff --git a/json.gemspec b/json.gemspec
index 71982d9..54bae4d 100644
--- a/json.gemspec
+++ b/json.gemspec
Binary files differ
diff --git a/json_pure.gemspec b/json_pure.gemspec
index 3b3726b..a8132d4 100644
--- a/json_pure.gemspec
+++ b/json_pure.gemspec
@@ -2,36 +2,36 @@
# stub: json_pure 2.0.0 ruby lib
Gem::Specification.new do |s|
- s.name = "json_pure".freeze
+ s.name = "json_pure"
s.version = "2.0.0"
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
- s.require_paths = ["lib".freeze]
- s.authors = ["Florian Frank".freeze]
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
+ s.require_paths = ["lib"]
+ s.authors = ["Florian Frank"]
s.date = "2016-06-21"
- s.description = "This is a JSON implementation in pure Ruby.".freeze
- s.email = "flori@ping.de".freeze
- s.extra_rdoc_files = ["README.md".freeze]
- s.files = ["./tests/test_helper.rb".freeze, ".gitignore".freeze, ".travis.yml".freeze, "CHANGES".freeze, "Gemfile".freeze, "README-json-jruby.markdown".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "data/example.json".freeze, "data/index.html".freeze, "data/prototype.js".freeze, "diagrams/.keep".freeze, "ext/json/ext/fbuffer/fbuffer.h".freeze, "ext/json/ext/generator/depend".freeze, "ext/json/ext/generator/extconf.rb".freeze, "ext/json/ext/generator/generator.c".freeze, "ext/json/ext/generator/generator.h".freeze, "ext/json/ext/parser/depend".freeze, "ext/json/ext/parser/extconf.rb".freeze, "ext/json/ext/parser/parser.c".freeze, "ext/json/ext/parser/parser.h".freeze, "ext/json/ext/parser/parser.rl".freeze, "ext/json/extconf.rb".freeze, "install.rb".freeze, "java/src/json/ext/ByteListTranscoder.java".freeze, "java/src/json/ext/Generator.java".freeze, "java/src/json/ext/GeneratorMethods.java".freeze, "java/src/json/ext/GeneratorService.java".freeze, "java/src/json/ext/GeneratorState.java".freeze, "java/src/json/ext/OptionsReader.java".freeze, "java/src/json/ext/Parser.java".freeze, "java/src/json/ext/Parser.rl".freeze, "java/src/json/ext/ParserService.java".freeze, "java/src/json/ext/RuntimeInfo.java".freeze, "java/src/json/ext/StringDecoder.java".freeze, "java/src/json/ext/StringEncoder.java".freeze, "java/src/json/ext/Utils.java".freeze, "json-java.gemspec".freeze, "json.gemspec".freeze, "json_pure.gemspec".freeze, "lib/json.rb".freeze, "lib/json/add/bigdecimal.rb".freeze, "lib/json/add/complex.rb".freeze, "lib/json/add/core.rb".freeze, "lib/json/add/date.rb".freeze, "lib/json/add/date_time.rb".freeze, "lib/json/add/exception.rb".freeze, "lib/json/add/ostruct.rb".freeze, "lib/json/add/range.rb".freeze, "lib/json/add/rational.rb".freeze, "lib/json/add/regexp.rb".freeze, "lib/json/add/struct.rb".freeze, "lib/json/add/symbol.rb".freeze, "lib/json/add/time.rb".freeze, "lib/json/common.rb".freeze, "lib/json/ext.rb".freeze, "lib/json/ext/.keep".freeze, "lib/json/generic_object.rb".freeze, "lib/json/pure.rb".freeze, "lib/json/pure/generator.rb".freeze, "lib/json/pure/parser.rb".freeze, "lib/json/version.rb".freeze, "references/rfc7159.txt".freeze, "tests/fixtures/fail10.json".freeze, "tests/fixtures/fail11.json".freeze, "tests/fixtures/fail12.json".freeze, "tests/fixtures/fail13.json".freeze, "tests/fixtures/fail14.json".freeze, "tests/fixtures/fail18.json".freeze, "tests/fixtures/fail19.json".freeze, "tests/fixtures/fail2.json".freeze, "tests/fixtures/fail20.json".freeze, "tests/fixtures/fail21.json".freeze, "tests/fixtures/fail22.json".freeze, "tests/fixtures/fail23.json".freeze, "tests/fixtures/fail24.json".freeze, "tests/fixtures/fail25.json".freeze, "tests/fixtures/fail27.json".freeze, "tests/fixtures/fail28.json".freeze, "tests/fixtures/fail3.json".freeze, "tests/fixtures/fail4.json".freeze, "tests/fixtures/fail5.json".freeze, "tests/fixtures/fail6.json".freeze, "tests/fixtures/fail7.json".freeze, "tests/fixtures/fail8.json".freeze, "tests/fixtures/fail9.json".freeze, "tests/fixtures/obsolete_fail1.json".freeze, "tests/fixtures/pass1.json".freeze, "tests/fixtures/pass15.json".freeze, "tests/fixtures/pass16.json".freeze, "tests/fixtures/pass17.json".freeze, "tests/fixtures/pass2.json".freeze, "tests/fixtures/pass26.json".freeze, "tests/fixtures/pass3.json".freeze, "tests/json_addition_test.rb".freeze, "tests/json_common_interface_test.rb".freeze, "tests/json_encoding_test.rb".freeze, "tests/json_ext_parser_test.rb".freeze, "tests/json_fixtures_test.rb".freeze, "tests/json_generator_test.rb".freeze, "tests/json_generic_object_test.rb".freeze, "tests/json_parser_test.rb".freeze, "tests/json_string_matching_test.rb".freeze, "tests/test_helper.rb".freeze, "tools/diff.sh".freeze, "tools/fuzz.rb".freeze, "tools/server.rb".freeze]
- s.homepage = "http://flori.github.com/json".freeze
- s.licenses = ["Ruby".freeze]
- s.rdoc_options = ["--title".freeze, "JSON implemention for ruby".freeze, "--main".freeze, "README.md".freeze]
- s.rubygems_version = "2.6.4".freeze
- s.summary = "JSON Implementation for Ruby".freeze
- s.test_files = ["./tests/test_helper.rb".freeze]
+ s.description = "This is a JSON implementation in pure Ruby."
+ s.email = "flori@ping.de"
+ s.extra_rdoc_files = ["README.md"]
+ s.files = ["./tests/test_helper.rb", ".gitignore", ".travis.yml", "CHANGES", "Gemfile", "README-json-jruby.markdown", "README.md", "Rakefile", "VERSION", "data/example.json", "data/index.html", "data/prototype.js", "diagrams/.keep", "ext/json/ext/fbuffer/fbuffer.h", "ext/json/ext/generator/depend", "ext/json/ext/generator/extconf.rb", "ext/json/ext/generator/generator.c", "ext/json/ext/generator/generator.h", "ext/json/ext/parser/depend", "ext/json/ext/parser/extconf.rb", "ext/json/ext/parser/parser.c", "ext/json/ext/parser/parser.h", "ext/json/ext/parser/parser.rl", "ext/json/extconf.rb", "install.rb", "java/src/json/ext/ByteListTranscoder.java", "java/src/json/ext/Generator.java", "java/src/json/ext/GeneratorMethods.java", "java/src/json/ext/GeneratorService.java", "java/src/json/ext/GeneratorState.java", "java/src/json/ext/OptionsReader.java", "java/src/json/ext/Parser.java", "java/src/json/ext/Parser.rl", "java/src/json/ext/ParserService.java", "java/src/json/ext/RuntimeInfo.java", "java/src/json/ext/StringDecoder.java", "java/src/json/ext/StringEncoder.java", "java/src/json/ext/Utils.java", "json-java.gemspec", "json.gemspec", "json_pure.gemspec", "lib/json.rb", "lib/json/add/bigdecimal.rb", "lib/json/add/complex.rb", "lib/json/add/core.rb", "lib/json/add/date.rb", "lib/json/add/date_time.rb", "lib/json/add/exception.rb", "lib/json/add/ostruct.rb", "lib/json/add/range.rb", "lib/json/add/rational.rb", "lib/json/add/regexp.rb", "lib/json/add/struct.rb", "lib/json/add/symbol.rb", "lib/json/add/time.rb", "lib/json/common.rb", "lib/json/ext.rb", "lib/json/ext/.keep", "lib/json/generic_object.rb", "lib/json/pure.rb", "lib/json/pure/generator.rb", "lib/json/pure/parser.rb", "lib/json/version.rb", "references/rfc7159.txt", "tests/fixtures/fail10.json", "tests/fixtures/fail11.json", "tests/fixtures/fail12.json", "tests/fixtures/fail13.json", "tests/fixtures/fail14.json", "tests/fixtures/fail18.json", "tests/fixtures/fail19.json", "tests/fixtures/fail2.json", "tests/fixtures/fail20.json", "tests/fixtures/fail21.json", "tests/fixtures/fail22.json", "tests/fixtures/fail23.json", "tests/fixtures/fail24.json", "tests/fixtures/fail25.json", "tests/fixtures/fail27.json", "tests/fixtures/fail28.json", "tests/fixtures/fail3.json", "tests/fixtures/fail4.json", "tests/fixtures/fail5.json", "tests/fixtures/fail6.json", "tests/fixtures/fail7.json", "tests/fixtures/fail8.json", "tests/fixtures/fail9.json", "tests/fixtures/obsolete_fail1.json", "tests/fixtures/pass1.json", "tests/fixtures/pass15.json", "tests/fixtures/pass16.json", "tests/fixtures/pass17.json", "tests/fixtures/pass2.json", "tests/fixtures/pass26.json", "tests/fixtures/pass3.json", "tests/json_addition_test.rb", "tests/json_common_interface_test.rb", "tests/json_encoding_test.rb", "tests/json_ext_parser_test.rb", "tests/json_fixtures_test.rb", "tests/json_generator_test.rb", "tests/json_generic_object_test.rb", "tests/json_parser_test.rb", "tests/json_string_matching_test.rb", "tests/test_helper.rb", "tools/diff.sh", "tools/fuzz.rb", "tools/server.rb"]
+ s.homepage = "http://flori.github.com/json"
+ s.licenses = ["Ruby"]
+ s.rdoc_options = ["--title", "JSON implemention for ruby", "--main", "README.md"]
+ s.rubygems_version = "2.5.1"
+ s.summary = "JSON Implementation for Ruby"
+ s.test_files = ["./tests/test_helper.rb"]
if s.respond_to? :specification_version then
s.specification_version = 4
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
- s.add_development_dependency(%q<rake>.freeze, [">= 0"])
- s.add_development_dependency(%q<test-unit>.freeze, ["~> 2.0"])
+ s.add_development_dependency(%q<rake>, [">= 0"])
+ s.add_development_dependency(%q<test-unit>, ["~> 2.0"])
else
- s.add_dependency(%q<rake>.freeze, [">= 0"])
- s.add_dependency(%q<test-unit>.freeze, ["~> 2.0"])
+ s.add_dependency(%q<rake>, [">= 0"])
+ s.add_dependency(%q<test-unit>, ["~> 2.0"])
end
else
- s.add_dependency(%q<rake>.freeze, [">= 0"])
- s.add_dependency(%q<test-unit>.freeze, ["~> 2.0"])
+ s.add_dependency(%q<rake>, [">= 0"])
+ s.add_dependency(%q<test-unit>, ["~> 2.0"])
end
end
diff --git a/lib/json.rb b/lib/json.rb
index 24aa385..b5a6912 100644
--- a/lib/json.rb
+++ b/lib/json.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'json/common'
##
diff --git a/lib/json/add/bigdecimal.rb b/lib/json/add/bigdecimal.rb
index 0ef69f1..539daee 100644
--- a/lib/json/add/bigdecimal.rb
+++ b/lib/json/add/bigdecimal.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/complex.rb b/lib/json/add/complex.rb
index 2723f60..28ef734 100644
--- a/lib/json/add/complex.rb
+++ b/lib/json/add/complex.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
@@ -25,4 +26,4 @@ class Complex
def to_json(*)
as_json.to_json
end
-end \ No newline at end of file
+end
diff --git a/lib/json/add/core.rb b/lib/json/add/core.rb
index 77d9dc0..bfb017c 100644
--- a/lib/json/add/core.rb
+++ b/lib/json/add/core.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
# This file requires the implementations of ruby core's custom objects for
# serialisation/deserialisation.
diff --git a/lib/json/add/date.rb b/lib/json/add/date.rb
index 458d9eb..2552356 100644
--- a/lib/json/add/date.rb
+++ b/lib/json/add/date.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/date_time.rb b/lib/json/add/date_time.rb
index a1009cf..38b0e86 100644
--- a/lib/json/add/date_time.rb
+++ b/lib/json/add/date_time.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/exception.rb b/lib/json/add/exception.rb
index f4b150d..a107e5b 100644
--- a/lib/json/add/exception.rb
+++ b/lib/json/add/exception.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/ostruct.rb b/lib/json/add/ostruct.rb
index a62f92f..7c13910 100644
--- a/lib/json/add/ostruct.rb
+++ b/lib/json/add/ostruct.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/range.rb b/lib/json/add/range.rb
index 0df382c..93529fb 100644
--- a/lib/json/add/range.rb
+++ b/lib/json/add/range.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/rational.rb b/lib/json/add/rational.rb
index ee39c20..356940b 100644
--- a/lib/json/add/rational.rb
+++ b/lib/json/add/rational.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/regexp.rb b/lib/json/add/regexp.rb
index 9adf06c..a93866b 100644
--- a/lib/json/add/regexp.rb
+++ b/lib/json/add/regexp.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/struct.rb b/lib/json/add/struct.rb
index e1e2480..e8395ed 100644
--- a/lib/json/add/struct.rb
+++ b/lib/json/add/struct.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/symbol.rb b/lib/json/add/symbol.rb
index 6df77ca..74b13a4 100644
--- a/lib/json/add/symbol.rb
+++ b/lib/json/add/symbol.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/add/time.rb b/lib/json/add/time.rb
index 1227508..b73acc4 100644
--- a/lib/json/add/time.rb
+++ b/lib/json/add/time.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
diff --git a/lib/json/common.rb b/lib/json/common.rb
index 55908f8..b53041b 100644
--- a/lib/json/common.rb
+++ b/lib/json/common.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'json/version'
require 'json/generic_object'
diff --git a/lib/json/generic_object.rb b/lib/json/generic_object.rb
index 8b8fd53..108309d 100644
--- a/lib/json/generic_object.rb
+++ b/lib/json/generic_object.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'ostruct'
module JSON
@@ -48,12 +49,12 @@ module JSON
end
def [](name)
- table[name.to_sym]
- end
+ __send__(name)
+ end unless method_defined?(:[])
def []=(name, value)
- __send__ "#{name}=", value
- end
+ __send__("#{name}=", value)
+ end unless method_defined?(:[]=)
def |(other)
self.class[other.to_hash.merge(to_hash)]
diff --git a/lib/json/pure/generator.rb b/lib/json/pure/generator.rb
index 98bc369..ccb6fe4 100644
--- a/lib/json/pure/generator.rb
+++ b/lib/json/pure/generator.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
module JSON
MAP = {
"\x0" => '\u0000',
diff --git a/lib/json/pure/parser.rb b/lib/json/pure/parser.rb
index f02f408..b907236 100644
--- a/lib/json/pure/parser.rb
+++ b/lib/json/pure/parser.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'strscan'
module JSON
diff --git a/tests/json_addition_test.rb b/tests/json_addition_test.rb
index 128f34a..a028e0f 100644
--- a/tests/json_addition_test.rb
+++ b/tests/json_addition_test.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'test_helper'
require 'json/add/core'
require 'json/add/complex'
@@ -108,7 +109,7 @@ class JSONAdditionTest < Test::Unit::TestCase
c = C.new
assert !C.json_creatable?
json = generate(c)
- assert_raises(ArgumentError, NameError) { parse(json, :create_additions => true) }
+ assert_raise(ArgumentError, NameError) { parse(json, :create_additions => true) }
end
def test_raw_strings
@@ -147,7 +148,7 @@ class JSONAdditionTest < Test::Unit::TestCase
assert_equal s, JSON(JSON(s), :create_additions => true)
struct = Struct.new :foo, :bar
s = struct.new 4711, 'foot'
- assert_raises(JSONError) { JSON(s) }
+ assert_raise(JSONError) { JSON(s) }
begin
raise TypeError, "test me"
rescue TypeError => e
diff --git a/tests/json_common_interface_test.rb b/tests/json_common_interface_test.rb
index 38136fa..b2051d4 100644
--- a/tests/json_common_interface_test.rb
+++ b/tests/json_common_interface_test.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'test_helper'
require 'stringio'
require 'tempfile'
@@ -100,8 +101,8 @@ class JSONCommonInterfaceTest < Test::Unit::TestCase
too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]'
assert_equal too_deep, dump(eval(too_deep))
assert_kind_of String, Marshal.dump(eval(too_deep))
- assert_raises(ArgumentError) { dump(eval(too_deep), 100) }
- assert_raises(ArgumentError) { Marshal.dump(eval(too_deep), 100) }
+ assert_raise(ArgumentError) { dump(eval(too_deep), 100) }
+ assert_raise(ArgumentError) { Marshal.dump(eval(too_deep), 100) }
assert_equal too_deep, dump(eval(too_deep), 101)
assert_kind_of String, Marshal.dump(eval(too_deep), 101)
output = StringIO.new
diff --git a/tests/json_encoding_test.rb b/tests/json_encoding_test.rb
index d983e12..29ae02e 100644
--- a/tests/json_encoding_test.rb
+++ b/tests/json_encoding_test.rb
@@ -1,4 +1,5 @@
# encoding: utf-8
+#frozen_string_literal: false
require 'test_helper'
class JSONEncodingTest < Test::Unit::TestCase
diff --git a/tests/json_ext_parser_test.rb b/tests/json_ext_parser_test.rb
index ade9784..c5a030e 100644
--- a/tests/json_ext_parser_test.rb
+++ b/tests/json_ext_parser_test.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'test_helper'
class JSONExtParserTest < Test::Unit::TestCase
diff --git a/tests/json_fixtures_test.rb b/tests/json_fixtures_test.rb
index 6681b8d..01954fe 100644
--- a/tests/json_fixtures_test.rb
+++ b/tests/json_fixtures_test.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'test_helper'
class JSONFixturesTest < Test::Unit::TestCase
@@ -22,7 +23,7 @@ class JSONFixturesTest < Test::Unit::TestCase
def test_failing
for name, source in @failed
- assert_raises(JSON::ParserError, JSON::NestingError,
+ assert_raise(JSON::ParserError, JSON::NestingError,
"Did not fail for fixture '#{name}': #{source.inspect}") do
JSON.parse(source)
end
diff --git a/tests/json_generator_test.rb b/tests/json_generator_test.rb
index 7087471..18b0833 100644
--- a/tests/json_generator_test.rb
+++ b/tests/json_generator_test.rb
@@ -118,12 +118,12 @@ EOT
assert s[:check_circular?]
h = { 1=>2 }
h[3] = h
- assert_raises(JSON::NestingError) { generate(h) }
- assert_raises(JSON::NestingError) { generate(h, s) }
+ assert_raise(JSON::NestingError) { generate(h) }
+ assert_raise(JSON::NestingError) { generate(h, s) }
s = JSON.state.new
a = [ 1, 2 ]
a << a
- assert_raises(JSON::NestingError) { generate(a, s) }
+ assert_raise(JSON::NestingError) { generate(a, s) }
assert s.check_circular?
assert s[:check_circular?]
end
@@ -177,34 +177,34 @@ EOT
end
def test_allow_nan
- assert_raises(GeneratorError) { generate([JSON::NaN]) }
+ assert_raise(GeneratorError) { generate([JSON::NaN]) }
assert_equal '[NaN]', generate([JSON::NaN], :allow_nan => true)
- assert_raises(GeneratorError) { fast_generate([JSON::NaN]) }
- assert_raises(GeneratorError) { pretty_generate([JSON::NaN]) }
+ assert_raise(GeneratorError) { fast_generate([JSON::NaN]) }
+ assert_raise(GeneratorError) { pretty_generate([JSON::NaN]) }
assert_equal "[\n NaN\n]", pretty_generate([JSON::NaN], :allow_nan => true)
- assert_raises(GeneratorError) { generate([JSON::Infinity]) }
+ assert_raise(GeneratorError) { generate([JSON::Infinity]) }
assert_equal '[Infinity]', generate([JSON::Infinity], :allow_nan => true)
- assert_raises(GeneratorError) { fast_generate([JSON::Infinity]) }
- assert_raises(GeneratorError) { pretty_generate([JSON::Infinity]) }
+ assert_raise(GeneratorError) { fast_generate([JSON::Infinity]) }
+ assert_raise(GeneratorError) { pretty_generate([JSON::Infinity]) }
assert_equal "[\n Infinity\n]", pretty_generate([JSON::Infinity], :allow_nan => true)
- assert_raises(GeneratorError) { generate([JSON::MinusInfinity]) }
+ assert_raise(GeneratorError) { generate([JSON::MinusInfinity]) }
assert_equal '[-Infinity]', generate([JSON::MinusInfinity], :allow_nan => true)
- assert_raises(GeneratorError) { fast_generate([JSON::MinusInfinity]) }
- assert_raises(GeneratorError) { pretty_generate([JSON::MinusInfinity]) }
+ assert_raise(GeneratorError) { fast_generate([JSON::MinusInfinity]) }
+ assert_raise(GeneratorError) { pretty_generate([JSON::MinusInfinity]) }
assert_equal "[\n -Infinity\n]", pretty_generate([JSON::MinusInfinity], :allow_nan => true)
end
def test_depth
ary = []; ary << ary
assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth
- assert_raises(JSON::NestingError) { generate(ary) }
+ assert_raise(JSON::NestingError) { generate(ary) }
assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth
assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth
- assert_raises(JSON::NestingError) { JSON.pretty_generate(ary) }
+ assert_raise(JSON::NestingError) { JSON.pretty_generate(ary) }
assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth
s = JSON.state.new
assert_equal 0, s.depth
- assert_raises(JSON::NestingError) { ary.to_json(s) }
+ assert_raise(JSON::NestingError) { ary.to_json(s) }
assert_equal 100, s.depth
end
@@ -330,8 +330,8 @@ EOT
def test_nesting
too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]'
too_deep_ary = eval too_deep
- assert_raises(JSON::NestingError) { generate too_deep_ary }
- assert_raises(JSON::NestingError) { generate too_deep_ary, :max_nesting => 100 }
+ assert_raise(JSON::NestingError) { generate too_deep_ary }
+ assert_raise(JSON::NestingError) { generate too_deep_ary, :max_nesting => 100 }
ok = generate too_deep_ary, :max_nesting => 101
assert_equal too_deep, ok
ok = generate too_deep_ary, :max_nesting => nil
diff --git a/tests/json_generic_object_test.rb b/tests/json_generic_object_test.rb
index 171fdb8..82742dc 100644
--- a/tests/json_generic_object_test.rb
+++ b/tests/json_generic_object_test.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'test_helper'
class JSONGenericObjectTest < Test::Unit::TestCase
diff --git a/tests/json_parser_test.rb b/tests/json_parser_test.rb
index a5793f9..5120f09 100644
--- a/tests/json_parser_test.rb
+++ b/tests/json_parser_test.rb
@@ -1,4 +1,5 @@
# encoding: utf-8
+# frozen_string_literal: false
require 'test_helper'
require 'stringio'
@@ -19,6 +20,16 @@ class JSONParserTest < Test::Unit::TestCase
assert_equal Encoding::UTF_16, source.encoding
end if defined?(Encoding::UTF_16)
+ def test_error_message_encoding
+ bug10705 = '[ruby-core:67386] [Bug #10705]'
+ json = ".\"\xE2\x88\x9A\"".force_encoding(Encoding::UTF_8)
+ e = assert_raise(JSON::ParserError) {
+ JSON::Ext::Parser.new(json).parse
+ }
+ assert_equal(Encoding::UTF_8, e.message.encoding, bug10705)
+ assert_include(e.message, json, bug10705)
+ end if defined?(Encoding::UTF_8) and defined?(JSON::Ext::Parser)
+
def test_parsing
parser = JSON::Parser.new('"test"')
assert_equal 'test', parser.parse
@@ -52,7 +63,7 @@ class JSONParserTest < Test::Unit::TestCase
assert_equal({ "a" => nil }, parse('{"a":null}'))
assert_equal({ "a" => false }, parse('{ "a" : false } '))
assert_equal({ "a" => false }, parse('{"a":false}'))
- assert_raises(JSON::ParserError) { parse('{false}') }
+ assert_raise(JSON::ParserError) { parse('{false}') }
assert_equal({ "a" => true }, parse('{"a":true}'))
assert_equal({ "a" => true }, parse(' { "a" : true } '))
assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
@@ -64,10 +75,10 @@ class JSONParserTest < Test::Unit::TestCase
end
def test_parse_numbers
- assert_raises(JSON::ParserError) { parse('+23.2') }
- assert_raises(JSON::ParserError) { parse('+23') }
- assert_raises(JSON::ParserError) { parse('.23') }
- assert_raises(JSON::ParserError) { parse('023') }
+ assert_raise(JSON::ParserError) { parse('+23.2') }
+ assert_raise(JSON::ParserError) { parse('+23') }
+ assert_raise(JSON::ParserError) { parse('.23') }
+ assert_raise(JSON::ParserError) { parse('023') }
assert_equal 23, parse('23')
assert_equal -23, parse('-23')
assert_equal_float 3.141, parse('3.141')
@@ -78,11 +89,11 @@ class JSONParserTest < Test::Unit::TestCase
assert_equal_float 3.141, parse('3141.0E-3')
assert_equal_float -3.141, parse('-3141.0e-3')
assert_equal_float -3.141, parse('-3141e-3')
- assert_raises(ParserError) { parse('NaN') }
+ assert_raise(ParserError) { parse('NaN') }
assert parse('NaN', :allow_nan => true).nan?
- assert_raises(ParserError) { parse('Infinity') }
+ assert_raise(ParserError) { parse('Infinity') }
assert_equal 1.0/0, parse('Infinity', :allow_nan => true)
- assert_raises(ParserError) { parse('-Infinity') }
+ assert_raise(ParserError) { parse('-Infinity') }
assert_equal -1.0/0, parse('-Infinity', :allow_nan => true)
end
@@ -165,19 +176,19 @@ class JSONParserTest < Test::Unit::TestCase
end
def test_some_wrong_inputs
- assert_raises(ParserError) { parse('[] bla') }
- assert_raises(ParserError) { parse('[] 1') }
- assert_raises(ParserError) { parse('[] []') }
- assert_raises(ParserError) { parse('[] {}') }
- assert_raises(ParserError) { parse('{} []') }
- assert_raises(ParserError) { parse('{} {}') }
- assert_raises(ParserError) { parse('[NULL]') }
- assert_raises(ParserError) { parse('[FALSE]') }
- assert_raises(ParserError) { parse('[TRUE]') }
- assert_raises(ParserError) { parse('[07] ') }
- assert_raises(ParserError) { parse('[0a]') }
- assert_raises(ParserError) { parse('[1.]') }
- assert_raises(ParserError) { parse(' ') }
+ assert_raise(ParserError) { parse('[] bla') }
+ assert_raise(ParserError) { parse('[] 1') }
+ assert_raise(ParserError) { parse('[] []') }
+ assert_raise(ParserError) { parse('[] {}') }
+ assert_raise(ParserError) { parse('{} []') }
+ assert_raise(ParserError) { parse('{} {}') }
+ assert_raise(ParserError) { parse('[NULL]') }
+ assert_raise(ParserError) { parse('[FALSE]') }
+ assert_raise(ParserError) { parse('[TRUE]') }
+ assert_raise(ParserError) { parse('[07] ') }
+ assert_raise(ParserError) { parse('[0a]') }
+ assert_raise(ParserError) { parse('[1.]') }
+ assert_raise(ParserError) { parse(' ') }
end
def test_symbolize_names
@@ -212,7 +223,7 @@ EOT
* comment */
}
EOT
- assert_raises(ParserError) { parse(json) }
+ assert_raise(ParserError) { parse(json) }
json = <<EOT
{
"key1":"value1" /* multi line
@@ -221,7 +232,7 @@ EOT
and again, throw an Error */
}
EOT
- assert_raises(ParserError) { parse(json) }
+ assert_raise(ParserError) { parse(json) }
json = <<EOT
{
"key1":"value1" /*/*/
@@ -233,8 +244,8 @@ EOT
def test_nesting
too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]'
too_deep_ary = eval too_deep
- assert_raises(JSON::NestingError) { parse too_deep }
- assert_raises(JSON::NestingError) { parse too_deep, :max_nesting => 100 }
+ assert_raise(JSON::NestingError) { parse too_deep }
+ assert_raise(JSON::NestingError) { parse too_deep, :max_nesting => 100 }
ok = parse too_deep, :max_nesting => 101
assert_equal too_deep_ary, ok
ok = parse too_deep, :max_nesting => nil
diff --git a/tests/json_string_matching_test.rb b/tests/json_string_matching_test.rb
index 7fec841..5d55dc3 100644
--- a/tests/json_string_matching_test.rb
+++ b/tests/json_string_matching_test.rb
@@ -1,3 +1,4 @@
+#frozen_string_literal: false
require 'test_helper'
require 'time'