본문 바로가기
Ruby

unicode normalizeのform

by yunexus 2024. 6. 10.

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)

 

'Ruby' 카테고리의 다른 글

rsepc mock 메소드 내부 확인  (0) 2023.10.23
rails ActiveRecord 메모리, 성능 개선  (0) 2022.12.30