Sha256: c60c3401e711b4eac7de5f5e7486692b7d65c59f8b5d2e043ba65f73062569e2

Contents?: true

Size: 1.25 KB

Versions: 32

Compression:

Stored size: 1.25 KB

Contents

require 'unicode/display_width'

module HammerCLI
  module Output
    module Utils
      TAGS_MAPPING = {
        flat: :serialized,
        data: :structured,
        screen: :rich_text,
        file: :plain_text
      }.freeze

      def self.tag_to_feature(tag)
        TAGS_MAPPING[tag]
      end

      def self.real_length(value)
        decolorized = value.to_s.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

32 entries across 32 versions & 1 rubygems

Version Path
hammer_cli-3.14.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.13.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.12.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.10.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.9.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.8.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.7.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.5.1 lib/hammer_cli/output/utils.rb
hammer_cli-3.6.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.5.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.4.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.3.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.2.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.1.1 lib/hammer_cli/output/utils.rb
hammer_cli-3.0.2 lib/hammer_cli/output/utils.rb
hammer_cli-3.1.0 lib/hammer_cli/output/utils.rb
hammer_cli-3.0.1 lib/hammer_cli/output/utils.rb
hammer_cli-3.0.0 lib/hammer_cli/output/utils.rb
hammer_cli-2.5.1 lib/hammer_cli/output/utils.rb
hammer_cli-2.5.0 lib/hammer_cli/output/utils.rb