sixarm_ruby_xml_strip 2.1.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.
- data/.gemtest +0 -0
- data/README.md +68 -0
- data/Rakefile +8 -0
- data/VERSION +1 -0
- data/lib/sixarm_ruby_xml_strip.rb +84 -0
- data/test/sixarm_ruby_xml_strip_test/microsoft_word_clean.html +1 -0
- data/test/sixarm_ruby_xml_strip_test/microsoft_word_dirty.html +148 -0
- data/test/sixarm_ruby_xml_strip_test.rb +96 -0
- data.tar.gz.sig +3 -0
- metadata +93 -0
- metadata.gz.sig +0 -0
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
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]> <![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]> <![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]> <![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]> <![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]> <![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]> <![endif]><o:p></o:p></p>
|
138
|
+
</td>
|
139
|
+
</tr>
|
140
|
+
</table>
|
141
|
+
|
142
|
+
<p class=MsoNormal><![if !supportEmptyParas]> <![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
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
|