module ICU::Normalization
Public Class Methods
normalize(input, mode = :default)
click to toggle source
# File lib/ffi-icu/normalization.rb, line 4 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