39 lines
659 B
Ruby
39 lines
659 B
Ruby
require 'unf/version'
|
|
|
|
module UNF
|
|
autoload :Normalizer, 'unf/normalizer'
|
|
end
|
|
|
|
class String
|
|
ascii_only =
|
|
if method_defined?(:ascii_only?)
|
|
'ascii_only?'
|
|
else
|
|
'/[^\x00-\x7f]/ !~ self'
|
|
end
|
|
|
|
# :method: to_nfc
|
|
# Converts the string to NFC.
|
|
|
|
# :method: to_nfd
|
|
# Converts the string to NFD.
|
|
|
|
# :method: to_nfkc
|
|
# Converts the string to NFKC.
|
|
|
|
# :method: to_nfkd
|
|
# Converts the string to NFKD.
|
|
|
|
[:nfc, :nfd, :nfkc, :nfkd].each { |form|
|
|
eval %{
|
|
def to_#{form.to_s}
|
|
if #{ascii_only}
|
|
self
|
|
else
|
|
UNF::Normalizer.normalize(self, #{form.inspect})
|
|
end
|
|
end
|
|
}
|
|
}
|
|
end
|