class Idna::Client
Public Class Methods
lib_load!()
click to toggle source
# File lib/idna/client.rb, line 7 def lib_load! ffi_lib Idna::Configure.ffi_lib attach_function :idna_to_ascii_8z, %i[string pointer int], :int attach_function :idna_to_unicode_8z8z, %i[string pointer int], :int end
Public Instance Methods
to_ascii(string, skip_useless: false)
click to toggle source
# File lib/idna/client.rb, line 15 def to_ascii(string, skip_useless: false) return unless string return string if skip_useless && string.ascii_only? pointer = FFI::MemoryPointer.new :pointer int = idna_to_ascii_8z(string, pointer, 0x0001) Idna::Error.handling(int) unless int == 0 result = pointer.read_pointer.read_string pointer.free result end
to_unicode(string, skip_useless: false)
click to toggle source
# File lib/idna/client.rb, line 28 def to_unicode(string, skip_useless: false) return unless string return string if skip_useless && !string.ascii_only? pointer = FFI::MemoryPointer.new :pointer int = idna_to_unicode_8z8z(string, pointer, 0x0001) Idna::Error.handling(int) unless int == 0 result = pointer.read_pointer.read_string pointer.free result.force_encoding('UTF-8') end