Sha256: 61f5e80253020adf09787ff550caefa141b0763e89d3fc718eaba6854807e996

Contents?: true

Size: 1.03 KB

Versions: 16

Compression:

Stored size: 1.03 KB

Contents

require 'unicode/display_width'

module HammerCLI
  module Output
    module Utils
      def self.real_length(value)
        decolorized = value.gsub(/\033\[[^m]*m/, '')
        Unicode::DisplayWidth.of(decolorized)
      end

      def self.real_char_length(ch)
        Unicode::DisplayWidth.of(ch)
      end

      def self.real_truncate(value, required_size)
        size = 0
        index = 0
        has_colors = false
        in_color = false
        value.each_char do |ch|
          if in_color
            in_color = false if ch == "m"
          elsif ch == "\e"
            has_colors = in_color = true
          else
            increment = real_char_length(ch)
            if size + increment > required_size
              if has_colors
                return value[0..index-1] + "\e[0m", size
              else
                return value[0..index-1], size
              end
            else
              size += increment
            end
          end
          index += 1
        end
        return value, size
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
hammer_cli-0.18.1 lib/hammer_cli/output/utils.rb
hammer_cli-0.18.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.17.1 lib/hammer_cli/output/utils.rb
hammer_cli-0.17.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.16.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.15.1 lib/hammer_cli/output/utils.rb
hammer_cli-0.15.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.14.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.13.1 lib/hammer_cli/output/utils.rb
hammer_cli-0.13.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.12.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.11.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.10.2 lib/hammer_cli/output/utils.rb
hammer_cli-0.10.1 lib/hammer_cli/output/utils.rb
hammer_cli-0.10.0 lib/hammer_cli/output/utils.rb
hammer_cli-0.9.0 lib/hammer_cli/output/utils.rb