premailer-plus 0.1.3

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.
Binary file
@@ -0,0 +1,34 @@
1
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__), '../css_parser/'))
2
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__), '../'))
3
+
4
+
5
+
6
+
7
+ require "benchmark"
8
+ require 'css_parser'
9
+
10
+ include Benchmark
11
+
12
+
13
+
14
+ css_block = {:declarations=>"color: #fff; background: #1c2815 none;", :selector=>"body", :specificity=>1},
15
+ {:declarations=>"color: #fff; background: #1c2815 none;", :selector=>"#container", :specificity=>100}
16
+
17
+ n = 10000
18
+
19
+
20
+ bm(12) do |test|
21
+ test.report("creating ruleset:") do
22
+ @cp = CssParser.new
23
+ n.times do |x|
24
+ @cp.fold_declarations(css_block)
25
+ end
26
+ end
27
+ test.report("parsing in block:") do
28
+ @cp = CssParser.new
29
+ n.times do |x|
30
+ @cp.fold_declarations_old(css_block)
31
+ end
32
+ end
33
+ end
34
+
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ require 'lib/html_to_plain_text'
3
+
4
+ class PlainTextTests < Test::Unit::TestCase
5
+ include HtmlToPlainText
6
+
7
+ def test_unordered_lists
8
+ html = %q{
9
+ <link rel="test" />
10
+ <ul>
11
+ <li class="123" id="456">Test 1</li>
12
+ <li>Test 2
13
+ <ul>
14
+ <li>Test 2a</li>
15
+ </ul>
16
+ </li>
17
+ <li>Test 3</li>
18
+ </ul>
19
+ }
20
+ text = %q{ * Test 1
21
+ * Test 2
22
+ * Test 2a
23
+ * Test 3}
24
+
25
+ assert_equal text, convert_to_text(html, 80)
26
+ end
27
+
28
+
29
+
30
+ end
@@ -0,0 +1,6 @@
1
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__), '../'))
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ require 'lib/premailer'
5
+
6
+
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+
4
+ class PremailerLinkResolverTests < Test::Unit::TestCase
5
+ def test_resolving_urls_from_string
6
+ ['test.html', '/test.html', './test.html',
7
+ 'test/../test.html', 'test/../test/../test.html'].each do |q|
8
+ assert_equal 'http://example.com/test.html', Premailer.resolve_link(q, 'http://example.com/'), q
9
+ end
10
+
11
+ assert_equal 'https://example.net:80/~basedir/test.html?var=1#anchor', Premailer.resolve_link('test/../test/../test.html?var=1#anchor', 'https://example.net:80/~basedir/')
12
+ end
13
+
14
+ def test_resolving_urls_from_uri
15
+ base_uri = URI.parse('http://example.com/')
16
+ ['test.html', '/test.html', './test.html',
17
+ 'test/../test.html', 'test/../test/../test.html'].each do |q|
18
+ assert_equal 'http://example.com/test.html', Premailer.resolve_link(q, base_uri), q
19
+ end
20
+
21
+ base_uri = URI.parse('https://example.net:80/~basedir/')
22
+ assert_equal 'https://example.net:80/~basedir/test.html?var=1#anchor', Premailer.resolve_link('test/../test/../test.html?var=1#anchor', base_uri)
23
+ end
24
+
25
+ def test_resolving_local_paths
26
+ base_dir = 'c:/root/'
27
+ ['test.html', 'test/../test.html', './test.html',
28
+ 'test/../test.html', 'test/../test/../test.html'].each do |q|
29
+ assert_equal 'c:/root/test.html', Premailer.resolve_link(q, base_dir), q
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+
4
+ class PremailerTests < Test::Unit::TestCase
5
+
6
+ def setup
7
+ #@premailer = Premailer.new
8
+ end
9
+
10
+ def test_escaping_strings
11
+ str = %q{url("/images/test.png");}
12
+ assert "url(\'/images/test.png\');", Premailer.escape_string(str)
13
+
14
+ str = %q{url("/images/\"test.png");}
15
+ assert "url(\'/images/\'test.png\');", Premailer.escape_string(str)
16
+
17
+ str = %q{url('/images/\"test.png');}
18
+ assert "url(\'/images/\'test.png\');", Premailer.escape_string(str)
19
+ end
20
+
21
+
22
+ end
@@ -0,0 +1,77 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ # Test cases for the CssParser's downloading functions.
4
+ class PremailerDownloadTest < Test::Unit::TestCase
5
+ include WEBrick
6
+
7
+ def setup
8
+ @uri_base = 'http://localhost:12000'
9
+
10
+ www_root = File.dirname(__FILE__) + '/fixtures/'
11
+
12
+ @server_thread = Thread.new do
13
+ s = WEBrick::HTTPServer.new(:Port => 12000, :DocumentRoot => www_root, :Logger => Log.new(nil, BasicLog::ERROR), :AccessLog => [])
14
+ @port = s.config[:Port]
15
+ begin
16
+ s.start
17
+ ensure
18
+ s.shutdown
19
+ end
20
+ end
21
+
22
+ sleep 1 # ensure the server has time to load
23
+ end
24
+
25
+ def teardown
26
+ @server_thread.kill
27
+ @server_thread.join(5)
28
+ @server_thread = nil
29
+ end
30
+
31
+ def test_loading_a_remote_file
32
+ @cp.load_uri!("#{@uri_base}/simple.css")
33
+ assert_equal 'margin: 0px;', @cp.find_by_selector('p').join(' ')
34
+ end
35
+
36
+ def test_following_at_import_rules
37
+ @cp.load_uri!("#{@uri_base}/import1.css")
38
+
39
+ # from '/import1.css'
40
+ assert_equal 'color: lime;', @cp.find_by_selector('div').join(' ')
41
+
42
+ # from '/subdir/import2.css'
43
+ assert_equal 'text-decoration: none;', @cp.find_by_selector('a').join(' ')
44
+
45
+ # from '/subdir/../simple.css'
46
+ assert_equal 'margin: 0px;', @cp.find_by_selector('p').join(' ')
47
+ end
48
+
49
+ def test_importing_with_media_types
50
+ @cp.load_uri!("#{@uri_base}/import-with-media-types.css")
51
+
52
+ # from simple.css with :screen media type
53
+ assert_equal 'margin: 0px;', @cp.find_by_selector('p', :screen).join(' ')
54
+ assert_equal '', @cp.find_by_selector('p', :tty).join(' ')
55
+ end
56
+
57
+ def test_throwing_circular_reference_exception
58
+ assert_raise CircularReferenceError do
59
+ @cp.load_uri!("#{@uri_base}/import-circular-reference.css")
60
+ end
61
+ end
62
+
63
+ def test_toggling_not_found_exceptions
64
+ cp_with_exceptions = Parser.new(:io_exceptions => true)
65
+
66
+ assert_raise RemoteFileError do
67
+ cp_with_exceptions.load_uri!("#{@uri_base}/no-exist.xyz")
68
+ end
69
+
70
+ cp_without_exceptions = Parser.new(:io_exceptions => false)
71
+
72
+ assert_nothing_raised RemoteFileError do
73
+ cp_without_exceptions.load_uri!("#{@uri_base}/no-exist.xyz")
74
+ end
75
+ end
76
+
77
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: premailer-plus
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Mike Green
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-11 00:00:00 -05:00
13
+ default_executable: premailer_plus
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hpricot
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.8.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: htmlentities
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 4.1.0
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: css_parser
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.9.0
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: text-reform
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 0.2.0
54
+ version:
55
+ description:
56
+ email: mike.is.green@gmail.com
57
+ executables:
58
+ - premailer_plus
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - LICENSE
63
+ - README.textile
64
+ files:
65
+ - .document
66
+ - .gitignore
67
+ - LICENSE
68
+ - README.textile
69
+ - Rakefile
70
+ - VERSION.yml
71
+ - bin/premailer_plus
72
+ - lib/html_to_plain_text.rb
73
+ - lib/premailer.rb
74
+ - misc/client_support.yaml
75
+ - premailer-plus.gemspec
76
+ - test/fixtures/client_support.html
77
+ - test/fixtures/test-import.css
78
+ - test/fixtures/test-with-folding.html
79
+ - test/fixtures/test.css
80
+ - test/fixtures/test.html
81
+ - test/fixtures/test2.css
82
+ - test/fixtures/test2.html
83
+ - test/fixtures/test3-import.css
84
+ - test/fixtures/test3-noimport.css
85
+ - test/fixtures/test3-out.html
86
+ - test/fixtures/test3.css
87
+ - test/fixtures/test3.html
88
+ - test/images/content_bg.jpg
89
+ - test/images/inset.jpg
90
+ - test/speed.rb
91
+ - test/test_convert_to_plain_text.rb
92
+ - test/test_helper.rb
93
+ - test/test_link_resolver.rb
94
+ - test/test_premailer.rb
95
+ - test/test_premailer_download.rb
96
+ has_rdoc: true
97
+ homepage: http://github.com/mikedamage/premailer-plus
98
+ licenses: []
99
+
100
+ post_install_message:
101
+ rdoc_options:
102
+ - --charset=UTF-8
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: "0"
110
+ version:
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: "0"
116
+ version:
117
+ requirements: []
118
+
119
+ rubyforge_project:
120
+ rubygems_version: 1.3.5
121
+ signing_key:
122
+ specification_version: 3
123
+ summary: Miscellaneous improvements and fixes to Alex Dunae's Premailer gem
124
+ test_files:
125
+ - test/speed.rb
126
+ - test/test_convert_to_plain_text.rb
127
+ - test/test_helper.rb
128
+ - test/test_link_resolver.rb
129
+ - test/test_premailer.rb
130
+ - test/test_premailer_download.rb