Class: Tui::SegmentWriter::EmojiSegment
- Inherits:
-
Object
- Object
- Tui::SegmentWriter::EmojiSegment
- Defined in:
- lib/tui.rb
Overview
Emoji with precomputed width - triggers has_wide flag
Instance Attribute Summary collapse
-
#char ⇒ Object
readonly
Returns the value of attribute char.
-
#width ⇒ Object
readonly
Returns the value of attribute width.
Instance Method Summary collapse
-
#char_count ⇒ Object
How many characters this counts as in string.length.
-
#initialize(char) ⇒ EmojiSegment
constructor
A new instance of EmojiSegment.
- #to_s ⇒ Object
-
#width_delta ⇒ Object
Extra width beyond char_count (for width calculation).
Constructor Details
#initialize(char) ⇒ EmojiSegment
Returns a new instance of EmojiSegment.
656 657 658 659 660 661 662 663 664 665 666 |
# File 'lib/tui.rb', line 656 def initialize(char) @char = char.to_s # Precompute: emoji = 2, variation selectors = 0 @width = 0 @char_count = 0 @char.each_codepoint do |code| w = Metrics.char_width(code) @width += w @char_count += 1 if w > 0 # Don't count zero-width chars end end |
Instance Attribute Details
#char ⇒ Object (readonly)
Returns the value of attribute char.
654 655 656 |
# File 'lib/tui.rb', line 654 def char @char end |
#width ⇒ Object (readonly)
Returns the value of attribute width.
654 655 656 |
# File 'lib/tui.rb', line 654 def width @width end |
Instance Method Details
#char_count ⇒ Object
How many characters this counts as in string.length
673 674 675 |
# File 'lib/tui.rb', line 673 def char_count @char.length end |
#to_s ⇒ Object
668 669 670 |
# File 'lib/tui.rb', line 668 def to_s @char end |
#width_delta ⇒ Object
Extra width beyond char_count (for width calculation)
678 679 680 |
# File 'lib/tui.rb', line 678 def width_delta @width - char_count end |