Ruby
unicode normalizeのform
yunexus
2024. 6. 10. 19:14
ruby on rails 6.1 update release note
https://edgeguides.rubyonrails.org/6_1_release_notes.html
Remove deprecated ActiveSupport::Multibyte::Unicode.pack_graphemes, ActiveSupport::Multibyte::Unicode.unpack_graphemes, ActiveSupport::Multibyte::Unicode.normalize, ActiveSupport::Multibyte::Unicode.downcase, ActiveSupport::Multibyte::Unicode.upcase and ActiveSupport::Multibyte::Unicode.swapcase.
6.1バージョンアップにより「ActiveSupport::Multibyte::Unicode.normalize」が削除された。
https://github.com/rails/rails/commit/2c6f5c0b8a7b72a413224dc3efd383ea787f2805
代わりにString#unicode_normalizeを使う。
https://github.com/ruby/ruby/blob/master/lib/unicode_normalize/normalize.rb
処理を書き換えるときに注意する!
初期値のformが異なるため、formを指定しないと異なる結果が返ってくる。
default form | |
ActiveSupport::Multibyte::Unicode.normalize | :kc ( nfkc ) |
String#unicode_normalize | :nfc |
「ActiveSupport::Multibyte::Unicode.normalize」はform指定しない場合、defaultで :kc が採用される。
NORMALIZATION_FORM_ALIASES = { # :nodoc:
c: :nfc,
d: :nfd,
kc: :nfkc,
kd: :nfkd
}
# in NORMALIZATION_FORMS.
#
# ActiveSupport::Multibyte::Unicode.default_normalization_form = :c
attr_accessor :default_normalization_form
@default_normalization_form = :kc
def normalize(string, form = nil)
form ||= @default_normalization_form
・・・
「String#unicode_normalize」はform指定しない場合、defaultで :nfc が採用される。
def self.normalize(string, form = :nfc)