This gem handles Unicode East Asian Width:
Installation
Add this line to your application's Gemfile:
gem 'visual_width'
And then execute:
$ bundle
Or install it yourself as:
$ gem install visual_width
Usage
visual_width
:
p VisualWidth.measure("こんにちは") # => 10
p VisualWidth.measure("abcdefghij") # => 10
p VisualWidth.truncate("恋すてふ 我が名はまだき 立ちにけり 人知れずこそ 思ひそめしか", 20) # => "恋すてふ 我が名は..."
.measure()
and truncate()
methods takes east_asian: false
option to tell it is not in an East Asian context, regarding ambiguous characters as half-width.
See Ambiguous Characters in the report.
visual_width/table
:
require 'visual_width/table'
t = VisualWidth::Table.new(
style: [
{ align: :center, width: 8 },
{ align: :center, width: 8 },
{ align: :right, width: 5 },
],
header: ['Nick', 'FullName', 'Age'],
)
rows = [
['カネダ', '金田 正太郎', 17],
['テツオ', '島 鉄雄', 16],
['ケイ', '?', 18],
]
puts t.render(rows)
# +--------+--------+-----+
# | Nick |FullName| Age |
# +--------+--------+-----+
# | カネダ |金田 正 | 17|
# | | 太郎 | |
# | テツオ |島 鉄雄 | 16|
# | ケイ | ? | 18|
# +--------+--------+-----+
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
See Also
-
unicode-display_width has the same feature as
VisualWidth.measure()
but it extends String class directly and is much slower thanVisualWidth.measure()
- terminal-table renders text table, but it cannot deal with East Asian Width characters