sixarm_ruby_xml_strip 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gemtest ADDED
File without changes
data/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # SixArm.com » Ruby » <br> XML#strip methods to clean XML & HTML
2
+
3
+ * Docs: <http://sixarm.com/sixarm_ruby_xml_strip/doc>
4
+ * Repo: <http://github.com/sixarm/sixarm_ruby_xml_strip>
5
+ * Email: Joel Parker Henderson, <joel@sixarm.com>
6
+
7
+
8
+ ## Introduction
9
+
10
+ Methods that work on an XML/HTML text string:
11
+
12
+ * XML.strip_all: delete all extraneous junk
13
+ * XML.strip_attributes: delete all attributes
14
+ * XML.strip_comments: delete all comments
15
+ * XML.strip_microsoft: delete all proprietary Microsoft code
16
+ * XML.strip_unprintables: delete all unprintable characters
17
+
18
+ For docs go to <http://sixarm.com/sixarm_ruby_xml_strip/doc>
19
+
20
+ Want to help? We're happy to get pull requests.
21
+
22
+
23
+ ## Quickstart
24
+
25
+ Install:
26
+
27
+ gem install sixarm_ruby_xml_strip
28
+
29
+ Bundler:
30
+
31
+ gem "sixarm_ruby_xml_strip", "=2.0.4"
32
+
33
+ Require:
34
+
35
+ require "sixarm_ruby_xml_strip"
36
+
37
+
38
+ ## Changes
39
+
40
+ * 2012-03-14 2.0.4 Tune up tests to use pathname for sample files
41
+ * 2012-03-13 2.0.0 Lift the XML#load methods from the sixarm_ruby_ramp gem
42
+ ## License
43
+
44
+ You may choose any of these open source licenses:
45
+
46
+ * Apache License
47
+ * BSD License
48
+ * CreativeCommons License, Non-commercial Share Alike
49
+ * GNU General Public License Version 2 (GPL 2)
50
+ * GNU Lesser General Public License (LGPL)
51
+ * MIT License
52
+ * Perl Artistic License
53
+ * Ruby License
54
+
55
+ The software is provided "as is", without warranty of any kind,
56
+ express or implied, including but not limited to the warranties of
57
+ merchantability, fitness for a particular purpose and noninfringement.
58
+
59
+ In no event shall the authors or copyright holders be liable for any
60
+ claim, damages or other liability, whether in an action of contract,
61
+ tort or otherwise, arising from, out of or in connection with the
62
+ software or the use or other dealings in the software.
63
+
64
+ This license is for the included software that is created by SixArm;
65
+ some of the included software may have its own licenses, copyrights,
66
+ authors, etc. and these do take precedence over the SixArm license.
67
+
68
+ Copyright (c) 2005-2013 Joel Parker Henderson
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new(:test) do |t|
6
+ t.libs << 'lib' << 'test'
7
+ t.pattern = 'test/*.rb'
8
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 2.0.4
@@ -0,0 +1,84 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin rdoc
3
+ Please see README
4
+ =end
5
+
6
+ require 'sixarm_ruby_rexml'
7
+
8
+ module XML
9
+
10
+ # Santize dirty xml by removing unprintables, bad tags,
11
+ # comments, and generally anything else we might need
12
+ # to enable the XML parser to handle a dirty document.
13
+ #
14
+ # This method calls these in order:
15
+ # - XML.strip_unprintables
16
+ # - XML.strip_microsoft
17
+ # - XML.strip_comments
18
+ # - XML.strip_attributes
19
+ #
20
+ # @example
21
+ # # This example shows curly braces instead of angle braces because of HTML formatting
22
+ # s="{foo a=b c=d}{!--comment--}Hello{!-[if bar]}Microsoft{![endif]}World{/foo}"
23
+ # XML.strip_all(s) => "{foo}HelloWorld{/foo}"
24
+ #
25
+ # @return [String] the text, stripped of unprintables, Microsoft markup, comments, and attributes
26
+
27
+ def XML.strip_all(xml_text)
28
+ return XML.strip_attributes(XML.strip_comments(XML.strip_microsoft(XML.strip_unprintables(xml_text))))
29
+ end
30
+
31
+
32
+ # Strip out all attributes from the XML/HTML input string.
33
+ #
34
+ # @example
35
+ # s="<foo a=b c=d e=f>Hello</foo>"
36
+ # XML.strip_attributes(s) => "<foo>Hello</foo>"
37
+ #
38
+ # @return [String] the text, stripped of attributes
39
+
40
+ def XML.strip_attributes(xml_text)
41
+ return xml_text.gsub(/<(\/?\w+).*?>/im){"<#{$1}>"} # delete attributes
42
+ end
43
+
44
+
45
+ # Strip out all XML/HTML comments from the XML/HTML input string.
46
+ #
47
+ # @example
48
+ # # This example shows curly braces instead of angle braces because of HTML formatting
49
+ # s="Hello{!--comment--}World"
50
+ # XML.strip_comments(s) => "HelloWorld"
51
+ #
52
+ # @return [String] the text, stripped of comments
53
+
54
+ def XML.strip_comments(xml_text)
55
+ return xml_text.gsub(/<!.*?>/im,'')
56
+ end
57
+
58
+
59
+ # Strip out all microsoft proprietary codes from the XML/HTLM input string.
60
+ #
61
+ # @example
62
+ # s="Hello<!-[if foo]>Microsoft<![endif]->World"
63
+ # XML.strip_microsoft(s) => "HelloWorld"
64
+ #
65
+ # @return [String] the text, stripped of Microsoft markup
66
+
67
+ def XML.strip_microsoft(xml_text)
68
+ return xml_text.gsub(/<!-*\[if\b.*?<!\[endif\]-*>/im,'')
69
+ end
70
+
71
+
72
+ # Strip out all unprintable characters from the XML/HTML input string.
73
+ #
74
+ # @example
75
+ # s="Hello\XXXWorld" # where XXX is unprintable
76
+ # XML.strip_unprintables(s) => "HelloWorld"
77
+ #
78
+ # @return [String] the text, stripped of unprintables
79
+
80
+ def XML.strip_unprintables(xml_text)
81
+ return xml_text.gsub(/[^[:print:]]/, "")
82
+ end
83
+
84
+ end
@@ -0,0 +1 @@
1
+ <html><head><meta><meta><meta><meta><meta><meta><link><title>Foo</title><style></style></head><body><div><table> <tr> <td> <p>Foo</p> </td> <td> <p>HTML</p> </td> <td> <p>af<b>s</b></p> </td> </tr> <tr> <td> <p><o></o></p> </td> <td> <h1>Bold</h1> </td> <td> <p><o></o></p> </td> </tr> <tr> <td> <p><o></o></p> </td> <td> <p>Fas785932517</p> </td> <td> <p>asf</p> </td> </tr> <tr> <td> <p><o></o></p> </td> <td> <p><o></o></p> </td> <td> <p><o></o></p> </td> </tr></table><p><o></o></p></div></body></html>
@@ -0,0 +1,148 @@
1
+ <html xmlns:o="urn:schemas-microsoft-com:office:office"
2
+ xmlns:w="urn:schemas-microsoft-com:office:word"
3
+ xmlns="http://www.w3.org/TR/REC-html40">
4
+
5
+ <head>
6
+ <meta name=Title content=Foo>
7
+ <meta name=Keywords content="">
8
+ <meta http-equiv=Content-Type content="text/html; charset=macintosh">
9
+ <meta name=ProgId content=Word.Document>
10
+ <meta name=Generator content="Microsoft Word 10">
11
+ <meta name=Originator content="Microsoft Word 10">
12
+ <link rel=File-List href="Foo_files/filelist.xml">
13
+ <title>Foo</title>
14
+ <!--[if gte mso 9]><xml>
15
+ <o:DocumentProperties>
16
+ <o:Template>Normal</o:Template>
17
+ <o:LastAuthor>Staff</o:LastAuthor>
18
+ <o:Revision>1</o:Revision>
19
+ <o:Created>2009-10-22T23:51:00Z</o:Created>
20
+ <o:LastSaved>2009-10-22T23:53:00Z</o:LastSaved>
21
+ <o:Pages>1</o:Pages>
22
+ <o:Company>WestEd</o:Company>
23
+ <o:Lines>1</o:Lines>
24
+ <o:Paragraphs>1</o:Paragraphs>
25
+ <o:Version>10.262</o:Version>
26
+ </o:DocumentProperties>
27
+ </xml><![endif]--><!--[if gte mso 9]><xml>
28
+ <w:WordDocument>
29
+ <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
30
+ <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
31
+ <w:UseMarginsForDrawingGridOrigin/>
32
+ </w:WordDocument>
33
+ </xml><![endif]-->
34
+ <style>
35
+ <!--
36
+ /* Style Definitions */
37
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
38
+ {mso-style-parent:"";
39
+ margin:0in;
40
+ margin-bottom:.0001pt;
41
+ mso-pagination:widow-orphan;
42
+ font-size:12.0pt;
43
+ font-family:Times;}
44
+ h1
45
+ {mso-style-next:Normal;
46
+ margin:0in;
47
+ margin-bottom:.0001pt;
48
+ mso-pagination:widow-orphan;
49
+ page-break-after:avoid;
50
+ mso-outline-level:1;
51
+ font-size:12.0pt;
52
+ font-family:Times;
53
+ mso-font-kerning:0pt;}
54
+ @page Section1
55
+ {size:8.5in 11.0in;
56
+ margin:1.0in 1.25in 1.0in 1.25in;
57
+ mso-header-margin:.5in;
58
+ mso-footer-margin:.5in;
59
+ mso-paper-source:0;}
60
+ div.Section1
61
+ {page:Section1;}
62
+ -->
63
+ </style>
64
+ </head>
65
+
66
+ <body bgcolor=white lang=EN-US style='tab-interval:.5in'>
67
+
68
+ <div class=Section1>
69
+
70
+ <table border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse;
71
+ border:none;mso-border-alt:solid windowtext .5pt;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
72
+ <tr>
73
+ <td width=148 valign=top style='width:2.05in;border:solid windowtext .5pt;
74
+ padding:0in 5.4pt 0in 5.4pt'>
75
+ <p class=MsoNormal>Foo</p>
76
+ </td>
77
+ <td width=148 valign=top style='width:2.05in;border:solid windowtext .5pt;
78
+ border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
79
+ <p class=MsoNormal>HTML</p>
80
+ </td>
81
+ <td width=148 valign=top style='width:2.05in;border:solid windowtext .5pt;
82
+ border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
83
+ <p class=MsoNormal>af<b>s</b></p>
84
+ </td>
85
+ </tr>
86
+ <tr>
87
+ <td width=148 valign=top style='width:2.05in;border:solid windowtext .5pt;
88
+ border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
89
+ <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
90
+ </td>
91
+ <td width=148 valign=top style='width:2.05in;border-top:none;border-left:
92
+ none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
93
+ mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
94
+ padding:0in 5.4pt 0in 5.4pt'>
95
+ <h1>Bold</h1>
96
+ </td>
97
+ <td width=148 valign=top style='width:2.05in;border-top:none;border-left:
98
+ none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
99
+ mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
100
+ padding:0in 5.4pt 0in 5.4pt'>
101
+ <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
102
+ </td>
103
+ </tr>
104
+ <tr>
105
+ <td width=148 valign=top style='width:2.05in;border:solid windowtext .5pt;
106
+ border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
107
+ <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
108
+ </td>
109
+ <td width=148 valign=top style='width:2.05in;border-top:none;border-left:
110
+ none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
111
+ mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
112
+ padding:0in 5.4pt 0in 5.4pt'>
113
+ <p class=MsoNormal>Fas785932517</p>
114
+ </td>
115
+ <td width=148 valign=top style='width:2.05in;border-top:none;border-left:
116
+ none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
117
+ mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
118
+ padding:0in 5.4pt 0in 5.4pt'>
119
+ <p class=MsoNormal>�asf�</p>
120
+ </td>
121
+ </tr>
122
+ <tr>
123
+ <td width=148 valign=top style='width:2.05in;border:solid windowtext .5pt;
124
+ border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
125
+ <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
126
+ </td>
127
+ <td width=148 valign=top style='width:2.05in;border-top:none;border-left:
128
+ none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
129
+ mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
130
+ padding:0in 5.4pt 0in 5.4pt'>
131
+ <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
132
+ </td>
133
+ <td width=148 valign=top style='width:2.05in;border-top:none;border-left:
134
+ none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
135
+ mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
136
+ padding:0in 5.4pt 0in 5.4pt'>
137
+ <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
138
+ </td>
139
+ </tr>
140
+ </table>
141
+
142
+ <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
143
+
144
+ </div>
145
+
146
+ </body>
147
+
148
+ </html>
@@ -0,0 +1,96 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+ require 'sixarm_ruby_xml_strip'
6
+ require 'pathname'
7
+
8
+ describe XML do
9
+
10
+ before do
11
+ TESTPATH ||= Pathname.new("test/sixarm_ruby_xml_strip_test")
12
+ end
13
+
14
+ describe ".strip_all" do
15
+
16
+ it "=> String" do
17
+ assert_kind_of(String, XML.strip_all(""))
18
+ end
19
+
20
+ it "strips everything from a sample string" do
21
+ s="<foo a=b c=d><!--comment-->Hello<!-[if bar]>Microsoft<![endif]>World</foo>"
22
+ expect="<foo>HelloWorld</foo>"
23
+ actual=XML.strip_all(s)
24
+ assert_equal(expect,actual)
25
+ end
26
+
27
+ it "strip everything from a real document with Microsoft Word HTML" do
28
+ dirty=File.open(TESTPATH + "microsoft_word_dirty.html", "rb")
29
+ clean=File.open(TESTPATH + "microsoft_word_clean.html", "rb")
30
+ expect=clean.read
31
+ actual=XML.strip_all(dirty.read)
32
+ assert_equal(expect,actual)
33
+ end
34
+
35
+ end
36
+
37
+ describe ".strip_attributes" do
38
+
39
+ it "=> String" do
40
+ assert_kind_of(String, XML.strip_attributes(""))
41
+ end
42
+
43
+ it "strips all attributes" do
44
+ s="<foo a=b c=d e=f>Hello</foo>"
45
+ expect="<foo>Hello</foo>"
46
+ actual=XML.strip_attributes(s)
47
+ assert_equal(expect,actual)
48
+ end
49
+
50
+ end
51
+
52
+ describe ".strip_comments" do
53
+
54
+ it "=> String" do
55
+ assert_kind_of(String, XML.strip_comments(""))
56
+ end
57
+
58
+ it "strips all comments" do
59
+ s="Hello<!--comment-->World"
60
+ expect="HelloWorld"
61
+ actual=XML.strip_comments(s)
62
+ assert_equal(expect,actual)
63
+ end
64
+ end
65
+
66
+ describe ".strip_micrsoft" do
67
+
68
+ it "=> String" do
69
+ assert_kind_of(String, XML.strip_microsoft(""))
70
+ end
71
+
72
+ it "strips Microsoft-specific markup" do
73
+ s="Hello<!-[if foo]>Microsoft<![endif]->World"
74
+ expect="HelloWorld"
75
+ actual=XML.strip_microsoft(s)
76
+ assert_equal(expect,actual)
77
+ end
78
+
79
+ end
80
+
81
+ describe ".strip_unprintables" do
82
+
83
+ it "=> String" do
84
+ assert_kind_of(String, XML.strip_unprintables(""))
85
+ end
86
+
87
+ it "strips unprintable characters" do
88
+ s="HelloWorld" #TODO create test that has unprintables
89
+ expect="HelloWorld"
90
+ actual=XML.strip_unprintables(s)
91
+ assert_equal(expect,actual)
92
+ end
93
+
94
+ end
95
+
96
+ end
data.tar.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+
2
+ к�J��*���2'�w���A�TR)wk� NҚ�t�&F�<R2�=��"�Փ�#/=��x��Zh
3
+ ��s�W���b;�� ����$�R�=�Y�T�����=��`�.0��t�&��3���
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sixarm_ruby_xml_strip
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - SixArm
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - !binary |-
13
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCRENDQW0yZ0F3SUJB
14
+ Z0lKQUtQd0VFVFU1YkhvTUEwR0NTcUdTSWIzRFFFQkJRVUFNR0F4Q3pBSkJn
15
+ TlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZB
16
+ WURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVE4d0RRWURWUVFLRXdaVGFY
17
+ aEJjbTB4RXpBUkJnTlZCQU1UQ25OcGVHRnliUzVqYjIwd0hoY05NVEF4Ck1q
18
+ RXpNak15TnpFeldoY05NVE13T1RBNE1qTXlOekV6V2pCZ01Rc3dDUVlEVlFR
19
+ R0V3SlZVekVUTUJFR0ExVUUKQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFV
20
+ RUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUE1BMEdBMVVFQ2hNRwpVMmw0UVhK
21
+ dE1STXdFUVlEVlFRREV3cHphWGhoY20wdVkyOXRNSUdmTUEwR0NTcUdTSWIz
22
+ RFFFQkFRVUFBNEdOCkFEQ0JpUUtCZ1FDOTRtRDlKRHdCc3Vuc09JMFZSM0NY
23
+ WGJPV2c5Y1dhV2Npd0Z5Sk5GaU03QTlJOEtQTGZYVXcKUUM0Y3pVZTVadUc0
24
+ V0h2aW5yV2hrckNLKzFkV0Jxb0VDbHhkRi9Gb0tPNWErdG9uR0Nqam1meTgx
25
+ Sm1Gamp5eAplVHNqc0h5dncrUWlrOWtwZjlhajYrcG5rTnJWc3dnTkhWZWEy
26
+ bzl5YWJiRWlTNlZTZUpXb1FJREFRQUJvNEhGCk1JSENNQjBHQTFVZERnUVdC
27
+ QlF6UEp0cW1TZ2M1M2VETjdhU3pEUXdyOVRBTERDQmtnWURWUjBqQklHS01J
28
+ R0gKZ0JRelBKdHFtU2djNTNlRE43YVN6RFF3cjlUQUxLRmtwR0l3WURFTE1B
29
+ a0dBMVVFQmhNQ1ZWTXhFekFSQmdOVgpCQWdUQ2tOaGJHbG1iM0p1YVdFeEZq
30
+ QVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHpZMjh4RHpBTkJnTlZCQW9UCkJs
31
+ TnBlRUZ5YlRFVE1CRUdBMVVFQXhNS2MybDRZWEp0TG1OdmJZSUpBS1B3RUVU
32
+ VTViSG9NQXdHQTFVZEV3UUYKTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFB
33
+ RGdZRUFvb0VleFAvb1BhbTFUUDcxU3l1aHhNYit1VHJaYlNRZQpqVkIrRXhS
34
+ d1dhZEd3YU5QVUE1NmQzOXF3YXZ3UCtpdSszSnBlb25OTVZ2YldYRjVuYUNY
35
+ L2RORkllUkVIekVSClpEUlFZTXFydTlURU1uYTZIRDl6cGNzdEY3dndUaEdv
36
+ dmxPUSszWTZwbFE0bk16aXBYY1o5VEhxczY1UElMMHEKZWFid3BDYkFvcG89
37
+ Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
38
+ date: 2012-03-16 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: sixarm_ruby_rexml
42
+ requirement: &21808540 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 2.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: *21808540
51
+ description:
52
+ email: sixarm@sixarm.com
53
+ executables: []
54
+ extensions: []
55
+ extra_rdoc_files: []
56
+ files:
57
+ - .gemtest
58
+ - Rakefile
59
+ - README.md
60
+ - VERSION
61
+ - lib/sixarm_ruby_xml_strip.rb
62
+ - test/sixarm_ruby_xml_strip_test.rb
63
+ - test/sixarm_ruby_xml_strip_test/microsoft_word_clean.html
64
+ - test/sixarm_ruby_xml_strip_test/microsoft_word_dirty.html
65
+ homepage: http://sixarm.com/
66
+ licenses: []
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ requirements: []
84
+ rubyforge_project:
85
+ rubygems_version: 1.8.11
86
+ signing_key:
87
+ specification_version: 3
88
+ summary: SixArm.com » Ruby » XML#strip methods to clean up XML and HTML
89
+ test_files:
90
+ - test/sixarm_ruby_xml_strip_test.rb
91
+ - test/sixarm_ruby_xml_strip_test/microsoft_word_clean.html
92
+ - test/sixarm_ruby_xml_strip_test/microsoft_word_dirty.html
93
+ has_rdoc: true
metadata.gz.sig ADDED
Binary file