summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2015-03-17 10:22:41 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2015-03-17 10:26:45 -0700
commit673fa239c4f3728984dade81b671f58d1ac8b46a (patch)
treeaef3493dfe180b979e754fc04bde40d923a3dbcc /lib
parentb25ee97908643492aecd88b9649ff5749244ad02 (diff)
downloadffi-yajl-673fa239c4f3728984dade81b671f58d1ac8b46a.tar.gz
Removing JSON gem compatibility layer
This causes issues because JSON and ffi-yajl get into fights over who monkeypatched the classes last and this causes random issues with whitespace disagreement between the JSON gem and the underlying libyajl C library. For deterministic output its better not to have fighting monkeypatches, it generates considerable chaos. If anyone wants to extract the json_gem.rb file into a gem of its own and support these monkeypatches going forwards that would be fine (there is, in fact, literally nothing that could be done to stop you), but we do not want to support these.
Diffstat (limited to 'lib')
-rw-r--r--lib/ffi_yajl/json_gem.rb140
1 files changed, 0 insertions, 140 deletions
diff --git a/lib/ffi_yajl/json_gem.rb b/lib/ffi_yajl/json_gem.rb
deleted file mode 100644
index bb34d9d..0000000
--- a/lib/ffi_yajl/json_gem.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-
-# JSON compatibility layer, largely plagarized from yajl-ruby
-
-require 'ffi_yajl' unless defined?(FFI_Yajl::Parser)
-
-warn "ffi-yajl/json_gem is deprecated, these monkeypatches will be dropped shortly"
-
-module JSON
- class JSONError < StandardError; end unless defined?(JSON::JSONError)
- class GeneratorError < JSONError; end unless defined?(JSON::GeneratorError)
- class ParserError < JSONError; end unless defined?(JSON::ParserError)
-
- def self.generate(obj, opts=nil)
- opts ||= {}
- options_map = {}
- if opts.has_key?(:indent)
- options_map[:pretty] = true
- options_map[:indent] = opts[:indent]
- end
- FFI_Yajl::Encoder.encode(obj, options_map)
- rescue FFI_Yajl::EncodeError => e
- raise JSON::GeneratorError, e.message
- end
-
- def self.pretty_generate(obj, opts=nil)
- opts ||= {}
- options_map = {}
- options_map[:pretty] = true
- options_map[:indent] = opts[:indent] if opts.has_key?(:indent)
- FFI_Yajl::Encoder.encode(obj, options_map).chomp
- rescue FFI_Yajl::EncodeError => e
- raise JSON::GeneratorError, e.message
- end
-
- def self.dump(obj, io=nil, *args)
- FFI_Yajl::Encoder.encode(obj, io)
- rescue FFI_Yajl::EncodeError => e
- raise JSON::GeneratorError, e.message
- end
-
- def self.default_options
- @default_options ||= {:symbolize_keys => false}
- end
-
- def self.parse(str, opts=JSON.default_options)
- FFI_Yajl::Parser.parse(str, opts)
- rescue FFI_Yajl::ParseError => e
- raise JSON::ParserError, e.message
- end
-
- def self.load(input, *args)
- FFI_Yajl::Parser.parse(input, default_options)
- rescue FFI_Yajl::ParseError => e
- raise JSON::ParserError, e.message
- end
-end
-
-class Array
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class Hash
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class Fixnum
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class Float
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class String
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class TrueClass
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class FalseClass
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class NilClass
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class Date
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class Time
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-class DateTime
- def to_json(*opts, &block)
- FFI_Yajl::Encoder.encode(self, *opts)
- end
-end
-
-module ::Kernel
- def JSON(object, opts = {})
- if object.respond_to? :to_s
- JSON.parse(object.to_s, JSON.default_options.merge(opts))
- else
- JSON.generate(object,opts)
- end
- end
-end
-
-class Object
- unless defined?(ActiveSupport)
- def to_json(*args, &block)
- "\"#{to_s}\""
- end
- end
-end