Class: Rainbow::Color
- Inherits:
-
Object
- Object
- Rainbow::Color
- Defined in:
- lib/rainbow/color.rb
Direct Known Subclasses
Defined Under Namespace
Classes: Indexed, Named, RGB, X11Named
Instance Attribute Summary collapse
-
#ground ⇒ Object
readonly
Returns the value of attribute ground.
Class Method Summary collapse
Instance Attribute Details
#ground ⇒ Object (readonly)
Returns the value of attribute ground.
4 5 6 |
# File 'lib/rainbow/color.rb', line 4 def ground @ground end |
Class Method Details
.build(ground, values) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rainbow/color.rb', line 6 def self.build(ground, values) unless [1, 3].include?(values.size) fail ArgumentError, "Wrong number of arguments for color definition, should be 1 or 3" end color = values.size == 1 ? values.first : values case color # NOTE: Properly handle versions before/after Ruby 2.4.0. # Ruby 2.4+ unifies Fixnum & Bignum into Integer. # However previous versions would still use Fixnum. # To avoid missing `Fixnum` input, call `0.class` which would # return either `Integer` or `Fixnum`. when 0.class Indexed.new(ground, color) when Symbol if Named.color_names.include?(color) Named.new(ground, color) elsif X11Named.color_names.include?(color) X11Named.new(ground, color) else fail ArgumentError, "Unknown color name, valid names: " + (Named.color_names + X11Named.color_names).join(', ') end when Array RGB.new(ground, *color) when String RGB.new(ground, *parse_hex_color(color)) end end |
.parse_hex_color(hex) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/rainbow/color.rb', line 39 def self.parse_hex_color(hex) hex = hex.sub(/^#/, '') r = hex[0..1].to_i(16) g = hex[2..3].to_i(16) b = hex[4..5].to_i(16) [r, g, b] end |