diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2013-12-31 10:16:30 -0600 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2013-12-31 10:16:30 -0600 |
commit | 18c88157be17f04cbd3f53edc9377eb57a46888c (patch) | |
tree | 5bdffc0a1b73314f213455e735fd926589eda1a7 /lib | |
parent | 8226eab6e1127f030ad304c0f297e0f0d79572da (diff) | |
download | ffi-yajl-18c88157be17f04cbd3f53edc9377eb57a46888c.tar.gz |
reorganization of ext-vs-ffi
cleanup ext-vs-ffi logic, require 'ffi_yajl/ffi' and
'ffi_yajl/ext' should work now
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl.rb | 19 | ||||
-rw-r--r-- | lib/ffi_yajl/encoder.rb | 19 | ||||
-rw-r--r-- | lib/ffi_yajl/ext.rb | 17 | ||||
-rw-r--r-- | lib/ffi_yajl/ffi.rb | 18 | ||||
-rw-r--r-- | lib/ffi_yajl/parser.rb | 18 |
5 files changed, 45 insertions, 46 deletions
diff --git a/lib/ffi_yajl.rb b/lib/ffi_yajl.rb index 0f906b6..ea900bc 100644 --- a/lib/ffi_yajl.rb +++ b/lib/ffi_yajl.rb @@ -1,10 +1,13 @@ -require 'rubygems' -require 'ffi_yajl/encoder' -require 'ffi_yajl/parser' - -module FFI_Yajl - class ParseError < StandardError; end - class EncodeError < StandardError; end +if ENV['FORCE_FFI_YAJL'] == "ext" + require 'ffi_yajl/ext' +elsif ENV['FORCE_FFI_YAJL'] == "ffi" || defined?(Yajl) + # on Linux yajl-ruby and non-FFI ffi_yajl conflict + require 'ffi_yajl/ffi' +else + begin + require 'ffi_yajl/ext' + rescue LoadError + require 'ffi_yajl/ffi' + end end - diff --git a/lib/ffi_yajl/encoder.rb b/lib/ffi_yajl/encoder.rb index f742741..8b5bfcb 100644 --- a/lib/ffi_yajl/encoder.rb +++ b/lib/ffi_yajl/encoder.rb @@ -1,5 +1,6 @@ module FFI_Yajl + class EncodeError < StandardError; end class Encoder attr_accessor :opts @@ -48,23 +49,5 @@ module FFI_Yajl raise FFI_Yajl::EncodeError, "Unknown YAJL Error, please report this as a bug" end end - - if ENV['FORCE_FFI_YAJL'] == "ext" - require 'ffi_yajl/ext/encoder' - include FFI_Yajl::Ext::Encoder - elsif ENV['FORCE_FFI_YAJL'] == "ffi" || defined?(Yajl) - # on Linux yajl-ruby and non-FFI ffi_yajl conflict - require 'ffi_yajl/ffi/encoder' - include FFI_Yajl::FFI::Encoder - else - begin - require 'ffi_yajl/ext/encoder' - include FFI_Yajl::Ext::Encoder - rescue LoadError - require 'ffi_yajl/ffi/encoder' - include FFI_Yajl::FFI::Encoder - end - end - end end diff --git a/lib/ffi_yajl/ext.rb b/lib/ffi_yajl/ext.rb new file mode 100644 index 0000000..d8dac6e --- /dev/null +++ b/lib/ffi_yajl/ext.rb @@ -0,0 +1,17 @@ +require 'rubygems' + +require 'ffi_yajl/encoder' +require 'ffi_yajl/parser' + +module FFI_Yajl + class Parser + require 'ffi_yajl/ext/parser' + include FFI_Yajl::Ext::Parser + end + + class Encoder + require 'ffi_yajl/ext/encoder' + include FFI_Yajl::Ext::Encoder + end +end + diff --git a/lib/ffi_yajl/ffi.rb b/lib/ffi_yajl/ffi.rb index 5940a27..bc782e5 100644 --- a/lib/ffi_yajl/ffi.rb +++ b/lib/ffi_yajl/ffi.rb @@ -1,8 +1,7 @@ - +require 'rubygems' require 'ffi' -# FIXME move to FFI_Yajl::FFI module FFI_Yajl extend ::FFI::Library @@ -112,6 +111,19 @@ module FFI_Yajl # void yajl_gen_clear (yajl_gen hand) attach_function :yajl_gen_clear, [:yajl_gen], :void - end +require 'ffi_yajl/encoder' +require 'ffi_yajl/parser' + +module FFI_Yajl + class Parser + require 'ffi_yajl/ffi/parser' + include FFI_Yajl::FFI::Parser + end + + class Encoder + require 'ffi_yajl/ffi/encoder' + include FFI_Yajl::FFI::Encoder + end +end diff --git a/lib/ffi_yajl/parser.rb b/lib/ffi_yajl/parser.rb index 33bb2c3..3c40a44 100644 --- a/lib/ffi_yajl/parser.rb +++ b/lib/ffi_yajl/parser.rb @@ -1,5 +1,6 @@ module FFI_Yajl + class ParseError < StandardError; end class Parser attr_accessor :opts @@ -18,22 +19,5 @@ module FFI_Yajl # call either the ext or ffi hook do_yajl_parse(str, yajl_opts) end - - if ENV['FORCE_FFI_YAJL'] == "ext" - require 'ffi_yajl/ext/parser' - include FFI_Yajl::Ext::Parser - elsif ENV['FORCE_FFI_YAJL'] == "ffi" || defined?(Yajl) - # on Linux yajl-ruby and non-FFI ffi_yajl conflict - require 'ffi_yajl/ffi/parser' - include FFI_Yajl::FFI::Parser - else - begin - require 'ffi_yajl/ext/parser' - include FFI_Yajl::Ext::Parser - rescue LoadError - require 'ffi_yajl/ffi/parser' - include FFI_Yajl::FFI::Parser - end - end end end |