snatch 1.0.7 → 1.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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.7
1
+ 1.0.8
@@ -22,5 +22,13 @@ class Snatch
22
22
 
23
23
  File.open(@file_name, 'w') { |f| f.write @doc.to_xhtml }
24
24
  end
25
+
26
+ private
27
+
28
+ # Sadly we can't use this as our XSLT won't output valid XHTML
29
+ # def clean_xhtml
30
+ # xsl_io = File.open(File.expand_path('../../../xsl/pretty_print.xsl', __FILE__))
31
+ # Nokogiri::XSLT(xsl_io).apply_to(@doc)
32
+ # end
25
33
  end
26
34
  end
@@ -63,17 +63,17 @@ class Snatch
63
63
  end
64
64
 
65
65
  def update
66
- @doc.css('base, meta[generator]').each { |node| node.remove }
66
+ @doc.css('base, meta[name=generator]').each { |node| node.remove }
67
67
 
68
68
  @doc.search('//comment()').remove
69
69
 
70
+ klass = Class.new { include HrefFixMethods }.new
70
71
  HrefFixMethods.instance_methods.each do |m|
71
- klass = Class.new { include HrefFixMethods }.new
72
72
  @doc.css('a[href]').each { |a| klass.send m, a }
73
73
  end
74
74
 
75
+ klass = Class.new { include SrcFixMethods }.new
75
76
  SrcFixMethods.instance_methods.each do |m|
76
- klass = Class.new { include SrcFixMethods }.new
77
77
  @doc.css('[src]').each { |a| klass.send m, a }
78
78
  end
79
79
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{snatch}
8
- s.version = "1.0.7"
8
+ s.version = "1.0.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["James Conroy-Finn"]
@@ -36,7 +36,8 @@ Gem::Specification.new do |s|
36
36
  "spec/snatch_spec.rb",
37
37
  "spec/spec.opts",
38
38
  "spec/spec_helper.rb",
39
- "spec/support/matchers/nokogiri.rb"
39
+ "spec/support/matchers/nokogiri.rb",
40
+ "xsl/pretty_print.xsl"
40
41
  ]
41
42
  s.homepage = %q{http://github.com/jcf/snatch}
42
43
  s.rdoc_options = ["--charset=UTF-8"]
@@ -14,7 +14,7 @@ describe Snatch::Clean::HTML do
14
14
 
15
15
  it 'should remove any base tags' do
16
16
  mock_nodes = [(mock_node = mock('nokogiri_node'))]
17
- @html.doc.should_receive(:css).with('base, meta[generator]').and_return(mock_nodes)
17
+ @html.doc.should_receive(:css).with('base, meta[name=generator]').and_return(mock_nodes)
18
18
  @html.doc.should_receive(:search).and_return(mock_node)
19
19
  mock_node.should_receive(:remove).twice.and_return([])
20
20
  mock_nodes.should_receive(:each).and_yield(mock_node)
@@ -23,7 +23,7 @@ describe Snatch::Clean::HTML do
23
23
 
24
24
  it 'should remove comments and the generator meta tag' do
25
25
  mock_nodes = [(mock_node = mock('nokogiri_node'))]
26
- @html.doc.should_receive(:css).with('base, meta[generator]').and_return([])
26
+ @html.doc.should_receive(:css).with('base, meta[name=generator]').and_return([])
27
27
  @html.doc.should_receive(:search).with('//comment()').and_return(mock_nodes)
28
28
  mock_nodes.should_receive(:remove).and_return([mock_node])
29
29
  @html.send(:update)
@@ -0,0 +1,47 @@
1
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
+ <xsl:output method="xml" encoding="ISO-8859-1"/>
3
+ <xsl:param name="indent-increment" select="' '"/>
4
+
5
+ <xsl:template name="newline">
6
+ <xsl:text disable-output-escaping="yes">
7
+ </xsl:text>
8
+ </xsl:template>
9
+
10
+ <xsl:template match="comment() | processing-instruction()">
11
+ <xsl:param name="indent" select="''"/>
12
+ <xsl:call-template name="newline"/>
13
+ <xsl:value-of select="$indent"/>
14
+ <xsl:copy />
15
+ </xsl:template>
16
+
17
+ <xsl:template match="text()">
18
+ <xsl:param name="indent" select="''"/>
19
+ <xsl:call-template name="newline"/>
20
+ <xsl:value-of select="$indent"/>
21
+ <xsl:value-of select="normalize-space(.)"/>
22
+ </xsl:template>
23
+
24
+ <xsl:template match="text()[normalize-space(.)='']"/>
25
+
26
+ <xsl:template match="*">
27
+ <xsl:param name="indent" select="''"/>
28
+ <xsl:call-template name="newline"/>
29
+ <xsl:value-of select="$indent"/>
30
+ <xsl:choose>
31
+ <xsl:when test="count(child::*) > 0">
32
+ <xsl:copy>
33
+ <xsl:copy-of select="@*"/>
34
+ <xsl:apply-templates select="*|text()">
35
+ <xsl:with-param name="indent" select="concat ($indent, $indent-increment)"/>
36
+ </xsl:apply-templates>
37
+ <xsl:call-template name="newline"/>
38
+ <xsl:value-of select="$indent"/>
39
+ </xsl:copy>
40
+ </xsl:when>
41
+ <xsl:otherwise>
42
+ <xsl:copy-of select="."/>
43
+ </xsl:otherwise>
44
+ </xsl:choose>
45
+ </xsl:template>
46
+ </xsl:stylesheet>
47
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Conroy-Finn
@@ -62,6 +62,7 @@ files:
62
62
  - spec/spec.opts
63
63
  - spec/spec_helper.rb
64
64
  - spec/support/matchers/nokogiri.rb
65
+ - xsl/pretty_print.xsl
65
66
  has_rdoc: true
66
67
  homepage: http://github.com/jcf/snatch
67
68
  licenses: []