Returns the KC normalization of the string by default. NFKC is considered
the best normalization form for passing strings to databases and
validations.
str - The string to perform normalization on.
form - The form you want to normalize in.
Should be one of the following: :c,:kc,:d, or
:kd. Default is
ActiveSupport::Multibyte.default_normalization_form
# File activesupport/lib/active_support/multibyte/chars.rb, line 404
def normalize(form=ActiveSupport::Multibyte.default_normalization_form)
# See http://www.unicode.org/reports/tr15, Table 1
codepoints = self.class.u_unpack(@wrapped_string)
chars(case form
when :d
self.class.reorder_characters(self.class.decompose_codepoints(:canonical, codepoints))
when :c
self.class.compose_codepoints(self.class.reorder_characters(self.class.decompose_codepoints(:canonical, codepoints)))
when :kd
self.class.reorder_characters(self.class.decompose_codepoints(:compatability, codepoints))
when :kc
self.class.compose_codepoints(self.class.reorder_characters(self.class.decompose_codepoints(:compatability, codepoints)))
else
raise ArgumentError, "#{form} is not a valid normalization variant", caller
end.pack('U*'))
end