Sha256: 598c0e8e255b0b82a11994fc1c0a0b17fc228969a36d58165e880a6f2c24347c

Contents?: true

Size: 1.05 KB

Versions: 15

Compression:

Stored size: 1.05 KB

Contents

module Sickill
  module Rainbow

    # Retrieve ANSI color code from RGB color.
    class AnsiRgb

      # +ground+ is one of :foreground, :background
      # +rgb+ is an array of 3 values between 0 and 255.
      def initialize(ground, rgb)
        if RGB.outside_range?(rgb)
          raise ArgumentError.new("RGB value outside 0-255 range")
        end

        @ground_code = { :foreground => 38, :background => 48 }[ground]
        @red, @green, @blue = rgb[0], rgb[1], rgb[2]
      end

      # Get the ANSI color code for this RGB color.
      def code
        index = 16 +
                RGB.to_ansi_domain(@red) * 36 +
                RGB.to_ansi_domain(@green) * 6 +
                RGB.to_ansi_domain(@blue)

        "#{@ground_code};5;#{index}"
      end

    end

    # Helper class for RGB color format.
    class RGB
      def self.outside_range?(rgb)
        rgb.min < 0 or rgb.max > 255
      end

      # Change domain of color value from 0-255 to 0-5
      def self.to_ansi_domain(value)
        (6 * (value / 256.0)).to_i
      end
    end

  end
end

Version data entries

15 entries across 15 versions & 4 rubygems

Version Path
promptula-0.0.12 lib/ansi_rgb.rb
promptula-0.0.11 lib/ansi_rgb.rb
promptula-0.0.10 lib/ansi_rgb.rb
promptula-0.0.9 lib/ansi_rgb.rb
promptula-0.0.8 lib/ansi_rgb.rb
promptula-0.0.5 lib/ansi_rgb.rb
promptula-0.0.4 lib/ansi_rgb.rb
promptula-0.0.3 lib/ansi_rgb.rb
promptula-0.0.2 lib/ansi_rgb.rb
rainbow-1.1.4 lib/ansi_rgb.rb
webbynode-rainbow-1.1.3 lib/ansi_rgb.rb
iisconfig-0.0.1.pre2 build/bundler/ruby/1.9.1/gems/rainbow-1.1.3/lib/ansi_rgb.rb
iisconfig-0.0.1.pre1 build/bundler/ruby/1.9.1/gems/rainbow-1.1.3/lib/ansi_rgb.rb
rainbow-1.1.3 lib/ansi_rgb.rb
rainbow-1.1.2 lib/ansi_rgb.rb