html5small 0.2.0 → 0.3.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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MGY2YjdiMTIzYjBjY2ExZmIwNzQxYjc5MDFkNTE2ZjU5MmNhOTk0MQ==
5
+ data.tar.gz: !binary |-
6
+ MTdjN2NmMTY2NWNjNTVjYmRiMTFiMDgyYTI3M2UxZTdhZTg3YTQxZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ODVlYTI4NjhkNDc1OTcyM2UxYzlmN2YwZGY4YzQ1OTRmMjU4NGJhZjlhOWEw
10
+ YWM1MzhmMDVkYWM4MWYyMDg3NmVmN2M1YWI1ZmJhMWZmMTFmZTdkZDE2ZDM2
11
+ MWM0YmUwOTJjMDExN2Y1MDllOTE0ZTVmYWFlMjUwYWQ4NmEzNTA=
12
+ data.tar.gz: !binary |-
13
+ MmI5YWMxZWM2NTk0ZTk2ZWY4ODI1Njg2NzQwMTMxZjFjYzkyM2JhYTY5ZDZl
14
+ ZGJkM2E3NDhjMmMwN2YzYjE1Y2Y3Y2QyZjZjZGUxZmY1MTAxMjJmMWQ4ZGUy
15
+ MjcwNDIzYzc1ZmYzNWYyZGEzNzgzMTQ4MGJlNGRkNjFlM2UzNzA=
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -1 +1 @@
1
- <!doctype html><meta charset=utf-8><title>Untitled</title><body><ul><li><i>one</i><li><i>two</i></ul>
1
+ <!doctype html><meta charset=utf-8><title>Untitled</title><body><ul><li><i>one</i><li><i> two </i></ul>
@@ -1 +1 @@
1
- <!doctype html><meta charset=utf-8><title>Untitled</title><section><p>A <code>b</code> <i>c</i> d <dfn>e <code>f</code> .</dfn></section>
1
+ <!doctype html><meta charset=utf-8><title>Untitled</title><section><p>A <code>b</code> <i>c</i> d <dfn>e <code> f </code> . </dfn></section>
@@ -2,3 +2,4 @@
2
2
  <meta charset=utf-8>
3
3
  <title>Untitled</title>
4
4
  <p>This is a<code>string </code>.
5
+ Here is a space<span> </span>.
@@ -1 +1 @@
1
- <!doctype html><meta charset=utf-8><title>Untitled</title><body><p>This is a<code>string</code>.
1
+ <!doctype html><meta charset=utf-8><title>Untitled</title><body><p>This is a<code>string </code>. Here is a space<span> </span>.
data/html5small.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "html5small"
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Run Paint Run Run", "Ruben Verborgh"]
12
- s.date = "2012-12-02"
12
+ s.date = "2013-08-14"
13
13
  s.description = "Minifier for HTML5 documents"
14
14
  s.email = "ruben.verborgh@gmail.com"
15
15
  s.executables = ["html5small", "html5small"]
@@ -77,11 +77,11 @@ Gem::Specification.new do |s|
77
77
  ]
78
78
  s.homepage = "http://github.com/RubenVerborgh/HTML5small"
79
79
  s.require_paths = ["lib"]
80
- s.rubygems_version = "1.8.23"
80
+ s.rubygems_version = "2.0.6"
81
81
  s.summary = "HTML5small"
82
82
 
83
83
  if s.respond_to? :specification_version then
84
- s.specification_version = 3
84
+ s.specification_version = 4
85
85
 
86
86
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
87
87
  s.add_runtime_dependency(%q<htmlentities>, [">= 4.1.0"])
@@ -16,11 +16,17 @@ module HTML5small
16
16
  strong style sub sup svg table textarea time ul var video wbr
17
17
  }.map(&:to_sym)
18
18
 
19
+ # BLock-level elements
20
+ BLOCK_ELEMENTS = %w{address article aside audio blockquote canvas dd div dl fieldset
21
+ figcaption figure footer form h1 h2 h3 h4 h5 h6 header hgroup hr
22
+ li noscript ol output p pre section table thead tfoot tr ul video
23
+ }.map(&:to_sym)
24
+
19
25
  attr_accessor :buf, :text_node, :entities
20
26
 
21
27
  def initialize
22
28
  @buf, @text_node = '', ''
23
- @stack = []
29
+ @stack = [], @prev_tag
24
30
  @entities = HTMLEntities.new :expanded
25
31
  end
26
32
 
@@ -33,14 +39,17 @@ module HTML5small
33
39
  name = normalise_name name
34
40
  dump_text_node
35
41
  @stack.push name
42
+ @prev_tag = name
43
+ buf.rstrip! if is_block_element?(name) and not in_pre_element?
36
44
  buf << "<#{name}" + format_attributes(attrs, name) + ">"
37
45
  end
38
46
 
39
47
  def end_element name
40
48
  name = normalise_name name
41
49
  dump_text_node
42
- buf.rstrip! unless in_pre_element?
50
+ buf.rstrip! if is_block_element?(name) and not in_pre_element?
43
51
  @stack.pop
52
+ @prev_tag = name
44
53
  buf << "</#{name}>"
45
54
  end
46
55
 
@@ -104,10 +113,8 @@ module HTML5small
104
113
  return text if in_pre_element?
105
114
  # Treat all whitespace as spaces
106
115
  text.gsub!(/[\n\t]/, ' ')
107
- # Don't strip inter-element white space for flow elements
108
- unless buf =~ %r{</\w+>\s*\Z} and in_flow_element?
109
- text.lstrip!
110
- end
116
+ # Strip leading whitespace at the beginning of block elements
117
+ text.lstrip! if @prev_tag == @stack.last and is_block_element?(@prev_tag)
111
118
  # Normalize spaces
112
119
  text.squeeze(' ')
113
120
  end
@@ -124,6 +131,10 @@ module HTML5small
124
131
  @stack.include? :script
125
132
  end
126
133
 
134
+ def is_block_element? name
135
+ BLOCK_ELEMENTS.include? name
136
+ end
137
+
127
138
  def dump_text_node
128
139
  buf << format_text_node
129
140
  text_node.clear
data/lib/html5small.rb CHANGED
@@ -5,6 +5,6 @@ module HTML5small
5
5
  def self.minify html
6
6
  minifier = Minifier.new
7
7
  Nokogiri::HTML::SAX::Parser.new(minifier).parse(html)
8
- OptionalTags.remove minifier.buf.strip
8
+ (OptionalTags.remove minifier.buf).strip
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html5small
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Run Paint Run Run
@@ -10,12 +9,11 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-12-02 00:00:00.000000000 Z
12
+ date: 2013-08-14 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: htmlentities
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ! '>='
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ! '>='
29
26
  - !ruby/object:Gem::Version
@@ -31,7 +28,6 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: nokogiri
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
32
  - - ! '>='
37
33
  - !ruby/object:Gem::Version
@@ -39,7 +35,6 @@ dependencies:
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
39
  - - ! '>='
45
40
  - !ruby/object:Gem::Version
@@ -47,7 +42,6 @@ dependencies:
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: rspec
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ! '>='
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ! '>='
61
54
  - !ruby/object:Gem::Version
@@ -63,7 +56,6 @@ dependencies:
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: yard
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - ! '>='
69
61
  - !ruby/object:Gem::Version
@@ -71,7 +63,6 @@ dependencies:
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - ! '>='
77
68
  - !ruby/object:Gem::Version
@@ -143,26 +134,25 @@ files:
143
134
  - spec/spec_helper.rb
144
135
  homepage: http://github.com/RubenVerborgh/HTML5small
145
136
  licenses: []
137
+ metadata: {}
146
138
  post_install_message:
147
139
  rdoc_options: []
148
140
  require_paths:
149
141
  - lib
150
142
  required_ruby_version: !ruby/object:Gem::Requirement
151
- none: false
152
143
  requirements:
153
144
  - - ! '>='
154
145
  - !ruby/object:Gem::Version
155
146
  version: '0'
156
147
  required_rubygems_version: !ruby/object:Gem::Requirement
157
- none: false
158
148
  requirements:
159
149
  - - ! '>='
160
150
  - !ruby/object:Gem::Version
161
151
  version: '0'
162
152
  requirements: []
163
153
  rubyforge_project:
164
- rubygems_version: 1.8.23
154
+ rubygems_version: 2.0.6
165
155
  signing_key:
166
- specification_version: 3
156
+ specification_version: 4
167
157
  summary: HTML5small
168
158
  test_files: []