Sha256: e47c473a7beec367791df82785e2f28468c0d19fee040f30ee30da18018c62d6

Contents?: true

Size: 781 Bytes

Versions: 25

Compression:

Stored size: 781 Bytes

Contents

module ICU
  module Normalization

    def self.normalize(input, mode = :default)
      input_length  = input.jlength
      needed_length = out_length = options = 0
      in_ptr        = UCharPointer.from_string(input)
      out_ptr       = UCharPointer.new(out_length)

      retried = false

      begin
        Lib.check_error do |error|
          needed_length = Lib.unorm_normalize(in_ptr, input_length, mode, options, out_ptr, out_length, error)
        end
      rescue BufferOverflowError
        raise BufferOverflowError, "needed: #{needed_length}" if retried

        out_ptr       = out_ptr.resized_to needed_length
        out_length    = needed_length + 1

        retried = true
        retry
      end

      out_ptr.string
    end

  end # Normalization
end # ICU

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
ffi-icu-0.5.3 lib/ffi-icu/normalization.rb
ffi-icu-0.5.2 lib/ffi-icu/normalization.rb
ffi-icu-0.5.1 lib/ffi-icu/normalization.rb
ffi-icu-0.5.0 lib/ffi-icu/normalization.rb
ffi-icu-0.4.3 lib/ffi-icu/normalization.rb
ffi-icu-0.4.2 lib/ffi-icu/normalization.rb
ffi-icu-0.4.1 lib/ffi-icu/normalization.rb
ffi-icu-0.4.0 lib/ffi-icu/normalization.rb
ffi-icu-0.3.0 lib/ffi-icu/normalization.rb
ffi-icu-0.2.0 lib/ffi-icu/normalization.rb
ffi-icu-0.1.10 lib/ffi-icu/normalization.rb
ffi-icu-0.1.9 lib/ffi-icu/normalization.rb
ffi-icu-0.1.8 lib/ffi-icu/normalization.rb
ffi-icu-0.1.7 lib/ffi-icu/normalization.rb
ffi-icu-0.1.6 lib/ffi-icu/normalization.rb
ffi-icu-0.1.5 lib/ffi-icu/normalization.rb
ffi-icu-0.1.4 lib/ffi-icu/normalization.rb
ffi-icu-0.1.3 lib/ffi-icu/normalization.rb
ffi-icu-0.1.2 lib/ffi-icu/normalization.rb
ffi-icu-0.1.1 lib/ffi-icu/normalization.rb