htmlbeautifier 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f0dba839e3aa0da9272b5789530d578eb210cb4
4
- data.tar.gz: 156a6912f4c8980d3ca06c5e43865c535af0238e
3
+ metadata.gz: 7aaf76d4d6d04d9e89603730cb13417bf03a0321
4
+ data.tar.gz: 56808b31dc24878165d2bd3c55cf43b93fd893de
5
5
  SHA512:
6
- metadata.gz: 2a322f76309db244d0eb0d5b4860b3a6681efd0f8c6219b039baeb1e756c78df756995d6975574a4db7b9a559ff92fa6f87c5dcc6fef59c1dfbdcc5cbc4a1321
7
- data.tar.gz: 8fe4f9811c1789f532a27a73862e0ad6b9495a96172e14ddc87cab6dcb47de7c722bd2a0252e49ae2ef540233e4c0281cf052340927831cd0c1480289af74be2
6
+ metadata.gz: 0168d0c22faff926c2af24939434dea45fb35b5b95451efd207819f7401aedc32dec9a00a9bbda8a7e423be2e49af6ce3d0296a844ee69bb34593c18cc777080
7
+ data.tar.gz: 90c25b3b9628e98a4edddfc7069ce610d31570cfafe97ce6d2586683dbfdc633c7f12afc3bc7290966fc1dcee86c8499d3277f2c6a88dc8b43f19b9872f42f9f
@@ -17,6 +17,7 @@ module HtmlBeautifier
17
17
  @new_line = false
18
18
  @tab = ' ' * tab_stops
19
19
  @output = output
20
+ @empty = true
20
21
  @ie_cc_levels = []
21
22
  end
22
23
 
@@ -30,11 +31,12 @@ module HtmlBeautifier
30
31
  end
31
32
 
32
33
  def emit(s)
33
- if @new_line && !@output.empty?
34
+ if @new_line && !@empty
34
35
  @output << ("\n" + @tab * @level)
35
36
  end
36
37
  @output << s
37
38
  @new_line = false
39
+ @empty = false
38
40
  end
39
41
 
40
42
  def new_line(*_args)
@@ -70,13 +72,16 @@ module HtmlBeautifier
70
72
  end
71
73
 
72
74
  def preformatted_block(opening, content, closing)
75
+ new_line
73
76
  emit opening
74
77
  emit content
75
78
  emit closing
79
+ new_line
76
80
  end
77
81
 
78
82
  def standalone_element(e)
79
83
  emit e
84
+ new_line if e =~ /^<br[^\w]/
80
85
  end
81
86
 
82
87
  def close_block_element(e)
@@ -8,10 +8,10 @@ module HtmlBeautifier
8
8
  link | meta | param | source | track | wbr
9
9
  )}mix
10
10
  HTML_BLOCK_ELEMENTS = %r{(?:
11
- address | blockquote | center | dd | dir | div | dl | dt | fieldset |
12
- form | h1 | h2 | h3 | h4 | h5 | h6 | hr | isindex | li | menu |
13
- noframes | noscript | ol | p | pre | table | tbody | td | tfoot | th |
14
- thead | tr | ul
11
+ address | article | aside | audio | blockquote | canvas | dd | dir | div |
12
+ dl | dt | fieldset | figcaption | figure | footer | form | h1 | h2 | h3 |
13
+ h4 | h5 | h6 | header | hr | li | menu | noframes | noscript | ol | p |
14
+ pre | section | table | tbody | td | tfoot | th | thead | tr | ul | video
15
15
  )}mix
16
16
 
17
17
  def initialize
@@ -32,9 +32,7 @@ module HtmlBeautifier
32
32
  :foreign_block
33
33
  p.map %r{(<pre#{ELEMENT_CONTENT}>)(.*?)(</pre>)}mi,
34
34
  :preformatted_block
35
- p.map %r{<#{ELEMENT_CONTENT}/>}m,
36
- :standalone_element
37
- p.map %r{<#{HTML_VOID_ELEMENTS}(?: #{ELEMENT_CONTENT})?>}m,
35
+ p.map %r{<#{HTML_VOID_ELEMENTS}(?: #{ELEMENT_CONTENT})?/?>}m,
38
36
  :standalone_element
39
37
  p.map %r{</#{HTML_BLOCK_ELEMENTS}>}m,
40
38
  :close_block_element
@@ -2,7 +2,7 @@ module HtmlBeautifier #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 11
5
+ TINY = 12
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,66 @@
1
+ require 'test_helper'
2
+ require 'shellwords'
3
+ require 'fileutils'
4
+
5
+ class TestExecutable < Test::Unit::TestCase
6
+ def path_to(*partial)
7
+ File.join(File.expand_path('../..', __FILE__), *partial)
8
+ end
9
+
10
+ def command
11
+ 'ruby -I%s %s' % [
12
+ escape(path_to('lib')),
13
+ escape(path_to('bin', 'htmlbeautifier'))
14
+ ]
15
+ end
16
+
17
+ def escape(s)
18
+ Shellwords.escape(s)
19
+ end
20
+
21
+ def test_should_beautify_a_file_in_place
22
+ FileUtils.mkdir_p path_to('tmp')
23
+ input = "<p>\nfoo\n</p>"
24
+ expected = "<p>\n foo\n</p>\n"
25
+ path = path_to('tmp', 'in-place.html')
26
+ File.open(path, 'w') do |f|
27
+ f.write input
28
+ end
29
+
30
+ system '%s %s' % [command, escape(path)]
31
+
32
+ output = File.read(path)
33
+ assert_equal expected, output
34
+ end
35
+
36
+ def test_should_beautify_a_file_from_stdin_to_stdout
37
+ FileUtils.mkdir_p path_to('tmp')
38
+ input = "<p>\nfoo\n</p>"
39
+ expected = "<p>\n foo\n</p>\n"
40
+ in_path = path_to('tmp', 'input.html')
41
+ out_path = path_to('tmp', 'output.html')
42
+ File.open(in_path, 'w') do |f|
43
+ f.write input
44
+ end
45
+
46
+ system '%s < %s > %s' % [command, escape(in_path), escape(out_path)]
47
+
48
+ output = File.read(out_path)
49
+ assert_equal expected, output
50
+ end
51
+
52
+ def test_should_allow_configurable_number_of_tab_stops
53
+ FileUtils.mkdir_p path_to('tmp')
54
+ input = "<p>\nfoo\n</p>"
55
+ expected = "<p>\n foo\n</p>\n"
56
+ path = path_to('tmp', 'in-place.html')
57
+ File.open(path, 'w') do |f|
58
+ f.write input
59
+ end
60
+
61
+ system '%s --tab-stops=3 %s' % [command, escape(path)]
62
+
63
+ output = File.read(path)
64
+ assert_equal expected, output
65
+ end
66
+ end
@@ -321,4 +321,25 @@ class HtmlBeautifierRegressionTest < Test::Unit::TestCase
321
321
  ))
322
322
  assert_beautifies expected, source
323
323
  end
324
+
325
+ def test_should_add_newlines_around_pre_element
326
+ source = %(<section><pre>puts "Allons-y!"</pre></section>)
327
+ expected = code(%(
328
+ <section>
329
+ <pre>puts "Allons-y!"</pre>
330
+ </section>
331
+ ))
332
+ assert_beautifies expected, source
333
+ end
334
+
335
+ def test_should_add_newline_after_br_element
336
+ source = %(<p>Lorem ipsum<br>dolor sit<br />amet,<br/>consectetur.</p>)
337
+ expected = code(%(
338
+ <p>Lorem ipsum<br>
339
+ dolor sit<br />
340
+ amet,<br/>
341
+ consectetur.</p>
342
+ ))
343
+ assert_beautifies expected, source
344
+ end
324
345
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: htmlbeautifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Battley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-29 00:00:00.000000000 Z
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -40,6 +40,7 @@ files:
40
40
  - lib/htmlbeautifier/html_parser.rb
41
41
  - lib/htmlbeautifier/parser.rb
42
42
  - lib/htmlbeautifier/version.rb
43
+ - test/test_executable.rb
43
44
  - test/test_helper.rb
44
45
  - test/test_html_beautifier_integration.rb
45
46
  - test/test_html_beautifier_regression.rb