cpalette 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +19 -3
- data/README.md +10 -9
- data/cpalette.gemspec +4 -2
- data/lib/cpalette.rb +39 -21
- data/lib/cpalette/version.rb +1 -1
- data/spec/cpalette_spec.rb +23 -3
- data/spec/spec_helper.rb +4 -1
- metadata +38 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34efed280ebbd1257990a1b2cfcb9ec64ae65cf8
|
4
|
+
data.tar.gz: f85f5b678de5acf6b8200921085a7a91c9a481fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: addb05641ca25fdf2b6d430432115476377de4069bd074ca82ef8bee401d3ab1210ecbab7981ccc35513797ee27826f2be631ce726d7502406eab967098902a7
|
7
|
+
data.tar.gz: 5b7276c8f0b3de2bcf5549cf56d1a48403962f0ce0c0817b1e9a89b44d9f9da493d7002580b646dc321b9cd44803d01f30a149365e4a3b1ce2d331b0dcaa98a7
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cpalette (0.0.
|
4
|
+
cpalette (0.0.6)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
coderay (1.1.0)
|
9
10
|
diff-lcs (1.2.5)
|
11
|
+
docile (1.1.5)
|
12
|
+
method_source (0.8.2)
|
13
|
+
multi_json (1.10.1)
|
14
|
+
pry (0.10.1)
|
15
|
+
coderay (~> 1.1.0)
|
16
|
+
method_source (~> 0.8.1)
|
17
|
+
slop (~> 3.4)
|
10
18
|
rake (10.3.2)
|
11
19
|
rspec (3.0.0)
|
12
20
|
rspec-core (~> 3.0.0)
|
@@ -20,6 +28,12 @@ GEM
|
|
20
28
|
rspec-mocks (3.0.2)
|
21
29
|
rspec-support (~> 3.0.0)
|
22
30
|
rspec-support (3.0.2)
|
31
|
+
simplecov (0.9.0)
|
32
|
+
docile (~> 1.1.0)
|
33
|
+
multi_json
|
34
|
+
simplecov-html (~> 0.8.0)
|
35
|
+
simplecov-html (0.8.0)
|
36
|
+
slop (3.6.0)
|
23
37
|
|
24
38
|
PLATFORMS
|
25
39
|
ruby
|
@@ -27,5 +41,7 @@ PLATFORMS
|
|
27
41
|
DEPENDENCIES
|
28
42
|
bundler (~> 1.6)
|
29
43
|
cpalette!
|
30
|
-
|
31
|
-
|
44
|
+
pry (~> 0.10)
|
45
|
+
rake (~> 10)
|
46
|
+
rspec (~> 3.0)
|
47
|
+
simplecov (~> 0.9)
|
data/README.md
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
# Cpalette
|
2
2
|
|
3
|
-
Cpalette
|
4
|
-
----------------------
|
5
|
-
|
6
3
|
A simple color gem that returns you with a palette of colors which are web friendly and easy to use.
|
7
4
|
|
8
5
|
## Installation
|
@@ -21,22 +18,26 @@ Or install it yourself as:
|
|
21
18
|
|
22
19
|
## Usage
|
23
20
|
|
24
|
-
|
21
|
+
_Case 1:_
|
22
|
+
|
23
|
+
Just pass in the number of colors you needs, returns you an array of 4 hashes with hsl, rgb and hex values for each color.
|
24
|
+
|
25
|
+
```ruby
|
25
26
|
colors_array = Cpalette.palette(4)
|
26
27
|
|
27
28
|
=> [{"hsl"=>"359,62%,46%", "rgb"=>"190,45,47", "hex"=>"#be2d2f"}, {"hsl"=>"89,62%,80%", "rgb"=>"205,236,172", "hex"=>"#cdecac"}, {"hsl"=>"269,80%,71%", "rgb"=>"179,122,240", "hex"=>"#b37af0"}, {"hsl"=>"179,69%,79%", "rgb"=>"165,238,237", "hex"=>"#a5eeed"}]
|
29
|
+
```
|
28
30
|
|
29
|
-
|
31
|
+
_Case 2:_
|
30
32
|
|
31
|
-
|
32
|
-
You can pass an option :hex => true, which would return you an array containing only Hex values of required number of colors.
|
33
|
+
You can pass an optional :hex => true, which return you an array containing only Hex values of required number of colors.
|
33
34
|
|
34
|
-
|
35
|
+
```ruby
|
35
36
|
colors_array = Cpalette.palette(4, {:hex => true})
|
36
37
|
|
37
38
|
=> ["#37e1de", "#a468e3", "#f0383b", "#a5e660"]
|
38
39
|
|
39
|
-
|
40
|
+
```
|
40
41
|
|
41
42
|
## Contributing
|
42
43
|
|
data/cpalette.gemspec
CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
-
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency "
|
22
|
+
spec.add_development_dependency "rake", "~> 10"
|
23
|
+
spec.add_development_dependency "pry", "~> 0.10"
|
24
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
25
|
+
spec.add_development_dependency "simplecov", "~> 0.9"
|
24
26
|
end
|
data/lib/cpalette.rb
CHANGED
@@ -1,26 +1,13 @@
|
|
1
1
|
require "cpalette/version"
|
2
2
|
|
3
3
|
module Cpalette
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
t = t + 1 if t < 0
|
12
|
-
t = t -1 if t > 1
|
13
|
-
if 6 * t < 1
|
14
|
-
return p+(q-p)*6*t
|
15
|
-
end
|
16
|
-
if 2 * t < 1
|
17
|
-
return q
|
18
|
-
end
|
19
|
-
if 3 * t < 2
|
20
|
-
return p + (q - p) * ((2.0/3 - t) * 6)
|
21
|
-
end
|
22
|
-
return p
|
23
|
-
end
|
4
|
+
# Given Hue, Saturation and Lightness values return RGB values to it.
|
5
|
+
# Function adopted from - http://easyrgb.com
|
6
|
+
# Assumes inputs: h, s, l are in the range of [0,1]
|
7
|
+
# Returns outputs: R, G, B valu in the range of [0,255]
|
8
|
+
# E.g.
|
9
|
+
# Inputs: h: 0.25, s: 0.89, l: 0.54
|
10
|
+
# Output: r: 141, g: 242, b: 33
|
24
11
|
def self.get_color_codes_in_rgb(h, s, l)
|
25
12
|
if s == 0
|
26
13
|
r = g = b = l * 255
|
@@ -37,12 +24,41 @@ module Cpalette
|
|
37
24
|
end
|
38
25
|
return "#{r},#{g},#{b}"
|
39
26
|
end
|
27
|
+
|
28
|
+
# Converts hue to rgb based on following conditions
|
29
|
+
def self.hue2rgb(p,q,t)
|
30
|
+
t = t + 1 if t < 0
|
31
|
+
t = t -1 if t > 1
|
32
|
+
if 6 * t < 1
|
33
|
+
return p+(q-p)*6*t
|
34
|
+
end
|
35
|
+
if 2 * t < 1
|
36
|
+
return q
|
37
|
+
end
|
38
|
+
if 3 * t < 2
|
39
|
+
return p + (q - p) * ((2.0/3 - t) * 6)
|
40
|
+
end
|
41
|
+
return p
|
42
|
+
end
|
43
|
+
|
44
|
+
# Converts RGB to HEX code values
|
45
|
+
# R, G, B are converted to string of base 16 and padded a 0 if length is less than 2
|
46
|
+
# Assumes input r, g, b in the range of [0, 255]
|
47
|
+
# Returns a HEX value
|
48
|
+
# E.g Input - r: 255, g:255, b:255 => #FFFFFF
|
49
|
+
#
|
40
50
|
def self.rgb2hex(r, g, b)
|
41
51
|
h1 = r.to_s(16).length == 2 ? r.to_s(16) : "0"+r.to_s(16)
|
42
52
|
h2 = g.to_s(16).length == 2 ? g.to_s(16) : "0"+g.to_s(16)
|
43
53
|
h3 = b.to_s(16).length == 2 ? b.to_s(16) : "0"+b.to_s(16)
|
44
54
|
return "##{h1}#{h2}#{h3}"
|
45
55
|
end
|
56
|
+
|
57
|
+
# Takes an input parameter of size (no of colors and options hash)
|
58
|
+
# Returns equivalent number of random colors with HSL, RGB, HEX codes
|
59
|
+
# Max possible values for Hue: 360, Saturation: 100, Lightness: 100
|
60
|
+
# Saturation and Lightness values tend to determine the extremes of a color
|
61
|
+
# Choosing a range of 60..90 tends to give optimum colors
|
46
62
|
def self.palette(size, options = {})
|
47
63
|
color_palette = []
|
48
64
|
hue_array = []
|
@@ -53,7 +69,7 @@ module Cpalette
|
|
53
69
|
hue_array.push(hue)
|
54
70
|
hue = hue - step_size
|
55
71
|
end
|
56
|
-
hue_array.shuffle!
|
72
|
+
hue_array.shuffle! #Inplace
|
57
73
|
hue_array.each do |hue|
|
58
74
|
s = Random.new.rand(60..90)
|
59
75
|
l = Random.new.rand(40..80)
|
@@ -64,6 +80,7 @@ module Cpalette
|
|
64
80
|
color_codes["hex"] = rgb2hex(rgb[0].to_i, rgb[1].to_i, rgb[2].to_i)
|
65
81
|
color_palette.push(color_codes) unless color_palette.include?(color_codes)
|
66
82
|
end
|
83
|
+
# If only hex option is set by user
|
67
84
|
if options[:hex] != nil
|
68
85
|
if options[:hex] == true
|
69
86
|
cpalette = []
|
@@ -73,6 +90,7 @@ module Cpalette
|
|
73
90
|
color_palette = cpalette
|
74
91
|
end
|
75
92
|
end
|
93
|
+
# binding.pry
|
76
94
|
return color_palette
|
77
95
|
end
|
78
96
|
end
|
data/lib/cpalette/version.rb
CHANGED
data/spec/cpalette_spec.rb
CHANGED
@@ -1,7 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
5
|
-
|
3
|
+
describe Cpalette do
|
4
|
+
describe "#get_color_codes_in_rgb" do
|
5
|
+
let(:output) {"117,240,240"}
|
6
|
+
it 'returns RGB values for given HSL values' do
|
7
|
+
expect(Cpalette.get_color_codes_in_rgb(0.5, 0.8, 0.7)).to eq(output)
|
8
|
+
end
|
9
|
+
it 'handles case when saturation is 0' do
|
10
|
+
expect(Cpalette.get_color_codes_in_rgb(0.5, 0, 1)).to eq("255,255,255")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
describe "#rgb2hex" do
|
14
|
+
let(:output) {"#ffffff"}
|
15
|
+
it 'returns RGB values for given HSL values' do
|
16
|
+
expect(Cpalette.rgb2hex(255, 255, 255)).to eq(output)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
describe "#palette" do
|
20
|
+
it 'gives all three types of color codes' do
|
21
|
+
expect(Cpalette.palette(4)).to be_truthy
|
22
|
+
end
|
23
|
+
it 'returns only hex values when options[:hex] is true' do
|
24
|
+
expect(Cpalette.palette(4, {:hex => true})).to be_truthy
|
25
|
+
end
|
6
26
|
end
|
7
27
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cpalette
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- avinash-vllbh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,30 +28,58 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '10'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.10'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
54
|
+
version: '0.10'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - "
|
59
|
+
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
61
|
+
version: '3.0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - "
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.9'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
82
|
+
version: '0.9'
|
55
83
|
description: A simple color gem that returns you with a palette of colors which are
|
56
84
|
web friendly and easy to use.
|
57
85
|
email:
|