color_parser 0.1.0 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +0 -2
  3. data/Guardfile +2 -2
  4. data/README.md +9 -18
  5. data/color_parser.gemspec +3 -3
  6. data/lib/color_parser.rb +2 -48
  7. data/lib/color_parser/page.rb +14 -57
  8. data/lib/color_parser/stylesheet.rb +27 -116
  9. data/lib/color_parser/version.rb +1 -1
  10. data/spec/fixtures/css_color/stylesheets/color_styles.css +7 -7
  11. data/spec/fixtures/css_color/stylesheets/frequency.css +9 -9
  12. data/spec/page_spec.rb +27 -182
  13. data/spec/stylesheet_spec.rb +43 -153
  14. metadata +31 -126
  15. data/lib/color_parser/color.rb +0 -154
  16. data/lib/color_parser/image.rb +0 -20
  17. data/lib/color_parser/request.rb +0 -21
  18. data/spec/color_parser_spec.rb +0 -88
  19. data/spec/color_spec.rb +0 -10
  20. data/spec/fixtures/css/absolute.html +0 -15
  21. data/spec/fixtures/css/inline.html +0 -34
  22. data/spec/fixtures/css/inline_import.html +0 -16
  23. data/spec/fixtures/css/invalid.html +0 -15
  24. data/spec/fixtures/css/relative.html +0 -15
  25. data/spec/fixtures/css/relative_root.html +0 -15
  26. data/spec/fixtures/css/stylesheets/colors.css +0 -0
  27. data/spec/fixtures/css/stylesheets/fonts.css +0 -0
  28. data/spec/fixtures/css/stylesheets/print.css +0 -3
  29. data/spec/fixtures/css/stylesheets/screen.css +0 -16
  30. data/spec/fixtures/css_images/images/apple.png +0 -0
  31. data/spec/fixtures/css_images/images/cantaloupe.png +0 -0
  32. data/spec/fixtures/css_images/images/kiwi.jpg +0 -0
  33. data/spec/fixtures/css_images/images/mango.png +0 -0
  34. data/spec/fixtures/css_images/images/pineapple.png +0 -0
  35. data/spec/fixtures/css_images/paths.html +0 -14
  36. data/spec/fixtures/css_images/stylesheets/import_paths.css +0 -4
  37. data/spec/fixtures/css_images/stylesheets/paths.css +0 -17
  38. data/spec/fixtures/css_images/stylesheets/quotes.css +0 -14
  39. data/spec/fixtures/css_import/index.html +0 -15
  40. data/spec/fixtures/css_import/stylesheets/borders.css +0 -0
  41. data/spec/fixtures/css_import/stylesheets/colors.css +0 -0
  42. data/spec/fixtures/css_import/stylesheets/fonts.css +0 -3
  43. data/spec/fixtures/css_import/stylesheets/ie.css +0 -3
  44. data/spec/fixtures/css_import/stylesheets/images.css +0 -0
  45. data/spec/fixtures/css_import/stylesheets/master.css +0 -12
  46. data/spec/fixtures/css_import/stylesheets/print.css +0 -3
  47. data/spec/fixtures/css_import/stylesheets/screen.css +0 -12
  48. data/spec/fixtures/inline_images/absolute.html +0 -14
  49. data/spec/fixtures/inline_images/images/apple.png +0 -0
  50. data/spec/fixtures/inline_images/images/kiwi.jpg +0 -0
  51. data/spec/fixtures/inline_images/relative.html +0 -14
  52. data/spec/fixtures/inline_images/relative_root.html +0 -14
  53. data/spec/image_spec.rb +0 -33
  54. data/spec/request_spec.rb +0 -12
@@ -1,20 +0,0 @@
1
- module ColorParser
2
- class Image
3
- attr_reader :url, :host, :path, :query
4
-
5
- def initialize(url)
6
- @url = url
7
- @host, @path, @query = ColorParser.parse_url(url)
8
- end
9
-
10
- def name
11
- path.split("/").last
12
- end
13
-
14
- # TODO - find colors in the image
15
- def colors
16
- []
17
- end
18
-
19
- end
20
- end
@@ -1,21 +0,0 @@
1
- class Request
2
- def get(url)
3
- curl = Curl::Easy.perform(url) do |curl|
4
- curl.headers["User-Agent"] = user_agent
5
- curl.follow_location = true
6
- end
7
-
8
- curl.body_str
9
-
10
- rescue ColorParser::Error
11
- raise
12
-
13
- # re-raise external library errors in our namespace
14
- rescue => error
15
- raise ColorParser::Error.new("#{error.class}: #{error.message}")
16
- end
17
-
18
- def user_agent
19
- "Ruby/ColorParser Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"
20
- end
21
- end
@@ -1,88 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ColorParser do
4
- before(:each) do
5
- ColorParser.request = FakeRequest.new
6
- end
7
-
8
- it "should retrieve fixture" do
9
- url = "http://example.com/css/absolute.html?foo=bar"
10
- result = ColorParser.request.get(url)
11
- expect(result).to be
12
- end
13
-
14
-
15
- # parse_url
16
-
17
- it "should parse url" do
18
- url = "http://example.com/test/something/"
19
- parsed = ColorParser.parse_url(url)
20
-
21
- expect(parsed).to eq ["example.com", "/test/something/", nil]
22
- end
23
-
24
- it "should parse url with no trailing slash" do
25
- url = "http://example.com"
26
- parsed = ColorParser.parse_url(url)
27
-
28
- expect(parsed).to eq ["example.com", "/", nil]
29
- end
30
-
31
- it "should parse url with query params" do
32
- url = "http://example.com?foo=bar&baz=bar"
33
- parsed = ColorParser.parse_url(url)
34
-
35
- expect(parsed).to eq ["example.com", "/", "foo=bar&baz=bar"]
36
- end
37
-
38
-
39
- # parse_asset
40
-
41
- it "should parse asset absolute path" do
42
- doc = "http://example.com/stylesheets/base.css"
43
- asset = "http://asset.example.com/stylesheets/style.css"
44
-
45
- parsed = ColorParser.parse_asset(doc, asset)
46
- expect(parsed).to eq "http://asset.example.com/stylesheets/style.css"
47
- end
48
-
49
- it "should parse asset absolute path with query string" do
50
- doc = "http://example.com/stylesheets/base.css?foo=bar"
51
- asset = "http://asset.example.com/stylesheets/style.css?baz=bar"
52
-
53
- parsed = ColorParser.parse_asset(doc, asset)
54
- expect(parsed).to eq "http://asset.example.com/stylesheets/style.css?baz=bar"
55
- end
56
-
57
- it "should parse relative root path" do
58
- doc = "http://example.com/stylesheets/base.css"
59
- asset = "/styles/style.css"
60
-
61
- parsed = ColorParser.parse_asset(doc, asset)
62
- expect(parsed).to eq "http://example.com/styles/style.css"
63
- end
64
-
65
- it "should parse relative root path with query string" do
66
- doc = "http://example.com/stylesheets/base.css?foo=bar"
67
- asset = "/styles/style.css?baz=bar"
68
-
69
- parsed = ColorParser.parse_asset(doc, asset)
70
- expect(parsed).to eq "http://example.com/styles/style.css?baz=bar"
71
- end
72
-
73
- it "should parse relative path" do
74
- doc = "http://example.com/stylesheets/base.css"
75
- asset = "ie.css"
76
-
77
- parsed = ColorParser.parse_asset(doc, asset)
78
- expect(parsed).to eq "http://example.com/stylesheets/ie.css"
79
- end
80
-
81
- it "should parse relative path with query string" do
82
- doc = "http://example.com/stylesheets/base.css?foo=bar"
83
- asset = "ie.css?baz=bar"
84
-
85
- parsed = ColorParser.parse_asset(doc, asset)
86
- expect(parsed).to eq "http://example.com/stylesheets/ie.css?baz=bar"
87
- end
88
- end
@@ -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
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
-
9
- <link rel="stylesheet" href="http://example.com/css/stylesheets/screen.css" media="screen" type="text/css" />
10
- <link rel="stylesheet" href="http://example.com/css/stylesheets/print.css" media="print" type="text/css" />
11
- </head>
12
- <body>
13
- <div></div>
14
- </body>
15
- </html>
@@ -1,34 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
- <style>
9
- body {
10
- color: #444;
11
- background-color: #535353;
12
- }
13
- a:link {
14
- color: #357ad1;
15
- }
16
- a:visited {
17
- color: #77abf0;
18
- }
19
- a:hover {
20
- color: #333;
21
- }
22
- </style>
23
- </head>
24
- <body>
25
- <style>
26
- div {
27
- background-color: #aaa;
28
- border: 1px solid #ccc;
29
- }
30
- </style>
31
-
32
- <div></div>
33
- </body>
34
- </html>
@@ -1,16 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
- <style>
9
- @import "stylesheets/print.css";@import url "stylesheets/fonts.css"
10
- @import url("stylesheets/colors.css")
11
- </style>
12
- </head>
13
- <body>
14
- <div></div>
15
- </body>
16
- </html>
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
-
9
- <link rel="stylesheet" href="stylesheets/asdf.css" media="screen" type="text/css" />
10
- <link rel="stylesheet" href="stylesheets/screen.css" media="screen" type="text/css" />
11
- </head>
12
- <body>
13
- <div></div>
14
- </body>
15
- </html>
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
-
9
- <link rel="stylesheet" href="stylesheets/screen.css" media="screen" type="text/css" />
10
- <link rel="stylesheet" href="stylesheets/print.css" media="print" type="text/css" />
11
- </head>
12
- <body>
13
- <div></div>
14
- </body>
15
- </html>
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
-
9
- <link rel="stylesheet" href="/css/stylesheets/screen.css" media="screen" type="text/css" />
10
- <link rel="stylesheet" href="/css/stylesheets/print.css" media="print" type="text/css" />
11
- </head>
12
- <body>
13
- <div></div>
14
- </body>
15
- </html>
File without changes
File without changes
@@ -1,3 +0,0 @@
1
- body {
2
- margin: 0;
3
- }
@@ -1,16 +0,0 @@
1
- body {
2
- color: #444;
3
- background-color: #535353;
4
- }
5
- a:link {
6
- color: #357ad1;
7
- }
8
- a:visited {
9
- color: #77abf0;
10
- }
11
- a:hover {
12
- color: #333;
13
- }
14
- .shade {
15
- background-color: #f5f5f5;
16
- }
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
-
9
- <link rel="stylesheet" href="stylesheets/paths.css" media="screen" type="text/css" />
10
- </head>
11
- <body>
12
- <img src="images/mango.png" />
13
- </body>
14
- </html>
@@ -1,4 +0,0 @@
1
- /* imported */
2
- h2 {
3
- background: #fff url("/css_images/images/pineapple.png") 0 0 no-repeat;
4
- }
@@ -1,17 +0,0 @@
1
- /* absolute */
2
- body {
3
- background: #fff url("http://example.com/css_images/images/apple.png") 0 0 no-repeat;
4
- }
5
-
6
- /* relative */
7
- div {
8
- background: #fff url("/css_images/images/kiwi.jpg") 0 0 no-repeat;
9
- }
10
-
11
- /* relative root */
12
- ul {
13
- background: #fff url("../images/cantaloupe.png") 0 0 no-repeat;
14
- }
15
-
16
- /* import */
17
- @import url("import_paths.css");
@@ -1,14 +0,0 @@
1
- /* quotes */
2
- dl {
3
- background: #fff url("/css_images/images/apple.png") 0 0 no-repeat;
4
- }
5
-
6
- /* single quotes */
7
- h1 {
8
- background: #fff url('/css_images/images/kiwi.jpg') 0 0 no-repeat;
9
- }
10
-
11
- /* no quotes */
12
- h2 {
13
- background: #fff url(/css_images/images/cantaloupe.png) 0 0 no-repeat;
14
- }
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
-
9
- <link rel="stylesheet" href="stylesheets/screen.css" media="screen" type="text/css" />
10
- <link rel="stylesheet" href="stylesheets/print.css" media="screen" type="text/css" />
11
- </head>
12
- <body>
13
- <div></div>
14
- </body>
15
- </html>
@@ -1,3 +0,0 @@
1
- body {
2
- font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Helvetica, Arial, sans-serif;
3
- }
@@ -1,3 +0,0 @@
1
- div {
2
- background-color: red;
3
- }
@@ -1,12 +0,0 @@
1
- a:link {
2
- color: #357ad1;
3
- }
4
- a:visited {
5
- color: #77abf0;
6
- }
7
- a:hover {
8
- color: #333;
9
- }
10
- .shade {
11
- background-color: #f5f5f5;
12
- }
@@ -1,3 +0,0 @@
1
- body {
2
- margin: 0;
3
- }
@@ -1,12 +0,0 @@
1
- body {
2
- color: #444;
3
- background-color: #535353;
4
- }
5
-
6
- @import url("master.css");
7
- @import url('/css_import/stylesheets/fonts.css');
8
- @import url(http://example.com/css_import/stylesheets/ie.css);
9
- @import url "images.css";
10
- @import "borders.css";
11
- @import colors.css;
12
- @import url("invalid.css");
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
- </head>
9
- <body>
10
- <img src="http://example.com/inline_images/images/apple.png" />
11
- <p>Something</p>
12
- <img src='http://example.com/inline_images/images/kiwi.jpg' />
13
- </body>
14
- </html>
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
4
-
5
- <head>
6
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
7
- <title>Color Parser</title>
8
- </head>
9
- <body>
10
- <img src="images/apple.png" />
11
- <p>Something</p>
12
- <img src='images/kiwi.jpg' />
13
- </body>
14
- </html>