htmlbeautifier 0.0.7 → 0.0.8

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/bin/htmlbeautifier CHANGED
@@ -1,18 +1,23 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'htmlbeautifier'
3
+ require 'fileutils'
3
4
 
4
- def beautify(input, output)
5
+ def beautify(name, input, output)
5
6
  HtmlBeautifier::Beautifier.new(output).scan(input)
6
7
  output << "\n"
8
+ rescue => e
9
+ raise "Error parsing #{name}: #{e}"
7
10
  end
8
11
 
9
12
  if ARGV.any?
10
- ARGV.each do |f|
11
- input = File.read(f)
12
- File.open(f, "w") do |output|
13
- beautify input, output
13
+ ARGV.each do |path|
14
+ input = File.read(path)
15
+ temppath = path + ".tmp"
16
+ File.open(temppath, "w") do |output|
17
+ beautify path, input, output
14
18
  end
19
+ FileUtils.mv temppath, path
15
20
  end
16
21
  else
17
- beautify $stdin.read, $stdout
22
+ beautify "standard input", $stdin.read, $stdout
18
23
  end
@@ -17,6 +17,7 @@ module HtmlBeautifier
17
17
  @new_line = true
18
18
  @tab = ' ' * tab_stops
19
19
  @output = output
20
+ @ie_cc_levels = []
20
21
  end
21
22
 
22
23
  def indent
@@ -83,6 +84,18 @@ module HtmlBeautifier
83
84
  indent
84
85
  end
85
86
 
87
+ def close_ie_cc(e)
88
+ raise "Unclosed conditional comment" if @ie_cc_levels.empty?
89
+ @level = @ie_cc_levels.pop
90
+ emit e
91
+ end
92
+
93
+ def open_ie_cc(e)
94
+ emit e
95
+ @ie_cc_levels.push @level
96
+ indent
97
+ end
98
+
86
99
  def text(t)
87
100
  emit(t.strip)
88
101
  whitespace if t =~ /\s$/
@@ -7,8 +7,8 @@ module HtmlBeautifier
7
7
  def initialize
8
8
  super do |p|
9
9
  p.map %r{(<%-?=?)(.*?)(-?%>)}m, :embed
10
- p.map %r{<!--\[.*?\]>}m, :open_element
11
- p.map %r{<!\[.*?\]-->}m, :close_element
10
+ p.map %r{<!--\[.*?\]>}m, :open_ie_cc
11
+ p.map %r{<!\[.*?\]-->}m, :close_ie_cc
12
12
  p.map %r{<!--.*?-->}m, :standalone_element
13
13
  p.map %r{<!.*?>}m, :standalone_element
14
14
  p.map %r{(<script#{ELEMENT_CONTENT}>)(.*?)(</script>)}m, :foreign_block
@@ -2,7 +2,7 @@ module HtmlBeautifier #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 7
5
+ TINY = 8
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -218,4 +218,34 @@ class HtmlBeautifierRegressionTest < Test::Unit::TestCase
218
218
  assert_beautifies expected, source
219
219
  end
220
220
 
221
+ def test_should_not_indent_comments
222
+ source = code(%q(
223
+ <!-- This is a comment -->
224
+ <!-- So is this -->
225
+ ))
226
+ assert_beautifies source, source
227
+ end
228
+
229
+ def test_should_not_indent_conditional_comments
230
+ source = code(%q(
231
+ <!--[if lt IE 7]><html lang="en-us" class="ie6"><![endif]-->
232
+ <!--[if IE 7]><html lang="en-us" class="ie7"><![endif]-->
233
+ <!--[if IE 8]><html lang="en-us" class="ie8"><![endif]-->
234
+ <!--[if gt IE 8]><!--><html lang="en-us"><!--<![endif]-->
235
+ <body>
236
+ </body>
237
+ </html>
238
+ ))
239
+ assert_beautifies source, source
240
+ end
241
+
242
+ def test_should_not_indent_doctype
243
+ source = code(%q(
244
+ <!DOCTYPE html>
245
+ <html>
246
+ </html>
247
+ ))
248
+ assert_beautifies source, source
249
+ end
250
+
221
251
  end
metadata CHANGED
@@ -1,16 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: htmlbeautifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
4
  prerelease:
5
+ version: 0.0.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Paul Battley
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-10 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2013-08-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ type: :development
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ none: false
22
+ prerelease: false
23
+ name: rake
24
+ requirement: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ none: false
14
30
  description:
15
31
  email: pbattley@gmail.com
16
32
  executables:
@@ -21,37 +37,38 @@ files:
21
37
  - Rakefile
22
38
  - README.md
23
39
  - bin/htmlbeautifier
40
+ - test/test_html_beautifier_regression.rb
41
+ - test/test_parser.rb
24
42
  - test/test_html_beautifier_integration.rb
25
43
  - test/test_helper.rb
26
- - test/test_parser.rb
27
- - test/test_html_beautifier_regression.rb
28
44
  - lib/htmlbeautifier/html_parser.rb
29
- - lib/htmlbeautifier/builder.rb
45
+ - lib/htmlbeautifier/parser.rb
30
46
  - lib/htmlbeautifier/beautifier.rb
31
47
  - lib/htmlbeautifier/version.rb
32
- - lib/htmlbeautifier/parser.rb
48
+ - lib/htmlbeautifier/builder.rb
33
49
  - lib/htmlbeautifier.rb
34
50
  homepage: http://github.com/threedaymonk/htmlbeautifier
35
- licenses: []
51
+ licenses:
52
+ - MIT
36
53
  post_install_message:
37
54
  rdoc_options: []
38
55
  require_paths:
39
56
  - lib
40
57
  required_ruby_version: !ruby/object:Gem::Requirement
41
- none: false
42
58
  requirements:
43
59
  - - ! '>='
44
60
  - !ruby/object:Gem::Version
45
61
  version: '0'
46
- required_rubygems_version: !ruby/object:Gem::Requirement
47
62
  none: false
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
64
  requirements:
49
65
  - - ! '>='
50
66
  - !ruby/object:Gem::Version
51
67
  version: '0'
68
+ none: false
52
69
  requirements: []
53
70
  rubyforge_project:
54
- rubygems_version: 1.8.23
71
+ rubygems_version: 1.8.25
55
72
  signing_key:
56
73
  specification_version: 3
57
74
  summary: A normaliser/beautifier for HTML that also understands embedded Ruby.