Sha256: f736aa2c034cd915c1161c4646a9e5f4db895dde529660dc520400abbe2670f7

Contents?: true

Size: 1.47 KB

Versions: 63

Compression:

Stored size: 1.47 KB

Contents

# Frozen-string-literal: true

module Bridgetown
  module Utils
    module Ansi
      extend self

      ESCAPE = format("%c", 27)
      MATCH = %r!#{ESCAPE}\[(?:\d+)(?:;\d+)*(j|k|m|s|u|A|B|G)|\e\(B\e\[m!ix.freeze
      COLORS = {
        red: 31,
        green: 32,
        black: 30,
        magenta: 35,
        yellow: 33,
        white: 37,
        blue: 34,
        cyan: 36,
      }.freeze

      # Strip ANSI from the current string.  It also strips cursor stuff,
      # well some of it, and it also strips some other stuff that a lot of
      # the other ANSI strippers don't.

      def strip(str)
        str.gsub MATCH, ""
      end

      #

      def has?(str)
        !!(str =~ MATCH)
      end

      # Reset the color back to the default color so that you do not leak any
      # colors when you move onto the next line. This is probably normally
      # used as part of a wrapper so that we don't leak colors.

      def reset(str = "")
        @ansi_reset ||= format("%c[0m", 27)
        "#{@ansi_reset}#{str}"
      end

      # SEE: `self::COLORS` for a list of methods.  They are mostly
      # standard base colors supported by pretty much any xterm-color, we do
      # not need more than the base colors so we do not include them.
      # Actually... if I'm honest we don't even need most of the
      # base colors.

      COLORS.each do |color, num|
        define_method color do |str|
          "#{format("%c", 27)}[#{num}m#{str}#{reset}"
        end
      end
    end
  end
end

Version data entries

63 entries across 63 versions & 1 rubygems

Version Path
bridgetown-core-1.1.0 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.1.0.beta3 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.1.0.beta2 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.1.0.beta1 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.beta3 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.beta2 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.beta1 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha11 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha10 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha9 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha8 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha7 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha6 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha5 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-0.21.5 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha4 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha3 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha2 lib/bridgetown-core/utils/ansi.rb
bridgetown-core-1.0.0.alpha1 lib/bridgetown-core/utils/ansi.rb