Module: VisualWidth
- Included in:
- Formatter::Align, Table
- Defined in:
- lib/visual_width/data.rb,
lib/visual_width.rb,
lib/visual_width/version.rb,
lib/visual_width/string_refine.rb
Overview
THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT IT!
Unicode version 6.3.0 of EastAsianWidth characters
see www.unicode.org/reports/tr11/ for specification see www.unicode.org/Public/UNIDATA/EastAsianWidth.txt for data
Defined Under Namespace
Modules: Formatter Classes: Table
Constant Summary collapse
- EAST_ASIAN =
true
- Wide =
'[' + '\u{1100}-\u{115F}' + '\u{2329}-\u{232A}' + '\u{2E80}-\u{2FFF}' + '\u{3001}-\u{303E}' + '\u{3041}-\u{3247}' + '\u{3250}-\u{4DBF}' + '\u{4E00}-\u{A4CF}' + '\u{A960}-\u{A97F}' + '\u{AC00}-\u{D7AF}' + '\u{F900}-\u{FAFF}' + '\u{FE10}-\u{FE1F}' + '\u{FE30}-\u{FE6F}' + '\u{1B000}-\u{1CFFF}' + '\u{1F200}-\u{1F2FF}' + '\u{20000}-\u{E0000}' + ']'
- Fullwide =
'[' + '\u{3000}' + '\u{FF01}-\u{FF60}' + '\u{FFE0}-\u{FFE7}' + ']'
- Ambiguous =
'[' + '\u{00A1}' + '\u{00A4}' + '\u{00A7}-\u{00A8}' + '\u{00AA}' + '\u{00AD}-\u{00AE}' + '\u{00B0}-\u{00B4}' + '\u{00B6}-\u{00BA}' + '\u{00BC}-\u{00BF}' + '\u{00C6}' + '\u{00D0}' + '\u{00D7}-\u{00D8}' + '\u{00DE}-\u{00E1}' + '\u{00E6}' + '\u{00E8}-\u{00EA}' + '\u{00EC}-\u{00ED}' + '\u{00F0}' + '\u{00F2}-\u{00F3}' + '\u{00F7}-\u{00FA}' + '\u{00FC}' + '\u{00FE}' + '\u{0101}' + '\u{0111}' + '\u{0113}' + '\u{011B}' + '\u{0126}-\u{0127}' + '\u{012B}' + '\u{0131}-\u{0133}' + '\u{0138}' + '\u{013F}-\u{0142}' + '\u{0144}' + '\u{0148}-\u{014B}' + '\u{014D}' + '\u{0152}-\u{0153}' + '\u{0166}-\u{0167}' + '\u{016B}' + '\u{01CE}' + '\u{01D0}' + '\u{01D2}' + '\u{01D4}' + '\u{01D6}' + '\u{01D8}' + '\u{01DA}' + '\u{01DC}' + '\u{0251}' + '\u{0261}' + '\u{02C4}' + '\u{02C7}' + '\u{02C9}-\u{02CB}' + '\u{02CD}' + '\u{02D0}' + '\u{02D8}-\u{02DB}' + '\u{02DD}' + '\u{02DF}' + '\u{0300}-\u{036F}' + '\u{0391}-\u{03A9}' + '\u{03B1}-\u{03C1}' + '\u{03C3}-\u{03C9}' + '\u{0401}' + '\u{0410}-\u{044F}' + '\u{0451}' + '\u{2010}' + '\u{2013}-\u{2016}' + '\u{2018}-\u{2019}' + '\u{201C}-\u{201D}' + '\u{2020}-\u{2022}' + '\u{2024}-\u{2027}' + '\u{2030}' + '\u{2032}-\u{2033}' + '\u{2035}' + '\u{203B}' + '\u{203E}' + '\u{2074}' + '\u{207F}' + '\u{2081}-\u{2084}' + '\u{20AC}' + '\u{2103}' + '\u{2105}' + '\u{2109}' + '\u{2113}' + '\u{2116}' + '\u{2121}-\u{2122}' + '\u{2126}' + '\u{212B}' + '\u{2153}-\u{2154}' + '\u{215B}-\u{215E}' + '\u{2160}-\u{216B}' + '\u{2170}-\u{2179}' + '\u{2189}-\u{2199}' + '\u{21B8}-\u{21B9}' + '\u{21D2}' + '\u{21D4}' + '\u{21E7}' + '\u{2200}' + '\u{2202}-\u{2203}' + '\u{2207}-\u{2208}' + '\u{220B}' + '\u{220F}' + '\u{2211}' + '\u{2215}' + '\u{221A}' + '\u{221D}-\u{2220}' + '\u{2223}' + '\u{2225}' + '\u{2227}-\u{222C}' + '\u{222E}' + '\u{2234}-\u{2237}' + '\u{223C}-\u{223D}' + '\u{2248}' + '\u{224C}' + '\u{2252}' + '\u{2260}-\u{2261}' + '\u{2264}-\u{2267}' + '\u{226A}-\u{226B}' + '\u{226E}-\u{226F}' + '\u{2282}-\u{2283}' + '\u{2286}-\u{2287}' + '\u{2295}' + '\u{2299}' + '\u{22A5}' + '\u{22BF}' + '\u{2312}' + '\u{2460}-\u{24E9}' + '\u{24EB}-\u{254B}' + '\u{2550}-\u{2573}' + '\u{2580}-\u{258F}' + '\u{2592}-\u{2595}' + '\u{25A0}-\u{25A1}' + '\u{25A3}-\u{25A9}' + '\u{25B2}-\u{25B3}' + '\u{25B6}-\u{25B7}' + '\u{25BC}-\u{25BD}' + '\u{25C0}-\u{25C1}' + '\u{25C6}-\u{25C8}' + '\u{25CB}' + '\u{25CE}-\u{25D1}' + '\u{25E2}-\u{25E5}' + '\u{25EF}' + '\u{2605}-\u{2606}' + '\u{2609}' + '\u{260E}-\u{260F}' + '\u{2614}-\u{2615}' + '\u{261C}' + '\u{261E}' + '\u{2640}' + '\u{2642}' + '\u{2660}-\u{2661}' + '\u{2663}-\u{2665}' + '\u{2667}-\u{266A}' + '\u{266C}-\u{266D}' + '\u{266F}' + '\u{269E}-\u{269F}' + '\u{26BE}-\u{26BF}' + '\u{26C4}-\u{26CD}' + '\u{26CF}-\u{26E1}' + '\u{26E3}' + '\u{26E8}-\u{2700}' + '\u{273D}' + '\u{2757}' + '\u{2776}-\u{277F}' + '\u{2B55}-\u{2BFF}' + '\u{3248}-\u{324F}' + '\u{E000}-\u{F8FF}' + '\u{FE00}-\u{FE0F}' + '\u{FFFD}-\u{FFFF}' + '\u{1F100}-\u{1F12D}' + '\u{1F130}-\u{1F169}' + '\u{1F170}-\u{1F1E5}' + ']'
- VERSION =
"0.0.6"
- @@c1 =
/( #{r1}+ )/x
- @@c0 =
/( #{r0}+ )/x
- @@t1 =
/( #{r1} ) | . /x
- @@t0 =
/( #{r0} ) | . /x
Class Method Summary collapse
- .count(*args) ⇒ Object
-
.each_width(str, max_width, east_asian: EAST_ASIAN) ⇒ Object
requires block.
- .measure(str, east_asian: EAST_ASIAN) ⇒ Object
- .truncate(str, max_length, omission: '...', east_asian: EAST_ASIAN) ⇒ Object
Class Method Details
.count(*args) ⇒ Object
18 19 20 21 |
# File 'lib/visual_width.rb', line 18 def count(*args) warn "count() is deprecated. use measure() instead" measure(*args) end |
.each_width(str, max_width, east_asian: EAST_ASIAN) ⇒ Object
requires block
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/visual_width.rb', line 32 def each_width(str, max_width, east_asian: EAST_ASIAN) # requires block rx = east_asian ? @@t1 : @@t0 pos = 0 width = 0 str.scan(rx) do |wide,| width += wide ? 2 : 1 pos += 1 next_char = str[pos] next_char_width = next_char ? measure(next_char, east_asian: east_asian) : 0 if (width + next_char_width) > max_width yield str.slice(0, pos) str = str.slice(pos, str.length) pos = 0 width = 0 end end if str.length > 0 yield str end end |
.measure(str, east_asian: EAST_ASIAN) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/visual_width.rb', line 23 def measure(str, east_asian: EAST_ASIAN) rx = east_asian ? @@c1 : @@c0 full_width = 0 str.scan(rx) do |wide,| full_width += wide.length end (full_width * 2) + (str.length - full_width) end |
.truncate(str, max_length, omission: '...', east_asian: EAST_ASIAN) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/visual_width.rb', line 54 def truncate(str, max_length, omission: '...', east_asian: EAST_ASIAN) max = max_length - omission.length each_width(str, max, east_asian: east_asian) do |line| if line.length == str.length return line else return line + omission end end end |