rgb_to_hex_color 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c1b140fb46e1eed10e95f6e6ed781beeb83f3c7a
4
+ data.tar.gz: 47fa1fc1448a8b3ab364445f09196c903f3b98d0
5
+ SHA512:
6
+ metadata.gz: b17b0ce2a059b201ee29846d0dce6c1011d4763ff4242df3ba4276d52d0890b3166ae1b0252a4bf81ba1b5cd9536b2f1e7cf032b5edafcd8d3aff2d64a9e53a6
7
+ data.tar.gz: c13a206baa2687015e7d140ec38575aa5f45bd7628987d1f28618ad1fca10304b35be4fc4dd812392b039af1c35450a3c7b6f8837f606b551ed932f3db50e109
@@ -0,0 +1,53 @@
1
+ class RgbToHexColor
2
+ def initialize(r, g, b)
3
+ @r = r
4
+ @g = g
5
+ @b = b
6
+ end
7
+
8
+ def rgb
9
+ [ @r, @g, @b ]
10
+ end
11
+
12
+ def valid?
13
+ r_is_valid? && g_is_valid? && b_is_valid?
14
+ end
15
+
16
+ def hex
17
+ if valid?
18
+ hex_string
19
+ end
20
+ end
21
+
22
+ private
23
+ def r_is_valid?
24
+ is_valid_color_digit?(@r)
25
+ end
26
+
27
+ def g_is_valid?
28
+ is_valid_color_digit?(@g)
29
+ end
30
+
31
+ def b_is_valid?
32
+ is_valid_color_digit?(@b)
33
+ end
34
+
35
+ def is_valid_color_digit?(digit)
36
+ (0..255).include? digit
37
+ end
38
+
39
+ def hex_string
40
+ hex_r = decimal_to_hex(@r)
41
+ hex_g = decimal_to_hex(@g)
42
+ hex_b = decimal_to_hex(@b)
43
+
44
+ "##{hex_r}#{hex_g}#{hex_b}"
45
+ end
46
+
47
+ def decimal_to_hex(digit)
48
+ digit.to_s(16).
49
+ rjust(2, '0').
50
+ upcase
51
+ end
52
+ end
53
+
@@ -0,0 +1,89 @@
1
+ require 'rspec'
2
+ require 'rgb_to_hex_color'
3
+
4
+ describe RgbToHexColor do
5
+ let(:rgb_to_hex) { described_class.new(*initial_colors) }
6
+
7
+ shared_context "with simple initial colors" do
8
+ let(:initial_colors ) { [ 1, 2, 3 ] }
9
+ end
10
+
11
+ describe "#rgb" do
12
+ subject { rgb_to_hex.rgb }
13
+
14
+ include_context "with simple initial colors"
15
+
16
+ let(:expected_colors) { initial_colors }
17
+
18
+ it "returns the colors it was initialized with" do
19
+ expect(subject).to eq expected_colors
20
+ end
21
+ end
22
+
23
+ describe "#valid?" do
24
+ subject { rgb_to_hex.valid? }
25
+
26
+ describe "for valid rgb colors" do
27
+ include_context "with simple initial colors"
28
+
29
+ it "is true" do
30
+ expect(subject).to eq true
31
+ end
32
+ end
33
+
34
+ describe "for invalid r color" do
35
+ let(:initial_colors) { [ -1, 2, 3 ] }
36
+
37
+ it "is false" do
38
+ expect(subject).to eq false
39
+ end
40
+ end
41
+
42
+ describe "for invalid g color" do
43
+ let(:initial_colors) { [ 1, "-2", 3 ] }
44
+
45
+ it "is false" do
46
+ expect(subject).to eq false
47
+ end
48
+ end
49
+
50
+ describe "for invalid b color" do
51
+ let(:initial_colors) { [ 1, 2, Object.new ] }
52
+
53
+ it "is false" do
54
+ expect(subject).to eq false
55
+ end
56
+ end
57
+ end
58
+
59
+ describe "#hex" do
60
+ subject { rgb_to_hex.hex }
61
+
62
+ describe "with valid, small digits" do
63
+ let(:initial_colors) { [ 1, 2, 3 ] }
64
+ let(:expected_hex_color) { '#010203' }
65
+
66
+ it "returns the correct hex string" do
67
+ expect(subject).to eq expected_hex_color
68
+ end
69
+ end
70
+
71
+ describe "with valid, large digits" do
72
+ let(:initial_colors) { [ 100, 200, 222 ] }
73
+ let(:expected_hex_color) { '#64C8DE' }
74
+
75
+ it "returns the correct hex string" do
76
+ expect(subject).to eq expected_hex_color
77
+ end
78
+ end
79
+
80
+ describe "with invalid digits" do
81
+ let(:initial_colors) { [ -1, "b", Object.new ] }
82
+
83
+ it "is nil" do
84
+ expect(subject).to be_nil
85
+ end
86
+ end
87
+ end
88
+ end
89
+
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rgb_to_hex_color
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Tolle
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
+ description:
34
+ email: kyle@nullsix.com
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - lib/rgb_to_hex_color.rb
40
+ - spec/rgb_to_hex_color_spec.rb
41
+ homepage: https://github.com/kyletolle/rgb_to_hex_color
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.2.2
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: Convert rgb colors to their hexadecimal value.
65
+ test_files: []
66
+ has_rdoc: