colorname 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/README.md +27 -7
- data/lib/colorname/base.rb +8 -9
- data/lib/colorname/find.rb +24 -3
- data/lib/colorname/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c65562e11219849f7464cd32a0f6e94b016b12ec
|
4
|
+
data.tar.gz: bf22917f61d895f4ac42fe18375e2ffe18c63fbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aef8509f8235dc9eec72f3b9be349cb817a50a70ac08ffc4554d122d84dd7a246254a8eaaf78ee45d0fab726b4478c859e735ac8ce5c2075c9242ee21aad6f60
|
7
|
+
data.tar.gz: 785559f562ccd0cef2de79ae6175604eaae2b131724139e065f120e2820ebb399def2d46df1cfd2a4183fccd9bc6f5d00cae13955a81ac1a30e8f9c753dd46d7
|
data/README.md
CHANGED
@@ -6,6 +6,13 @@ Ruby Gem for decide name of a given color.
|
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
+
### Easy Gem Installation
|
10
|
+
|
11
|
+
```shell
|
12
|
+
$ gem install colorname
|
13
|
+
```
|
14
|
+
### Gemfile Integration
|
15
|
+
|
9
16
|
Add this line to your application's Gemfile:
|
10
17
|
|
11
18
|
```ruby
|
@@ -16,16 +23,29 @@ And then execute:
|
|
16
23
|
```
|
17
24
|
$ bundle
|
18
25
|
```
|
19
|
-
Or install it yourself as:
|
20
|
-
```
|
21
|
-
$ gem install colorname
|
22
|
-
```
|
23
26
|
## Usage
|
24
27
|
|
25
28
|
```ruby
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
+
Colorname.find 'f0f8ff' # [:aliceblue]
|
30
|
+
|
31
|
+
Colorname.find '#00ffff' # [:aqua, :cyan]
|
32
|
+
|
33
|
+
Colorname.find 143, 188, 143 # [:darkseagreen]
|
34
|
+
|
35
|
+
Colorname.find Color::RGB.new(255, 0, 255) # [:fuchsia, :magenta]
|
36
|
+
```
|
37
|
+
|
38
|
+
To find dominant base color name
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
Colorname.base '32cd32' # [:green]
|
42
|
+
|
43
|
+
Colorname.base '#FF00CC' # [:red]
|
44
|
+
|
45
|
+
Colorname.base 25, 150, 255 # [:blue]
|
46
|
+
|
47
|
+
Colorname.base Color::RGB.new(255, 0, 255) # [:red, :blue]
|
48
|
+
|
29
49
|
```
|
30
50
|
|
31
51
|
## Contributing
|
data/lib/colorname/base.rb
CHANGED
@@ -2,29 +2,28 @@
|
|
2
2
|
module Colorname
|
3
3
|
class << self
|
4
4
|
def base(*cc)
|
5
|
-
|
6
|
-
base.is_a?(Array) ? base.join(' ') : base
|
5
|
+
base_color make_color *cc
|
7
6
|
end
|
8
7
|
|
9
8
|
private
|
10
9
|
def base_color(cc)
|
11
10
|
if cc.red == cc.green && cc.green == cc.blue
|
12
11
|
# XXX Should add grey?
|
13
|
-
cc.red < 127 ? :
|
12
|
+
cc.red < 127 ? :black : :white
|
14
13
|
elsif cc.red == cc.green && cc.red > cc.blue
|
15
|
-
[:
|
14
|
+
[:red, :green]
|
16
15
|
elsif cc.red == cc.blue && cc.red > cc.green
|
17
|
-
[:
|
16
|
+
[:red, :blue]
|
18
17
|
elsif cc.green == cc.blue && cc.green > cc.red
|
19
|
-
[:
|
18
|
+
[:green, :blue]
|
20
19
|
else
|
21
20
|
case [cc.red, cc.green, cc.blue].each_with_index.max[1]
|
22
21
|
when 0
|
23
|
-
:
|
22
|
+
[:red]
|
24
23
|
when 1
|
25
|
-
:
|
24
|
+
[:green]
|
26
25
|
when 2
|
27
|
-
:
|
26
|
+
[:blue]
|
28
27
|
end
|
29
28
|
end
|
30
29
|
end
|
data/lib/colorname/find.rb
CHANGED
@@ -2,12 +2,33 @@
|
|
2
2
|
module Colorname
|
3
3
|
class << self
|
4
4
|
def find(*cc)
|
5
|
-
|
5
|
+
decide make_color *cc
|
6
6
|
end
|
7
7
|
|
8
8
|
private
|
9
|
-
def
|
10
|
-
VALUES.select{|_, val| val == [cc.red, cc.green, cc.blue]}.keys
|
9
|
+
def decide(cc)
|
10
|
+
result = VALUES.select{|_, val| val == [cc.red, cc.green, cc.blue]}.keys
|
11
|
+
result.empty? ? (closest(cc)) : result
|
12
|
+
end
|
13
|
+
|
14
|
+
def closest(cc)
|
15
|
+
diff = 100
|
16
|
+
similar = :undefined
|
17
|
+
VALUES.each do |key, val|
|
18
|
+
new_diff = cdiff(cc,val)
|
19
|
+
if new_diff < diff
|
20
|
+
diff = new_diff
|
21
|
+
similar = key
|
22
|
+
end
|
23
|
+
end
|
24
|
+
similar
|
25
|
+
end
|
26
|
+
|
27
|
+
def cdiff(real, guess)
|
28
|
+
r_diff = ((real.red - guess[0])/real.red).abs/100.0
|
29
|
+
g_diff = ((real.green - guess[1])/real.green).abs/100.0
|
30
|
+
b_diff = ((real.blue - guess[2])/real.blue).abs/100.0
|
31
|
+
r_diff + g_diff + b_diff
|
11
32
|
end
|
12
33
|
end
|
13
34
|
end
|
data/lib/colorname/version.rb
CHANGED