color_contrast 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3524681a1ab2f98fbf6cf70e67840d3baf66aa12
4
- data.tar.gz: 2dfd0ccf0a6b40f582e014d7bf0b8c8b2786ad24
2
+ SHA256:
3
+ metadata.gz: b2c3bbb85e8713a12ec7f15d4c3bd923acd61b78befa2f8d6d657ad9f0a055d8
4
+ data.tar.gz: 2c0f5dc762b4dc2544c1e683710eba7562c31667b15ea16ccf0dbfcd907909a2
5
5
  SHA512:
6
- metadata.gz: c1bd5d7b5016cfef05b9e043ee6e66c053ea6a8a3d5bb19fba505693a5c5969db33b3421962b0097c1bad9b87b1b518bad1e2a003803bf7b831198c0deb59b91
7
- data.tar.gz: 83b64783b198c3581bc0ea83a4b81ffa72c6750b15919856c4df1732378497bf65e9ae88e5431839d5b79752bbdd46dbfd371e15da6ebed1c1c8b97a57073ba5
6
+ metadata.gz: 6c589f95d56cfafd32569d440e11087f86c4d8c6134fb8e349bdeb8e1c43421a8121684f6ed0f0e1068d159be43311bb27fe5f15bb693f5f36a76dd8a9476ea3
7
+ data.tar.gz: 960e30368e1fa37d611c3571587e1b0c43b79557fe723f6f2b782b97c3042476cab53ea92561bec95fad550ed53ba8c839dfef61ccf7b9f2c8be818bebff06f6
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["ronald.chacon87@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Calculate contrasting color}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/ronaldchacon/color_contrast"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.12"
22
- spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "rake", "~> 12.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "pry"
24
25
  end
@@ -3,37 +3,58 @@ require "color_contrast/version"
3
3
  module ColorContrast
4
4
  extend self
5
5
 
6
- def get_contrast(hex)
7
- rgb = get_rgb(hex)
8
- yiq = get_yiq(rgb)
9
-
10
- if yiq >= 128
11
- "dark"
12
- else
13
- "light"
14
- end
6
+ class InvalidColorError < StandardError; end
7
+
8
+ def self.get_contrast(value)
9
+ Contrast.new.perform(value)
15
10
  end
16
11
 
17
- private
12
+ class Contrast
13
+ def perform(value)
14
+ raise InvalidColorError, "Not a valid RGB value or HEX value" unless valid_rgb?(value) || valid_hex?(value)
18
15
 
19
- def get_rgb(hex)
20
- hex = hex.gsub(/[^0-9A-Z]/i, "")
21
- bigint = Integer(hex, 16)
16
+ value = is_rgb?(value) ? value.delete(" ").split(",").map(&:to_i) : get_rgb(value)
17
+ value = get_yiq(value)
22
18
 
23
- r = (bigint >> 16) & 255
24
- g = (bigint >> 8) & 255
25
- b = bigint & 255
19
+ value >= 128 ? "dark" : "light"
20
+ end
26
21
 
27
- rgb = [r, g, b]
28
- rgb
29
- end
22
+ private
23
+
24
+ def get_rgb(hex)
25
+ hex = hex.gsub(/[^0-9A-Z]/i, "")
26
+ hex = hex.length == 3 ? short_to_long_hex(hex) : hex
27
+ bigint = Integer(hex, 16)
28
+
29
+ r = (bigint >> 16) & 255
30
+ g = (bigint >> 8) & 255
31
+ b = bigint & 255
32
+
33
+ [r, g, b]
34
+ end
35
+
36
+ def get_yiq(rgb)
37
+ r = rgb[0]
38
+ g = rgb[1]
39
+ b = rgb[2]
30
40
 
31
- def get_yiq(rgb)
32
- r = rgb[0]
33
- g = rgb[1]
34
- b = rgb[2]
41
+ ((r * 299) + (g * 587) + (b * 114)) / 1000
42
+ end
43
+
44
+ def short_to_long_hex(hex)
45
+ hex.chars.map { |char| char * 2}.join
46
+ end
47
+
48
+ def valid_hex?(hex)
49
+ hex && hex.match?(/\A(\h{3}|\h{6})\z/)
50
+ end
51
+
52
+ alias_method :is_hex?, :valid_hex?
53
+
54
+ def valid_rgb?(rgb)
55
+ rgb && rgb.match?(/\A([0-255]{1,3}),\s?([0-255]{1,3}),\s?([0-255]{1,3})\z/)
56
+ end
35
57
 
36
- yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000
37
- yiq
58
+ alias_method :is_rgb?, :valid_rgb?
38
59
  end
39
60
  end
@@ -1,3 +1,3 @@
1
1
  module ColorContrast
2
- VERSION = "0.1.1"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: color_contrast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ronald Chacon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-15 00:00:00.000000000 Z
11
+ date: 2018-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '12.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '12.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description:
56
70
  email:
57
71
  - ronald.chacon87@gmail.com
@@ -70,7 +84,7 @@ files:
70
84
  - color_contrast.gemspec
71
85
  - lib/color_contrast.rb
72
86
  - lib/color_contrast/version.rb
73
- homepage: ''
87
+ homepage: https://github.com/ronaldchacon/color_contrast
74
88
  licenses:
75
89
  - MIT
76
90
  metadata: {}
@@ -90,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
104
  version: '0'
91
105
  requirements: []
92
106
  rubyforge_project:
93
- rubygems_version: 2.5.1
107
+ rubygems_version: 2.7.6
94
108
  signing_key:
95
109
  specification_version: 4
96
110
  summary: Calculate contrasting color