diff options
author | Yusuke Endoh <mame@ruby-lang.org> | 2020-10-21 13:29:19 +0900 |
---|---|---|
committer | aycabta <aycabta@gmail.com> | 2020-12-05 02:58:58 +0900 |
commit | 76cac4c05a7be61a94a709b8b850118ad0bfa684 (patch) | |
tree | 3131f03a4c77ab2bccc1a66d4e626a823d096379 /lib/reline/unicode/east_asian_width.rb | |
parent | b3e0db80606614f11412604f1657a135002326e9 (diff) |
[ruby/reline] Improve the performance of `get_mbchar_width`
It is about three times faster to use one big regexp instead of
sequential matching.
https://github.com/ruby/reline/commit/e36f6c0707
Diffstat (limited to 'lib/reline/unicode/east_asian_width.rb')
-rw-r--r-- | lib/reline/unicode/east_asian_width.rb | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/lib/reline/unicode/east_asian_width.rb b/lib/reline/unicode/east_asian_width.rb index 7483c78936..89bc9d9435 100644 --- a/lib/reline/unicode/east_asian_width.rb +++ b/lib/reline/unicode/east_asian_width.rb @@ -1,16 +1,16 @@ class Reline::Unicode::EastAsianWidth # This is based on EastAsianWidth.txt - # http://www.unicode.org/Public/13.0.0/ucd/EastAsianWidth.txt + # EastAsianWidth.txt # Fullwidth - TYPE_F = /^([#{ %W( + TYPE_F = /^[#{ %W( \u{3000} \u{FF01}-\u{FF60} \u{FFE0}-\u{FFE6} - ).join }])/ + ).join }]/ # Halfwidth - TYPE_H = /^([#{ %W( + TYPE_H = /^[#{ %W( \u{20A9} \u{FF61}-\u{FFBE} \u{FFC2}-\u{FFC7} @@ -18,10 +18,10 @@ class Reline::Unicode::EastAsianWidth \u{FFD2}-\u{FFD7} \u{FFDA}-\u{FFDC} \u{FFE8}-\u{FFEE} - ).join }])/ + ).join }]/ # Wide - TYPE_W = /^([#{ %W( + TYPE_W = /^[#{ %W( \u{1100}-\u{115F} \u{231A}-\u{231B} \u{2329}-\u{232A} @@ -136,10 +136,10 @@ class Reline::Unicode::EastAsianWidth \u{1FAD0}-\u{1FAD6} \u{20000}-\u{2FFFD} \u{30000}-\u{3FFFD} - ).join }])/ + ).join }]/ # Narrow - TYPE_NA = /^([#{ %W( + TYPE_NA = /^[#{ %W( \u{0020}-\u{007E} \u{00A2}-\u{00A3} \u{00A5}-\u{00A6} @@ -147,10 +147,10 @@ class Reline::Unicode::EastAsianWidth \u{00AF} \u{27E6}-\u{27ED} \u{2985}-\u{2986} - ).join }])/ + ).join }]/ # Ambiguous - TYPE_A = /^([#{ %W( + TYPE_A = /^[#{ %W( \u{00A1} \u{00A4} \u{00A7}-\u{00A8} @@ -330,10 +330,10 @@ class Reline::Unicode::EastAsianWidth \u{E0100}-\u{E01EF} \u{F0000}-\u{FFFFD} \u{100000}-\u{10FFFD} - ).join }])/ + ).join }]/ # Neutral - TYPE_N = /^([#{ %W( + TYPE_N = /^[#{ %W( \u{0000}-\u{001F} \u{007F}-\u{00A0} \u{00A9} @@ -1160,5 +1160,5 @@ class Reline::Unicode::EastAsianWidth \u{1FBF0}-\u{1FBF9} \u{E0001} \u{E0020}-\u{E007F} - ).join }])/ + ).join }]/ end |