html_press 0.6.7 → 0.7.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.
- data/.gitignore +1 -0
- data/Gemfile +2 -0
- data/Rakefile +10 -10
- data/Readme.md +3 -0
- data/html_press.gemspec +29 -29
- data/lib/html_press/html.rb +93 -54
- data/lib/html_press/version.rb +1 -1
- data/lib/html_press.rb +17 -17
- data/profile/index.html +37690 -0
- data/profile/profile.rb +28 -0
- data/spec/html_press_spec.rb +32 -16
- metadata +7 -5
data/profile/profile.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require "bundler"
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
require 'ruby-prof'
|
5
|
+
require 'html_press'
|
6
|
+
|
7
|
+
file_path = File.expand_path("../index.html", __FILE__)
|
8
|
+
html = File.open(file_path, "r:UTF-8").read
|
9
|
+
|
10
|
+
# require 'open-uri'
|
11
|
+
# html = open('http://www.amazon.com/') {|f| f.read }
|
12
|
+
|
13
|
+
before = html.bytesize
|
14
|
+
html.force_encoding "UTF-8" if html.respond_to?(:force_encoding)
|
15
|
+
|
16
|
+
RubyProf.start
|
17
|
+
html = HtmlPress.press html
|
18
|
+
result = RubyProf.stop
|
19
|
+
|
20
|
+
after = html.bytesize
|
21
|
+
puts "Economy: " + ((before - after).to_f/1024).round(2).to_s + "kb (" +
|
22
|
+
(100*(before - after).to_f/before).round(2).to_s + "%)"
|
23
|
+
|
24
|
+
report_path = File.expand_path("../reports", __FILE__)
|
25
|
+
FileUtils.rm_rf(report_path)
|
26
|
+
Dir.mkdir(report_path) unless File.exist?(report_path)
|
27
|
+
printer = RubyProf::MultiPrinter.new(result)
|
28
|
+
printer.print(:path => report_path, :profile => "profile")
|
data/spec/html_press_spec.rb
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
require File.expand_path("../lib/html_press", File.dirname(__FILE__))
|
4
4
|
|
5
|
-
class
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
class LoggerStub
|
6
|
+
attr_accessor :errors
|
7
|
+
def initialize
|
8
|
+
@errors = []
|
9
|
+
end
|
10
|
+
def error text
|
11
|
+
@errors.push text
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -72,7 +72,15 @@ describe HtmlPress do
|
|
72
72
|
|
73
73
|
it "should remove whitespaces between IE conditional comments" do
|
74
74
|
text = "<p></p> <!--[if IE]><html class=\"ie\"> <![endif]--> <!--[if IE]><html class=\"ie1\"><![endif]-->"
|
75
|
-
text2 = "<p></p
|
75
|
+
text2 = "<p></p> <!--[if IE]><html class=\"ie\"><![endif]--><!--[if IE]><html class=\"ie1\"><![endif]-->"
|
76
|
+
# TODO ↑ remove this whitespace
|
77
|
+
HtmlPress.press(text).should eql text2
|
78
|
+
end
|
79
|
+
|
80
|
+
# TODO concatenate adjacent script tags
|
81
|
+
it "should remove whitespaces between script tags" do
|
82
|
+
text = "<p></p> <script>var a</script> \t <script>var b</script>"
|
83
|
+
text2 = "<p></p> <script>var a</script><script>var b</script>"
|
76
84
|
HtmlPress.press(text).should eql text2
|
77
85
|
end
|
78
86
|
|
@@ -104,7 +112,7 @@ describe HtmlPress do
|
|
104
112
|
|
105
113
|
it "should optimize attributes" do
|
106
114
|
HtmlPress.press("<p class=\"a b\"></p>").should eql "<p class=\"a b\"></p>"
|
107
|
-
# http(s):// to //
|
115
|
+
# TODO http(s):// to //
|
108
116
|
end
|
109
117
|
|
110
118
|
it "should compress css in style attributes" do
|
@@ -120,6 +128,13 @@ describe HtmlPress do
|
|
120
128
|
HtmlPress.press(text).should eql text
|
121
129
|
end
|
122
130
|
|
131
|
+
# TODO
|
132
|
+
# it "should compress namespaces" do
|
133
|
+
# text = "<html xmlns:og=\"http://ogp.me/ns#\" class=\"a b\"><og:like>like</og:like></html>"
|
134
|
+
# text1 = "<html xmlns:a=\"http://ogp.me/ns#\" class=\"a b\"><a:like>like</a:like></html>"
|
135
|
+
# HtmlPress.press(text).should eql text1
|
136
|
+
# end
|
137
|
+
|
123
138
|
it "should not modify input value" do
|
124
139
|
text = "<div> </div>"
|
125
140
|
text1 = text.dup
|
@@ -134,17 +149,17 @@ describe HtmlPress do
|
|
134
149
|
|
135
150
|
it "should report javascript errors" do
|
136
151
|
["<script>function(){</script>", "<a onclick=\"return false\"></a>"].each do |script_with_error|
|
137
|
-
|
138
|
-
HtmlPress.press(script_with_error, {:logger =>
|
139
|
-
|
152
|
+
log = LoggerStub.new
|
153
|
+
HtmlPress.press(script_with_error, {:logger => log}).should eql script_with_error
|
154
|
+
log.errors.size.should eql 1
|
140
155
|
end
|
141
156
|
end
|
142
157
|
|
143
158
|
it "should report css errors" do
|
144
159
|
["<style>.clas{margin:</style>", "<a style=\"#asd\">link</a>"].each do |style_with_error|
|
145
|
-
|
146
|
-
HtmlPress.press(style_with_error, {:logger =>
|
147
|
-
|
160
|
+
log = LoggerStub.new
|
161
|
+
HtmlPress.press(style_with_error, {:logger => log}).should eql style_with_error
|
162
|
+
log.errors.size.should eql 1
|
148
163
|
end
|
149
164
|
end
|
150
165
|
|
@@ -216,7 +231,8 @@ describe HtmlPress do
|
|
216
231
|
end
|
217
232
|
end
|
218
233
|
|
219
|
-
#
|
234
|
+
# TODO
|
235
|
+
# it "should concatenate adjecent style tags" do
|
220
236
|
# all stylle tags can be collected, concatneated and placed in header
|
221
237
|
# end
|
222
238
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html_press
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
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: 2012-09-
|
12
|
+
date: 2012-09-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -110,6 +110,8 @@ files:
|
|
110
110
|
- lib/html_press/html_entities.rb
|
111
111
|
- lib/html_press/uglifier.rb
|
112
112
|
- lib/html_press/version.rb
|
113
|
+
- profile/index.html
|
114
|
+
- profile/profile.rb
|
113
115
|
- spec/html_press_spec.rb
|
114
116
|
homepage: https://github.com/stereobooster/html_press
|
115
117
|
licenses: []
|
@@ -125,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
127
|
version: '0'
|
126
128
|
segments:
|
127
129
|
- 0
|
128
|
-
hash:
|
130
|
+
hash: 769698289
|
129
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
132
|
none: false
|
131
133
|
requirements:
|
@@ -134,10 +136,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
136
|
version: '0'
|
135
137
|
segments:
|
136
138
|
- 0
|
137
|
-
hash:
|
139
|
+
hash: 769698289
|
138
140
|
requirements: []
|
139
141
|
rubyforge_project: html_press
|
140
|
-
rubygems_version: 1.8.
|
142
|
+
rubygems_version: 1.8.23
|
141
143
|
signing_key:
|
142
144
|
specification_version: 3
|
143
145
|
summary: Compress html
|