class Reline::Unicode
def self.calculate_width(str, allow_escape_code = false)
Experimental RBS support (using type sampling data from the type_fusion
project).
def self.calculate_width: (String str, ?true allow_escape_code) -> Integer
This signature was generated using 10 samples from 1 application.
def self.calculate_width(str, allow_escape_code = false) if allow_escape_code width = 0 rest = str.encode(Encoding::UTF_8) in_zero_width = false rest.scan(WIDTH_SCANNER) do |non_printing_start, non_printing_end, csi, osc, gc| case when non_printing_start in_zero_width = true when non_printing_end in_zero_width = false when csi, osc when gc unless in_zero_width width += get_mbchar_width(gc) end end end width else str.encode(Encoding::UTF_8).grapheme_clusters.inject(0) { |w, gc| w + get_mbchar_width(gc) } end end