color_parser 1.0.0 → 1.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.
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in color_parser.gemspec
4
2
  gemspec
data/README.md CHANGED
@@ -11,6 +11,12 @@ Get colors on a given webpage
11
11
  ```ruby
12
12
  page = ColorParser::Page.new("http://google.com/")
13
13
  colors = page.colors
14
+ => {"ffffff"=>5, "c9d7f1"=>1, "0000cc"=>2, "dd8e27"=>1, "990000"=>1,
15
+ "3366cc"=>3, "000000"=>2, "1111cc"=>5, "cccccc"=>2, "551a8b"=>1}
16
+
17
+ colors = page.colors_by_frequency
18
+ => ["ffffff", "1111cc", "3366cc", "000000", "cccccc",
19
+ "0000cc", "dd8e27", "c9d7f1", "990000", "551a8b"]
14
20
  ```
15
21
 
16
22
  ## Installation
@@ -18,7 +24,7 @@ colors = page.colors
18
24
  To install ColorParser, add the gem to your Gemfile:
19
25
 
20
26
  ```ruby
21
- gem "color_parser", "~> 0.1.0"
27
+ gem "color_parser"
22
28
  ```
23
29
 
24
30
  ## LICENSE
data/color_parser.gemspec CHANGED
@@ -21,7 +21,8 @@ Gem::Specification.new do |gem|
21
21
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
22
22
  gem.require_paths = ["lib"]
23
23
 
24
- gem.add_runtime_dependency("stylesheet", "~> 0.1.3")
24
+ gem.add_runtime_dependency("stylesheet", "~> 0.1.4")
25
+ gem.add_runtime_dependency("color_conversion", "~> 0.1.0")
25
26
 
26
27
  gem.add_development_dependency("rake")
27
28
  gem.add_development_dependency("rspec", "~> 2.9")
data/lib/color_parser.rb CHANGED
@@ -1,13 +1,11 @@
1
1
  require 'uri'
2
- require 'curb'
3
- require 'nokogiri'
4
2
  require 'stylesheet'
3
+ require 'color_conversion'
5
4
 
6
5
  require 'color_parser/errors'
7
6
  require 'color_parser/version'
8
7
  require 'color_parser/page'
9
8
  require 'color_parser/stylesheet'
10
- require 'color_parser/color'
11
9
 
12
10
  module ColorParser
13
11
  end
@@ -82,47 +82,20 @@ module ColorParser
82
82
 
83
83
  def parse_colors(property_list)
84
84
  colors = {}
85
-
86
- text_colors = ColorParser::Color.text_colors.map {|k,v| k }.join("|")
87
-
88
- property_list.each do |key, value|
89
- # hex
90
- hex = if matches = value.match(/#([0-9a-f]{3,6})/i)
91
- normalize_hex(matches[1])
92
-
93
- # rgb/rgba
94
- elsif matches = value.match(/rgba?\((\d{1,3}[,\s]+\d{1,3}[,\s]+\d{1,3})/)
95
- rgb_to_hex(matches[1])
96
-
97
- # textual
98
- elsif matches = value.match(/(#{text_colors})/)
99
- text_to_hex(matches[1])
85
+ property_list.each do |key, value|
86
+ color = nil
87
+ value.gsub(/\s?,\s?/, ",").split(" ").each do |part|
88
+ color ||= ColorConversion::Color.new(part) rescue nil
100
89
  end
90
+ next unless color
101
91
 
102
- next unless hex
103
-
92
+ hex = color.hex.gsub("#", "")
104
93
  colors[hex] ? colors[hex] += 1 : colors[hex] = 1
105
94
  end
106
95
 
107
96
  # sort by colors with most occurrances
108
97
  colors
109
98
  end
110
-
111
- # convert rgb to hex
112
- def rgb_to_hex(rgb)
113
- r, g, b = rgb.split(",").map {|color| color.strip }
114
- "%02x" % r + "%02x" % g + "%02x" % b
115
- end
116
-
117
- # find hex for textual color
118
- def text_to_hex(color)
119
- ColorParser::Color.text_colors[color.intern]
120
- end
121
-
122
- # convert 3 digit hex to 6
123
- def normalize_hex(hex)
124
- (hex.length == 3 ? hex[0,1]*2 + hex[1,1]*2 + hex[2,1]*2: hex).downcase
125
- end
126
-
99
+
127
100
  end
128
101
  end
@@ -1,3 +1,3 @@
1
1
  module ColorParser
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: color_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-14 00:00:00.000000000 Z
12
+ date: 2015-01-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: stylesheet
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.1.3
21
+ version: 0.1.4
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,23 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.1.3
29
+ version: 0.1.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: color_conversion
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.1.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.1.0
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: rake
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -122,12 +138,10 @@ files:
122
138
  - Rakefile
123
139
  - color_parser.gemspec
124
140
  - lib/color_parser.rb
125
- - lib/color_parser/color.rb
126
141
  - lib/color_parser/errors.rb
127
142
  - lib/color_parser/page.rb
128
143
  - lib/color_parser/stylesheet.rb
129
144
  - lib/color_parser/version.rb
130
- - spec/color_spec.rb
131
145
  - spec/fixtures/css_color/frequency.html
132
146
  - spec/fixtures/css_color/stylesheets/color_styles.css
133
147
  - spec/fixtures/css_color/stylesheets/css_elements.css
@@ -158,6 +172,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
172
  - - ! '>='
159
173
  - !ruby/object:Gem::Version
160
174
  version: '0'
175
+ segments:
176
+ - 0
177
+ hash: -62843295753187331
161
178
  requirements: []
162
179
  rubyforge_project:
163
180
  rubygems_version: 1.8.25
@@ -165,7 +182,6 @@ signing_key:
165
182
  specification_version: 3
166
183
  summary: Finds colors on a given webpage
167
184
  test_files:
168
- - spec/color_spec.rb
169
185
  - spec/fixtures/css_color/frequency.html
170
186
  - spec/fixtures/css_color/stylesheets/color_styles.css
171
187
  - spec/fixtures/css_color/stylesheets/css_elements.css
@@ -177,4 +193,3 @@ test_files:
177
193
  - spec/stubs/fake_request.rb
178
194
  - spec/stylesheet_spec.rb
179
195
  - spec/version_spec.rb
180
- has_rdoc:
@@ -1,154 +0,0 @@
1
- module ColorParser
2
- class Color
3
-
4
- def self.text_colors
5
- { black: "000000",
6
- navy: "000080",
7
- darkblue: "00008b",
8
- mediumblue: "0000cd",
9
- blue: "0000ff",
10
- darkgreen: "006400",
11
- green: "008000",
12
- teal: "008080",
13
- darkcyan: "008b8b",
14
- deepskyblue: "00bfff",
15
- darkturquoise: "00ced1",
16
- mediumspringgreen: "00fa9a",
17
- lime: "00ff00",
18
- springgreen: "00ff7f",
19
- aqua: "00ffff",
20
- cyan: "00ffff",
21
- midnightblue: "191970",
22
- dodgerblue: "1e90ff",
23
- lightseagreen: "20b2aa",
24
- forestgreen: "228b22",
25
- seagreen: "2e8b57",
26
- darkslategray: "2f4f4f",
27
- darkslategrey: "2f4f4f",
28
- limegreen: "32cd32",
29
- mediumseagreen: "3cb371",
30
- turquoise: "40e0d0",
31
- royalblue: "4169e1",
32
- steelblue: "4682b4",
33
- darkslateblue: "483d8b",
34
- mediumturquoise: "48d1cc",
35
- indigo: "4b0082",
36
- darkolivegreen: "556b2f",
37
- cadetblue: "5f9ea0",
38
- cornflowerblue: "6495ed",
39
- mediumaquamarine: "66cdaa",
40
- dimgray: "696969",
41
- dimgrey: "696969",
42
- slateblue: "6a5acd",
43
- olivedrab: "6b8e23",
44
- slategray: "708090",
45
- slategrey: "708090",
46
- lightslategray: "778899",
47
- lightslategrey: "778899",
48
- mediumslateblue: "7b68ee",
49
- lawngreen: "7cfc00",
50
- chartreuse: "7fff00",
51
- aquamarine: "7fffd4",
52
- maroon: "800000",
53
- purple: "800080",
54
- olive: "808000",
55
- gray: "808080",
56
- grey: "808080",
57
- skyblue: "87ceeb",
58
- lightskyblue: "87cefa",
59
- blueviolet: "8a2be2",
60
- darkred: "8b0000",
61
- darkmagenta: "8b008b",
62
- saddlebrown: "8b4513",
63
- darkseagreen: "8fbc8f",
64
- lightgreen: "90ee90",
65
- mediumpurple: "9370db",
66
- darkviolet: "9400d3",
67
- palegreen: "98fb98",
68
- darkorchid: "9932cc",
69
- yellowgreen: "9acd32",
70
- sienna: "a0522d",
71
- brown: "a52a2a",
72
- darkgray: "a9a9a9",
73
- darkgrey: "a9a9a9",
74
- lightblue: "add8e6",
75
- greenyellow: "adff2f",
76
- paleturquoise: "afeeee",
77
- lightsteelblue: "b0c4de",
78
- powderblue: "b0e0e6",
79
- firebrick: "b22222",
80
- darkgoldenrod: "b8860b",
81
- mediumorchid: "ba55d3",
82
- rosybrown: "bc8f8f",
83
- darkkhaki: "bdb76b",
84
- silver: "c0c0c0",
85
- mediumvioletred: "c71585",
86
- indianred: "cd5c5c",
87
- peru: "cd853f",
88
- chocolate: "d2691e",
89
- tan: "d2b48c",
90
- lightgray: "d3d3d3",
91
- lightgrey: "d3d3d3",
92
- thistle: "d8bfd8",
93
- orchid: "da70d6",
94
- goldenrod: "daa520",
95
- palevioletred: "db7093",
96
- crimson: "dc143c",
97
- gainsboro: "dcdcdc",
98
- plum: "dda0dd",
99
- burlywood: "deb887",
100
- lightcyan: "e0ffff",
101
- lavender: "e6e6fa",
102
- darksalmon: "e9967a",
103
- violet: "ee82ee",
104
- palegoldenrod: "eee8aa",
105
- lightcoral: "f08080",
106
- khaki: "f0e68c",
107
- aliceblue: "f0f8ff",
108
- honeydew: "f0fff0",
109
- azure: "f0ffff",
110
- sandybrown: "f4a460",
111
- wheat: "f5deb3",
112
- beige: "f5f5dc",
113
- whitesmoke: "f5f5f5",
114
- mintcream: "f5fffa",
115
- ghostwhite: "f8f8ff",
116
- salmon: "fa8072",
117
- antiquewhite: "faebd7",
118
- linen: "faf0e6",
119
- lightgoldenrodyellow: "fafad2",
120
- oldlace: "fdf5e6",
121
- red: "ff0000",
122
- fuchsia: "ff00ff",
123
- magenta: "ff00ff",
124
- deeppink: "ff1493",
125
- orangered: "ff4500",
126
- tomato: "ff6347",
127
- hotpink: "ff69b4",
128
- coral: "ff7f50",
129
- darkorange: "ff8c00",
130
- lightsalmon: "ffa07a",
131
- orange: "ffa500",
132
- lightpink: "ffb6c1",
133
- pink: "ffc0cb",
134
- gold: "ffd700",
135
- peachpuff: "ffdab9",
136
- navajowhite: "ffdead",
137
- moccasin: "ffe4b5",
138
- bisque: "ffe4c4",
139
- mistyrose: "ffe4e1",
140
- blanchedalmond: "ffebcd",
141
- papayawhip: "ffefd5",
142
- lavenderblush: "fff0f5",
143
- seashell: "fff5ee",
144
- cornsilk: "fff8dc",
145
- lemonchiffon: "fffacd",
146
- floralwhite: "fffaf0",
147
- snow: "fffafa",
148
- yellow: "ffff00",
149
- lightyellow: "ffffe0",
150
- ivory: "fffff0",
151
- white: "ffffff" }
152
- end
153
- end
154
- end
data/spec/color_spec.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Color do
4
- describe ".text_colors" do
5
- it "must have textual colors" do
6
- text_colors = ColorParser::Color.text_colors
7
- expect(text_colors[:black]).to eq "000000"
8
- end
9
- end
10
- end