css_color 1.0.0

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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +29 -0
  3. data/lib/css_color.rb +41 -0
  4. metadata +72 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5b23b30a036b3fa34e79313e4db4c7bc2bf0d292
4
+ data.tar.gz: 1e744c27e37359973be86183a07c11f4b2f4ca97
5
+ SHA512:
6
+ metadata.gz: ebf3b1ec1ab71b0253883c3451af10ba9aadd881073aa1849bb945b4e53f3ca1f565c822f954d49c6b06b02e62f14043f5c1319d288aa847b21f4e4bb33eff9b
7
+ data.tar.gz: b29ae68f6fab788e61e7671122a94c12c6614cf56bd87c44c78b3a5a40d2f3dd6fb65210d18dea209d853aad95f5a98649e15ac8f0ef6b108b7a47161c2deb90
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ ## CSS Color
2
+
3
+ Make sense of any css color string.
4
+
5
+ The [color gem](https://rubygems.org/gems/color) is fantastic, but it is a requirement that you know what type of colour you're parsing: `#fff`, `blue`, `rgb(0, 0, 0)`, `rgb(50%, 50%, 50%)`
6
+
7
+ This gem handles that requirement for you:
8
+
9
+ ```ruby
10
+ require "css_color"
11
+
12
+ CSSColor.parse("#fff")
13
+ #=> RGB [#ffffff]
14
+
15
+ CSSColor.parse("blue")
16
+ #=> RGB [#0000ff]
17
+
18
+ CSSColor.parse("rgb(0, 0, 0)")
19
+ #=> RGB [#000000]
20
+
21
+ CSSColor.parse("rgb(50%, 50%, 50%)")
22
+ #=> RGB [#808080]
23
+ ```
24
+
25
+ The return type is an instance of the `Color` class, which has a rich feature set.
26
+
27
+ This gem aims to comply with the color grammar defined [here](http://www.w3.org/TR/SVG/types.html#DataTypeColor).
28
+
29
+ RGBA, HSL and HSLA are not part of this specification. You're welcome to implement them and send a pull request.
data/lib/css_color.rb ADDED
@@ -0,0 +1,41 @@
1
+ require "color"
2
+ require "color/css"
3
+
4
+ class CSSColor
5
+
6
+ def self.parse(string)
7
+
8
+ case string
9
+ when /#/
10
+ Color::RGB.from_html(string)
11
+ when /%/
12
+ integers = extract(string, max = 100)
13
+ Color::RGB.from_percentage(*integers)
14
+ when /rgb/i
15
+ integers = extract(string, max = 255)
16
+ Color::RGB.new(*integers)
17
+ else
18
+ Color::CSS[string]
19
+ end or raise ArgumentError
20
+
21
+ rescue ArgumentError
22
+
23
+ raise UnknownColorError.new(
24
+ "Couldn't make sense of #{string.inspect}"
25
+ )
26
+
27
+ end
28
+
29
+ private
30
+ def self.extract(string, max)
31
+ integers = string.scan(/-?\d+/).map(&:to_i)
32
+
33
+ raise ArgumentError unless integers.size == 3
34
+ raise ArgumentError unless integers.all? { |i| (0..max).include?(i) }
35
+
36
+ integers
37
+ end
38
+
39
+ class UnknownColorError < ArgumentError; end
40
+
41
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: css_color
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Patuzzo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-03-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: color
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Make sense of any css color string.
42
+ email: chris@patuzzo.co.uk
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - README.md
48
+ - lib/css_color.rb
49
+ homepage: https://github.com/cpatuzzo/css_color
50
+ licenses: []
51
+ metadata: {}
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 2.0.0
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: CSS Color
72
+ test_files: []