module ActiveSupport::Multibyte::Unicode
def normalize(string, form=nil)
the following: :c, :kc, :d, or :kd.
* form - The form you want to normalize in. Should be one of
* string - The string to perform normalization on.
and validations.
considered the best normalization form for passing strings to databases
Returns the KC normalization of the string by default. NFKC is
def normalize(string, form=nil) form ||= @default_normalization_form # See http://www.unicode.org/reports/tr15, Table 1 codepoints = string.codepoints.to_a case form when :d reorder_characters(decompose(:canonical, codepoints)) when :c compose(reorder_characters(decompose(:canonical, codepoints))) when :kd reorder_characters(decompose(:compatibility, codepoints)) when :kc compose(reorder_characters(decompose(:compatibility, codepoints))) else raise ArgumentError, "#{form} is not a valid normalization variant", caller end.pack('U*') end