Module: FFI_Yajl::FFI::Encoder

### Home Classes Methods

### In Files

- lib/ffi_yajl/ffi/encoder.rb

### Methods

- #do_yajl_encode

### Files

- LICENSE
- MIT-LICENSE

### Class/Module Index

Quicksearch

- FFI_Yajl
- FFI_Yajl::Benchmark
- FFI_Yajl::Benchmark::Encode
- FFI_Yajl::Benchmark::EncodeProfile
- FFI_Yajl::Benchmark::Parse
- FFI_Yajl::Benchmark::ParseProfile
- FFI_Yajl::Benchmark::ParseProfileRubyProf
- FFI_Yajl::EncodeError
- FFI_Yajl::Encoder
- FFI_Yajl::FFI
- FFI_Yajl::FFI::Encoder
- FFI_Yajl::FFI::Parser
- FFI_Yajl::ParseError
- FFI_Yajl::Parser
- FFI_Yajl::Platform
- FFI_Yajl::YajlCallbacks
- JSON
- JSON::GeneratorError
- JSON::JSONError
- JSON::ParserError
- Array
- Bignum
- Date
- DateTime
- FalseClass
- Fixnum
- Float
- Hash
- Kernel
- NilClass
- Object
- String
- Symbol
- Time
- TrueClass

No matching classes.

# FFI_Yajl::FFI::Encoder

### Public Instance Methods

do_yajl_encode(obj, yajl_gen_opts, opts) click to toggle source

    # File lib/ffi_yajl/ffi/encoder.rb, line 7
    def do_yajl_encode(obj, yajl_gen_opts, opts)
      yajl_gen = FFI_Yajl.yajl_gen_alloc(nil);

      # configure the yajl encoder
      if yajl_gen_opts[:yajl_gen_beautify]
        FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_beautify, :int, 1)
      end
      if yajl_gen_opts[:yajl_gen_validate_utf8]
        FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_validate_utf8, :int, 1)
      end
      indent = yajl_gen_opts[:yajl_gen_indent_string] || " "
      FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_indent_string, :string, indent)

      # setup our own state
      state = {
        :json_opts => opts,
        :processing_key => false,
      }

      # do the encoding
      obj.ffi_yajl(yajl_gen, state)

      # get back our encoded JSON
      string_ptr = ::FFI::MemoryPointer.new(:string)
      length_ptr = ::FFI::MemoryPointer.new(:int)
      if ( status = FFI_Yajl.yajl_gen_get_buf(yajl_gen, string_ptr, length_ptr) ) != 0
        FFI_Yajl::Encoder.raise_error_for_status(status)
      end
      length = length_ptr.read_int
      string = string_ptr.get_pointer(0).read_string

      FFI_Yajl.yajl_gen_free(yajl_gen)

      return string
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.