module Rdoba::Mixin::CompareString

Public Instance Methods

compare_to(value, opts = {}) click to toggle source
# File lib/rdoba/mixin.rb, line 15
def compare_to value, opts = {}
   if ( opts == :ignore_diacritics ||
      opts.class == Hash && opts.key?( :ignore_diacritics ) )
      # TODO verify composite range
      def crop_diacritics(x)
         (x < 0x300 ||
          x > 0x36f && x < 0x483 ||
          x > 0x487 && x < 0xa67c ||
          x > 0xa67d) && x || nil
      end

      ( self.unpack( 'U*' ).map do |x|
         crop_diacritics( x ) ; end.compact ) <=>
      ( value.unpack( 'U*' ).map do |x|
         crop_diacritics( x ) ; end.compact )
   else
      self <=> value ; end ; end
crop_diacritics(x) click to toggle source

TODO verify composite range

# File lib/rdoba/mixin.rb, line 19
def crop_diacritics(x)
   (x < 0x300 ||
    x > 0x36f && x < 0x483 ||
    x > 0x487 && x < 0xa67c ||
    x > 0xa67d) && x || nil
end