color_parser 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +43 -0
  5. data/Rakefile +10 -0
  6. data/color_parser.gemspec +26 -0
  7. data/lib/color_parser/image.rb +20 -0
  8. data/lib/color_parser/page.rb +88 -0
  9. data/lib/color_parser/stylesheet.rb +197 -0
  10. data/lib/color_parser/version.rb +3 -0
  11. data/lib/color_parser.rb +142 -0
  12. data/test/color_parser_test.rb +83 -0
  13. data/test/fixtures/css/absolute.html +15 -0
  14. data/test/fixtures/css/inline.html +34 -0
  15. data/test/fixtures/css/inline_import.html +16 -0
  16. data/test/fixtures/css/invalid.html +15 -0
  17. data/test/fixtures/css/relative.html +15 -0
  18. data/test/fixtures/css/relative_root.html +15 -0
  19. data/test/fixtures/css/stylesheets/colors.css +0 -0
  20. data/test/fixtures/css/stylesheets/fonts.css +0 -0
  21. data/test/fixtures/css/stylesheets/print.css +3 -0
  22. data/test/fixtures/css/stylesheets/screen.css +16 -0
  23. data/test/fixtures/css_color/frequency.html +22 -0
  24. data/test/fixtures/css_color/stylesheets/color_styles.css +34 -0
  25. data/test/fixtures/css_color/stylesheets/css_elements.css +24 -0
  26. data/test/fixtures/css_color/stylesheets/frequency.css +35 -0
  27. data/test/fixtures/css_color/stylesheets/imported_selectors.css +3 -0
  28. data/test/fixtures/css_color/stylesheets/properties.css +18 -0
  29. data/test/fixtures/css_images/images/apple.png +0 -0
  30. data/test/fixtures/css_images/images/cantaloupe.png +0 -0
  31. data/test/fixtures/css_images/images/kiwi.jpg +0 -0
  32. data/test/fixtures/css_images/images/mango.png +0 -0
  33. data/test/fixtures/css_images/images/pineapple.png +0 -0
  34. data/test/fixtures/css_images/paths.html +14 -0
  35. data/test/fixtures/css_images/stylesheets/import_paths.css +4 -0
  36. data/test/fixtures/css_images/stylesheets/paths.css +17 -0
  37. data/test/fixtures/css_images/stylesheets/quotes.css +14 -0
  38. data/test/fixtures/css_import/index.html +15 -0
  39. data/test/fixtures/css_import/stylesheets/borders.css +0 -0
  40. data/test/fixtures/css_import/stylesheets/colors.css +0 -0
  41. data/test/fixtures/css_import/stylesheets/fonts.css +3 -0
  42. data/test/fixtures/css_import/stylesheets/ie.css +3 -0
  43. data/test/fixtures/css_import/stylesheets/images.css +0 -0
  44. data/test/fixtures/css_import/stylesheets/master.css +12 -0
  45. data/test/fixtures/css_import/stylesheets/print.css +3 -0
  46. data/test/fixtures/css_import/stylesheets/screen.css +12 -0
  47. data/test/fixtures/inline_images/absolute.html +14 -0
  48. data/test/fixtures/inline_images/images/apple.png +0 -0
  49. data/test/fixtures/inline_images/images/kiwi.jpg +0 -0
  50. data/test/fixtures/inline_images/relative.html +14 -0
  51. data/test/fixtures/inline_images/relative_root.html +14 -0
  52. data/test/image_test.rb +27 -0
  53. data/test/page_test.rb +194 -0
  54. data/test/stylesheet_test.rb +257 -0
  55. data/test/test_helper.rb +6 -0
  56. data/test/test_request.rb +19 -0
  57. data/test/version_test.rb +7 -0
  58. metadata +184 -0
@@ -0,0 +1,34 @@
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>
@@ -0,0 +1,16 @@
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>
@@ -0,0 +1,15 @@
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>
@@ -0,0 +1,15 @@
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>
@@ -0,0 +1,15 @@
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
@@ -0,0 +1,3 @@
1
+ body {
2
+ margin: 0;
3
+ }
@@ -0,0 +1,16 @@
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
+ }
@@ -0,0 +1,22 @@
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/frequency.css" media="screen" type="text/css" />
10
+ <style>
11
+ body {
12
+ background-color: #535353;
13
+ }
14
+ a:link {
15
+ color: #357ad1;
16
+ }
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <div></div>
21
+ </body>
22
+ </html>
@@ -0,0 +1,34 @@
1
+ /* color names - 008080 */
2
+ div {
3
+ background-color: teal;
4
+ }
5
+
6
+ /* hex */
7
+ div {
8
+ color: #386ec0;
9
+ }
10
+
11
+ /* hex short */
12
+ div {
13
+ color: #c0c;
14
+ }
15
+
16
+ /* rgb -- 718ad7 */
17
+ div {
18
+ color: rgb(113,138,215);
19
+ }
20
+
21
+ /* rgb spaces -- 3a5dc4 */
22
+ div {
23
+ color: rgb(58, 93, 196);
24
+ }
25
+
26
+ /* rgba -- 29469e */
27
+ div {
28
+ color: rgba(41,70,158,0.5);
29
+ }
30
+
31
+ /* rgba spaces -- 3f6aeb */
32
+ div {
33
+ color: rgba(63, 106, 235, 0.5);
34
+ }
@@ -0,0 +1,24 @@
1
+ /* background-color */
2
+ div {
3
+ background-color: #abcdef;
4
+ }
5
+
6
+ /* background */
7
+ div {
8
+ background: #abcdef url("/images/something.png");
9
+ }
10
+
11
+ /* border-color */
12
+ div {
13
+ border-color: #abcdef;
14
+ }
15
+
16
+ /* border */
17
+ div {
18
+ border: 1px solid #abcdef;
19
+ }
20
+
21
+ /* text color */
22
+ div {
23
+ color: #abcdef;
24
+ }
@@ -0,0 +1,35 @@
1
+ /* backgrounds */
2
+ div {
3
+ background-color: #3a5dc4;
4
+ }
5
+ div {
6
+ background: #386ec0 url("/images/something.png");
7
+ }
8
+ div {
9
+ background: #386ec0 url("/images/something.png");
10
+ }
11
+
12
+
13
+ /* text */
14
+ div {
15
+ color: #718ad7;
16
+ }
17
+ h1 {
18
+ color: #386ec0;
19
+ }
20
+ h2 {
21
+ color: #386ec0;
22
+ }
23
+
24
+ /* borders */
25
+ div {
26
+ border-color: #718ad7;
27
+ }
28
+ div {
29
+ border: 1px solid #3a5dc4;
30
+ }
31
+ div {
32
+ border: 1px solid #3a5dc4;
33
+ }
34
+
35
+ @import url("imported_selectors.css");
@@ -0,0 +1,3 @@
1
+ dl {
2
+ border: 1px solid red;
3
+ }
@@ -0,0 +1,18 @@
1
+ div {
2
+ background: #000;
3
+ color: #fff
4
+ }
5
+
6
+ /* combo with semi */
7
+ p {
8
+ margin:0;
9
+ background-color:#ccc;
10
+ }
11
+
12
+ /* single line */
13
+ h1 {font-size:100%;border-color:rgb(1,2,3);}
14
+
15
+ /* more single line */
16
+ p {padding:0;}h1 {padding:0;}
17
+
18
+ @import url("imported_selectors.css");
@@ -0,0 +1,14 @@
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>
@@ -0,0 +1,4 @@
1
+ /* imported */
2
+ h2 {
3
+ background: #fff url("/css_images/images/pineapple.png") 0 0 no-repeat;
4
+ }
@@ -0,0 +1,17 @@
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");
@@ -0,0 +1,14 @@
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
+ }
@@ -0,0 +1,15 @@
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>
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ body {
2
+ font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Helvetica, Arial, sans-serif;
3
+ }
@@ -0,0 +1,3 @@
1
+ div {
2
+ background-color: red;
3
+ }
File without changes
@@ -0,0 +1,12 @@
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
+ }
@@ -0,0 +1,3 @@
1
+ body {
2
+ margin: 0;
3
+ }
@@ -0,0 +1,12 @@
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");
@@ -0,0 +1,14 @@
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>
@@ -0,0 +1,14 @@
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>
@@ -0,0 +1,14 @@
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="/inline_images/images/apple.png" />
11
+ <p>Something</p>
12
+ <img src='/inline_images/images/kiwi.jpg' />
13
+ </body>
14
+ </html>
@@ -0,0 +1,27 @@
1
+ require_relative "test_helper"
2
+
3
+ describe Image do
4
+ def setup
5
+ ColorParser.request = ColorParser::TestRequest.new
6
+ end
7
+
8
+ it "should assign url" do
9
+ image = ColorParser::Image.new("http://example.com/foo/bar.png")
10
+
11
+ image.url.must_equal "http://example.com/foo/bar.png"
12
+ end
13
+
14
+ it "should parse host path and query from url" do
15
+ image = ColorParser::Image.new("http://example.com/foo/bar.png?baz=bar")
16
+
17
+ image.host.must_equal "example.com"
18
+ image.path.must_equal "/foo/bar.png"
19
+ image.query.must_equal "baz=bar"
20
+ end
21
+
22
+ it "should parse name" do
23
+ image = ColorParser::Image.new("http://example.com/foo/bar.png?baz=bar")
24
+
25
+ "bar.png".must_equal image.name
26
+ end
27
+ end