Sha256: 790efb08dcfc84cb08038432dfa54fbfd290ce8a9603b09458ea97dffb239ace

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

module Paint
  # These helpers add functionality you sometimes need when working with terminal colors
  class << self
    # Removes any color and effect strings
    def unpaint(string)
      string.gsub(/\e\[(?:[0-9];?)+m/, '')
    end

    # Tries to print all 256 colors
    def rainbow
      (0...256).each{ |color| 
        print Paint[' ', 48, 5, color] # print empty bg color field
      }
      puts
    end

    # Updates color names
    def update_rgb_colors(path = '/etc/X11/rgb.txt')
      if File.file?(path)
        Paint::RGB_COLORS.clear

        File.open(path, 'r') do |file|
          file.each_line{ |line|
            line.chomp =~ /(\d+)\s+(\d+)\s+(\d+)\s+(.*)$/
            Paint::RGB_COLORS[$4] = [$1.to_i, $2.to_i, $3.to_i] if $4
          }
        end
      else
        raise ArgumentError, "Not a valid file: #{path}"
      end
    end

    # Determine supported colors
    # This is just a naive approach, based on some things I could test
    # Please open issues if it does not work correctly for you
    def detect_mode
      if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ # windows
        if ENV['ANSICON']
          16
        else
          false
        end
      else
        # case ENV['COLORTERM']
        # when 'gnome-terminal'
        #   256
        # else
          case ENV['TERM']
          when /-256color$/, 'xterm'
            256
          when /-color$/, 'rxvt'
            16
          else # optimistic default
            256
          end
        # end
      end
    end
  end
end

# J-_-L

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
paint-0.8.2 lib/paint/util.rb
paint-0.8.1 lib/paint/util.rb