class ICU::Collation::Collator
Constants
- ULOC_VALID_LOCALE
Public Class Methods
new(locale)
click to toggle source
# File lib/ffi-icu/collation.rb, line 32 def initialize(locale) ptr = Lib.check_error { |error| Lib.ucol_open(locale, error) } @c = FFI::AutoPointer.new(ptr, Lib.method(:ucol_close)) end
Public Instance Methods
collate(sortable)
click to toggle source
# File lib/ffi-icu/collation.rb, line 72 def collate(sortable) unless sortable.respond_to?(:sort) raise ArgumentError, "argument must respond to :sort with arity of 2" end sortable.sort { |a, b| compare a, b } end
compare(a, b)
click to toggle source
# File lib/ffi-icu/collation.rb, line 41 def compare(a, b) Lib.ucol_strcoll( @c, UCharPointer.from_string(a), a.jlength, UCharPointer.from_string(b), b.jlength ) end
equal?(*args)
click to toggle source
Calls superclass method
# File lib/ffi-icu/collation.rb, line 59 def equal?(*args) return super() if args.empty? if args.size != 2 raise ArgumentError, "wrong number of arguments (#{args.size} for 2)" end a, b = args Lib.ucol_equal(@c, UCharPointer.from_string(a), a.jlength, UCharPointer.from_string(b), b.jlength) end
greater?(a, b)
click to toggle source
# File lib/ffi-icu/collation.rb, line 49 def greater?(a, b) Lib.ucol_greater(@c, UCharPointer.from_string(a), a.jlength, UCharPointer.from_string(b), b.jlength) end
greater_or_equal?(a, b)
click to toggle source
# File lib/ffi-icu/collation.rb, line 54 def greater_or_equal?(a, b) Lib.ucol_greaterOrEqual(@c, UCharPointer.from_string(a), a.jlength, UCharPointer.from_string(b), b.jlength) end
locale()
click to toggle source
# File lib/ffi-icu/collation.rb, line 37 def locale Lib.check_error { |error| Lib.ucol_getLocale(@c, ULOC_VALID_LOCALE, error) } end
rules()
click to toggle source
# File lib/ffi-icu/collation.rb, line 80 def rules @rules ||= begin length = FFI::MemoryPointer.new(:int) ptr = ICU::Lib.ucol_getRules(@c, length) ptr.read_array_of_uint16(length.read_int).pack("U*") end end