brianmario-yajl-ruby 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,40 @@
1
+ # encoding: UTF-8
2
+ require 'yajl' unless defined?(Yajl::Parser)
3
+
4
+ # NOTE: this is probably temporary until I can split out the JSON compat C code into it's own
5
+ # extension that can be included when this file is.
6
+ Yajl::Encoder.enable_json_gem_compatability
7
+
8
+ module JSON
9
+ def self.generate(obj, opts={})
10
+ begin
11
+ options_map = {}
12
+ if opts.has_key?(:indent)
13
+ options_map[:pretty] = true
14
+ options_map[:indent] = opts[:indent]
15
+ end
16
+ Yajl::Encoder.encode(obj, options_map)
17
+ rescue Yajl::ParseError => e
18
+ raise JSON::ParserError, e.message
19
+ end
20
+ end
21
+
22
+ def self.pretty_generate(obj, opts={})
23
+ begin
24
+ options_map = {}
25
+ options_map[:pretty] = true
26
+ options_map[:indent] = opts[:indent] if opts.has_key?(:indent)
27
+ Yajl::Encoder.encode(obj, options_map)
28
+ rescue Yajl::ParseError => e
29
+ raise JSON::ParserError, e.message
30
+ end
31
+ end
32
+
33
+ def self.dump(obj, io=nil, *args)
34
+ begin
35
+ Yajl::Encoder.encode(obj, io)
36
+ rescue Yajl::ParseError => e
37
+ raise JSON::ParserError, e.message
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: UTF-8
2
+ require 'yajl' unless defined?(Yajl::Parser)
3
+
4
+ module JSON
5
+ class ParserError < Yajl::ParseError; end
6
+
7
+ def self.default_options
8
+ @default_options ||= {:symbolize_keys => false}
9
+ end
10
+
11
+ def self.parse(str, opts=JSON.default_options)
12
+ begin
13
+ Yajl::Parser.parse(str, opts)
14
+ rescue Yajl::ParseError => e
15
+ raise JSON::ParserError, e.message
16
+ end
17
+ end
18
+
19
+ def self.load(input, *args)
20
+ begin
21
+ Yajl::Parser.parse(input, default_options)
22
+ rescue Yajl::ParseError => e
23
+ raise JSON::ParserError, e.message
24
+ end
25
+ end
26
+ end
data/lib/yajl/json_gem.rb CHANGED
@@ -1,67 +1,12 @@
1
1
  # encoding: UTF-8
2
2
  require 'yajl' unless defined?(Yajl::Parser)
3
-
4
- # NOTE: this is probably temporary until I can split out the JSON compat C code into it's own
5
- # extension that can be included when this file is.
6
- Yajl::Encoder.enable_json_gem_compatability
7
-
8
- module JSON
9
-
10
- class ParserError < Yajl::ParseError; end
11
-
12
- def self.parse(str, opts={})
13
- begin
14
- Yajl::Parser.parse(str, opts)
15
- rescue Yajl::ParseError => e
16
- raise JSON::ParserError, e.message
17
- end
18
- end
19
-
20
- def self.generate(obj, opts={})
21
- begin
22
- options_map = {}
23
- if opts.has_key?(:indent)
24
- options_map[:pretty] = true
25
- options_map[:indent] = opts[:indent]
26
- end
27
- Yajl::Encoder.encode(obj, options_map)
28
- rescue Yajl::ParseError => e
29
- raise JSON::ParserError, e.message
30
- end
31
- end
32
-
33
- def self.pretty_generate(obj, opts={})
34
- begin
35
- options_map = {}
36
- options_map[:pretty] = true
37
- options_map[:indent] = opts[:indent] if opts.has_key?(:indent)
38
- Yajl::Encoder.encode(obj, options_map)
39
- rescue Yajl::ParseError => e
40
- raise JSON::ParserError, e.message
41
- end
42
- end
43
-
44
- def self.load(input, *args)
45
- begin
46
- Yajl::Parser.parse(input)
47
- rescue Yajl::ParseError => e
48
- raise JSON::ParserError, e.message
49
- end
50
- end
51
-
52
- def self.dump(obj, io=nil, *args)
53
- begin
54
- Yajl::Encoder.encode(obj, io)
55
- rescue Yajl::ParseError => e
56
- raise JSON::ParserError, e.message
57
- end
58
- end
59
- end
3
+ require 'yajl/json_gem/parsing'
4
+ require 'yajl/json_gem/encoding'
60
5
 
61
6
  module ::Kernel
62
7
  def JSON(object, opts = {})
63
8
  if object.respond_to? :to_s
64
- JSON.parse(object.to_s, opts)
9
+ JSON.parse(object.to_s, JSON.default_options.merge(opts))
65
10
  else
66
11
  JSON.generate(object, opts)
67
12
  end
data/lib/yajl.rb CHANGED
@@ -13,7 +13,7 @@ require 'yajl_ext'
13
13
  #
14
14
  # Ruby bindings to the excellent Yajl (Yet Another JSON Parser) ANSI C library.
15
15
  module Yajl
16
- VERSION = "0.5.5"
16
+ VERSION = "0.5.6"
17
17
 
18
18
  class Parser
19
19
  # A helper method for parse-and-forget use-cases
@@ -45,6 +45,14 @@ describe "JSON Gem compatability API" do
45
45
  JSON.respond_to?(:dump).should be_true
46
46
  end
47
47
 
48
+ it "should allow default parsing options be set with JSON.default_options" do
49
+ default = JSON.default_options[:symbolize_keys]
50
+ JSON.parse('{"foo": 1234}').should === {"foo" => 1234}
51
+ JSON.default_options[:symbolize_keys] = true
52
+ JSON.parse('{"foo": 1234}').should === {:foo => 1234}
53
+ JSON.default_options[:symbolize_keys] = default # ensure the rest of the test cases expect the default
54
+ end
55
+
48
56
  context "ported tests for Unicode" do
49
57
  it "should be able to encode and parse unicode" do
50
58
  pending if RUBY_VERSION.include?('1.9') # FIXME: Some string encoding problem with 1.9
data/yajl-ruby.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{yajl-ruby}
5
- s.version = "0.5.5"
5
+ s.version = "0.5.6"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Brian Lopez", "Lloyd Hilaiel"]
9
- s.date = %q{2009-06-18}
9
+ s.date = %q{2009-06-19}
10
10
  s.email = %q{seniorlopez@gmail.com}
11
11
  s.extensions = ["ext/extconf.rb"]
12
12
  s.extra_rdoc_files = [
@@ -27,11 +27,10 @@ Gem::Specification.new do |s|
27
27
  "benchmark/parse_json_and_marshal.rb",
28
28
  "benchmark/parse_json_and_yaml.rb",
29
29
  "benchmark/parse_stream.rb",
30
- "benchmark/subjects/contacts.json",
31
- "benchmark/subjects/contacts.marshal_dump",
32
- "benchmark/subjects/contacts.yml",
33
30
  "benchmark/subjects/item.json",
34
31
  "benchmark/subjects/ohai.json",
32
+ "benchmark/subjects/ohai.marshal_dump",
33
+ "benchmark/subjects/ohai.yml",
35
34
  "benchmark/subjects/twitter_search.json",
36
35
  "benchmark/subjects/twitter_stream.json",
37
36
  "benchmark/subjects/unicode.json",
@@ -71,6 +70,8 @@ Gem::Specification.new do |s|
71
70
  "lib/yajl/gzip/stream_writer.rb",
72
71
  "lib/yajl/http_stream.rb",
73
72
  "lib/yajl/json_gem.rb",
73
+ "lib/yajl/json_gem/encoding.rb",
74
+ "lib/yajl/json_gem/parsing.rb",
74
75
  "spec/encoding/encoding_spec.rb",
75
76
  "spec/http/fixtures/http.bzip2.dump",
76
77
  "spec/http/fixtures/http.deflate.dump",
@@ -145,6 +146,7 @@ Gem::Specification.new do |s|
145
146
  s.homepage = %q{http://github.com/brianmario/yajl-ruby}
146
147
  s.rdoc_options = ["--charset=UTF-8"]
147
148
  s.require_paths = ["lib", "ext"]
149
+ s.rubyforge_project = %q{yajl-ruby}
148
150
  s.rubygems_version = %q{1.3.4}
149
151
  s.summary = %q{Ruby C bindings to the excellent Yajl JSON stream-based parser library.}
150
152
  s.test_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brianmario-yajl-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Lopez
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-06-18 00:00:00 -07:00
13
+ date: 2009-06-19 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -37,11 +37,10 @@ files:
37
37
  - benchmark/parse_json_and_marshal.rb
38
38
  - benchmark/parse_json_and_yaml.rb
39
39
  - benchmark/parse_stream.rb
40
- - benchmark/subjects/contacts.json
41
- - benchmark/subjects/contacts.marshal_dump
42
- - benchmark/subjects/contacts.yml
43
40
  - benchmark/subjects/item.json
44
41
  - benchmark/subjects/ohai.json
42
+ - benchmark/subjects/ohai.marshal_dump
43
+ - benchmark/subjects/ohai.yml
45
44
  - benchmark/subjects/twitter_search.json
46
45
  - benchmark/subjects/twitter_stream.json
47
46
  - benchmark/subjects/unicode.json
@@ -81,6 +80,8 @@ files:
81
80
  - lib/yajl/gzip/stream_writer.rb
82
81
  - lib/yajl/http_stream.rb
83
82
  - lib/yajl/json_gem.rb
83
+ - lib/yajl/json_gem/encoding.rb
84
+ - lib/yajl/json_gem/parsing.rb
84
85
  - spec/encoding/encoding_spec.rb
85
86
  - spec/http/fixtures/http.bzip2.dump
86
87
  - spec/http/fixtures/http.deflate.dump
@@ -173,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
174
  version:
174
175
  requirements: []
175
176
 
176
- rubyforge_project:
177
+ rubyforge_project: yajl-ruby
177
178
  rubygems_version: 1.2.0
178
179
  signing_key:
179
180
  specification_version: 3