nokogiri 1.5.0.beta.4 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- data/.gemtest +0 -0
- data/CHANGELOG.ja.rdoc +34 -0
- data/CHANGELOG.rdoc +40 -1
- data/Manifest.txt +11 -2
- data/README.rdoc +1 -1
- data/Rakefile +100 -104
- data/bin/nokogiri +1 -2
- data/ext/nokogiri/nokogiri.c +24 -1
- data/ext/nokogiri/xml_io.c +32 -7
- data/ext/nokogiri/xml_node.c +14 -13
- data/ext/nokogiri/xml_sax_parser.c +9 -4
- data/ext/nokogiri/xslt_stylesheet.c +7 -1
- data/lib/nokogiri.rb +3 -22
- data/lib/nokogiri/css.rb +4 -0
- data/lib/nokogiri/html/document.rb +10 -14
- data/lib/nokogiri/version.rb +76 -23
- data/lib/nokogiri/xml/builder.rb +7 -0
- data/lib/nokogiri/xml/document.rb +17 -1
- data/lib/nokogiri/xml/document_fragment.rb +14 -0
- data/lib/nokogiri/xml/node.rb +36 -28
- data/lib/nokogiri/xml/node/save_options.rb +17 -1
- data/lib/nokogiri/xml/node_set.rb +7 -0
- data/lib/nokogiri/xml/parse_options.rb +8 -0
- data/lib/nokogiri/xml/reader.rb +6 -6
- data/lib/nokogiri/xml/schema.rb +7 -1
- data/nokogiri_help_responses.md +40 -0
- data/tasks/cross_compile.rb +134 -159
- data/tasks/nokogiri.org.rb +18 -0
- data/tasks/test.rb +1 -1
- data/test/files/encoding.html +82 -0
- data/test/files/encoding.xhtml +84 -0
- data/test/files/metacharset.html +10 -0
- data/test/files/noencoding.html +47 -0
- data/test/helper.rb +2 -0
- data/test/html/test_document.rb +15 -0
- data/test/html/test_document_encoding.rb +13 -0
- data/test/test_memory_leak.rb +20 -0
- data/test/test_reader.rb +22 -0
- data/test/test_xslt_transforms.rb +6 -2
- data/test/xml/node/test_save_options.rb +10 -2
- data/test/xml/test_builder.rb +17 -0
- data/test/xml/test_document.rb +22 -0
- data/test/xml/test_node.rb +19 -1
- data/test/xml/test_node_reparenting.rb +16 -3
- data/test/xml/test_node_set.rb +34 -0
- data/test/xml/test_schema.rb +5 -0
- data/test/xslt/test_exception_handling.rb +37 -0
- metadata +185 -157
- data/deps.rip +0 -5
- data/ext/java/nokogiri/EncodingHandler.java +0 -124
- data/ext/java/nokogiri/HtmlDocument.java +0 -149
- data/ext/java/nokogiri/HtmlElementDescription.java +0 -145
- data/ext/java/nokogiri/HtmlEntityLookup.java +0 -79
- data/ext/java/nokogiri/HtmlSaxParserContext.java +0 -259
- data/ext/java/nokogiri/NokogiriService.java +0 -535
- data/ext/java/nokogiri/XmlAttr.java +0 -191
- data/ext/java/nokogiri/XmlAttributeDecl.java +0 -130
- data/ext/java/nokogiri/XmlCdata.java +0 -91
- data/ext/java/nokogiri/XmlComment.java +0 -86
- data/ext/java/nokogiri/XmlDocument.java +0 -529
- data/ext/java/nokogiri/XmlDocumentFragment.java +0 -217
- data/ext/java/nokogiri/XmlDtd.java +0 -467
- data/ext/java/nokogiri/XmlElement.java +0 -222
- data/ext/java/nokogiri/XmlElementContent.java +0 -382
- data/ext/java/nokogiri/XmlElementDecl.java +0 -148
- data/ext/java/nokogiri/XmlEntityDecl.java +0 -162
- data/ext/java/nokogiri/XmlEntityReference.java +0 -75
- data/ext/java/nokogiri/XmlNamespace.java +0 -128
- data/ext/java/nokogiri/XmlNode.java +0 -1399
- data/ext/java/nokogiri/XmlNodeSet.java +0 -311
- data/ext/java/nokogiri/XmlProcessingInstruction.java +0 -103
- data/ext/java/nokogiri/XmlReader.java +0 -411
- data/ext/java/nokogiri/XmlRelaxng.java +0 -144
- data/ext/java/nokogiri/XmlSaxParserContext.java +0 -367
- data/ext/java/nokogiri/XmlSaxPushParser.java +0 -184
- data/ext/java/nokogiri/XmlSchema.java +0 -319
- data/ext/java/nokogiri/XmlSyntaxError.java +0 -119
- data/ext/java/nokogiri/XmlText.java +0 -136
- data/ext/java/nokogiri/XmlXpathContext.java +0 -179
- data/ext/java/nokogiri/XsltStylesheet.java +0 -183
- data/ext/java/nokogiri/internals/HtmlDomParserContext.java +0 -206
- data/ext/java/nokogiri/internals/NokogiriDocumentCache.java +0 -73
- data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +0 -86
- data/ext/java/nokogiri/internals/NokogiriHandler.java +0 -327
- data/ext/java/nokogiri/internals/NokogiriHelpers.java +0 -582
- data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +0 -171
- data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +0 -118
- data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +0 -74
- data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +0 -121
- data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +0 -79
- data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +0 -126
- data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +0 -56
- data/ext/java/nokogiri/internals/ParserContext.java +0 -278
- data/ext/java/nokogiri/internals/PushInputStream.java +0 -411
- data/ext/java/nokogiri/internals/ReaderNode.java +0 -474
- data/ext/java/nokogiri/internals/SaveContext.java +0 -288
- data/ext/java/nokogiri/internals/SchemaErrorHandler.java +0 -76
- data/ext/java/nokogiri/internals/XmlDeclHandler.java +0 -42
- data/ext/java/nokogiri/internals/XmlDomParser.java +0 -77
- data/ext/java/nokogiri/internals/XmlDomParserContext.java +0 -238
- data/ext/java/nokogiri/internals/XmlSaxParser.java +0 -65
- data/ext/java/nokogiri/internals/XsltExtensionFunction.java +0 -72
- data/lib/isorelax.jar +0 -0
- data/lib/jing.jar +0 -0
- data/lib/nekodtd.jar +0 -0
- data/lib/nekohtml.jar +0 -0
- data/lib/xercesImpl.jar +0 -0
@@ -1,171 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* (The MIT License)
|
3
|
-
*
|
4
|
-
* Copyright (c) 2008 - 2011:
|
5
|
-
*
|
6
|
-
* * {Aaron Patterson}[http://tenderlovemaking.com]
|
7
|
-
* * {Mike Dalessio}[http://mike.daless.io]
|
8
|
-
* * {Charles Nutter}[http://blog.headius.com]
|
9
|
-
* * {Sergio Arbeo}[http://www.serabe.com]
|
10
|
-
* * {Patrick Mahoney}[http://polycrystal.org]
|
11
|
-
* * {Yoko Harada}[http://yokolet.blogspot.com]
|
12
|
-
*
|
13
|
-
* Permission is hereby granted, free of charge, to any person obtaining
|
14
|
-
* a copy of this software and associated documentation files (the
|
15
|
-
* 'Software'), to deal in the Software without restriction, including
|
16
|
-
* without limitation the rights to use, copy, modify, merge, publish,
|
17
|
-
* distribute, sublicense, and/or sell copies of the Software, and to
|
18
|
-
* permit persons to whom the Software is furnished to do so, subject to
|
19
|
-
* the following conditions:
|
20
|
-
*
|
21
|
-
* The above copyright notice and this permission notice shall be
|
22
|
-
* included in all copies or substantial portions of the Software.
|
23
|
-
*
|
24
|
-
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
25
|
-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
26
|
-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
27
|
-
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
28
|
-
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
29
|
-
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
30
|
-
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
31
|
-
*/
|
32
|
-
|
33
|
-
package nokogiri.internals;
|
34
|
-
|
35
|
-
import static nokogiri.internals.NokogiriHelpers.getNokogiriClass;
|
36
|
-
import static nokogiri.internals.NokogiriHelpers.isNamespace;
|
37
|
-
|
38
|
-
import java.util.ArrayList;
|
39
|
-
import java.util.LinkedHashMap;
|
40
|
-
import java.util.List;
|
41
|
-
import java.util.Map;
|
42
|
-
|
43
|
-
import nokogiri.NokogiriService;
|
44
|
-
import nokogiri.XmlDocument;
|
45
|
-
import nokogiri.XmlNamespace;
|
46
|
-
|
47
|
-
import org.jruby.Ruby;
|
48
|
-
import org.w3c.dom.Attr;
|
49
|
-
import org.w3c.dom.NamedNodeMap;
|
50
|
-
import org.w3c.dom.Node;
|
51
|
-
|
52
|
-
/**
|
53
|
-
* Cache of namespages of each node. XmlDocument has one cache of this class.
|
54
|
-
*
|
55
|
-
* @author sergio
|
56
|
-
* @author Yoko Harada <yokolet@gmail.com>
|
57
|
-
*/
|
58
|
-
public class NokogiriNamespaceCache {
|
59
|
-
|
60
|
-
private List<Long> keys; // order matters.
|
61
|
-
private Map<Integer, CacheEntry> cache; // pair of the index of a given key and entry
|
62
|
-
private XmlNamespace defaultNamespace = null;
|
63
|
-
|
64
|
-
public NokogiriNamespaceCache() {
|
65
|
-
keys = new ArrayList<Long>();
|
66
|
-
cache = new LinkedHashMap<Integer, CacheEntry>();
|
67
|
-
}
|
68
|
-
|
69
|
-
private Long hashCode(String prefix, String href) {
|
70
|
-
long prefix_hash = prefix.hashCode();
|
71
|
-
long href_hash = href.hashCode();
|
72
|
-
return prefix_hash << 31 | href_hash;
|
73
|
-
}
|
74
|
-
|
75
|
-
public XmlNamespace get(String prefix, String href) {
|
76
|
-
// prefix should not be null.
|
77
|
-
// In case of a default namespace, an empty string should be given to prefix argument.
|
78
|
-
if (prefix == null || href == null) return null;
|
79
|
-
Long hash = hashCode(prefix, href);
|
80
|
-
Integer index = keys.indexOf(hash);
|
81
|
-
if (index != -1) return cache.get(index).namespace;
|
82
|
-
return null;
|
83
|
-
}
|
84
|
-
|
85
|
-
public XmlNamespace getDefault() {
|
86
|
-
return defaultNamespace;
|
87
|
-
}
|
88
|
-
|
89
|
-
public XmlNamespace get(String prefix) {
|
90
|
-
if (prefix == null) return defaultNamespace;
|
91
|
-
long h = prefix.hashCode();
|
92
|
-
Long hash = h << 31;
|
93
|
-
Long mask = 0xFF00L;
|
94
|
-
for (int i=0; i < keys.size(); i++) {
|
95
|
-
if ((keys.get(i) & mask) == hash) {
|
96
|
-
return cache.get(i).namespace;
|
97
|
-
}
|
98
|
-
}
|
99
|
-
return null;
|
100
|
-
}
|
101
|
-
|
102
|
-
public List<XmlNamespace> get(Node node) {
|
103
|
-
List<XmlNamespace> namespaces = new ArrayList<XmlNamespace>();
|
104
|
-
for (int i=0; i < keys.size(); i++) {
|
105
|
-
CacheEntry entry = cache.get(i);
|
106
|
-
if (entry.node == node) {
|
107
|
-
namespaces.add(entry.namespace);
|
108
|
-
}
|
109
|
-
}
|
110
|
-
return namespaces;
|
111
|
-
}
|
112
|
-
|
113
|
-
public XmlNamespace put(Ruby ruby, String prefix, String href, Node node, XmlDocument document) {
|
114
|
-
// prefix should not be null.
|
115
|
-
// In case of a default namespace, an empty string should be given to prefix argument.
|
116
|
-
if (prefix == null || href == null) return null;
|
117
|
-
Long hash = hashCode(prefix, href);
|
118
|
-
Integer index;
|
119
|
-
if ((index = keys.indexOf(hash)) != -1) {
|
120
|
-
return cache.get(index).namespace;
|
121
|
-
} else {
|
122
|
-
keys.add(hash);
|
123
|
-
index = keys.size() - 1;
|
124
|
-
String actualPrefix = (prefix.equals("")) ? null : prefix;
|
125
|
-
XmlNamespace namespace = (XmlNamespace) NokogiriService.XML_NAMESPACE_ALLOCATOR.allocate(ruby, getNokogiriClass(ruby, "Nokogiri::XML::Namespace"));
|
126
|
-
namespace.setDefinition(ruby, actualPrefix, href);
|
127
|
-
namespace.setDocument(document);
|
128
|
-
CacheEntry entry = new CacheEntry(namespace, node);
|
129
|
-
cache.put(index, entry);
|
130
|
-
if ("".equals(prefix)) defaultNamespace = namespace;
|
131
|
-
return namespace;
|
132
|
-
}
|
133
|
-
}
|
134
|
-
|
135
|
-
public void remove(String prefix, String href) {
|
136
|
-
if (prefix == null || href == null) return;
|
137
|
-
Long hash = hashCode(prefix, href);
|
138
|
-
Integer index = keys.indexOf(hash);
|
139
|
-
if (index != -1) {
|
140
|
-
cache.remove(index);
|
141
|
-
}
|
142
|
-
keys.remove(index);
|
143
|
-
}
|
144
|
-
|
145
|
-
public void clear() {
|
146
|
-
// removes namespace declarations from node
|
147
|
-
for (int i=0; i < keys.size(); i++) {
|
148
|
-
CacheEntry entry = cache.get(i);
|
149
|
-
NamedNodeMap attributes = entry.node.getAttributes();
|
150
|
-
for (int j=0; j<attributes.getLength(); j++) {
|
151
|
-
String name = ((Attr)attributes.item(j)).getName();
|
152
|
-
if (isNamespace(name)) {
|
153
|
-
attributes.removeNamedItem(name);
|
154
|
-
}
|
155
|
-
}
|
156
|
-
}
|
157
|
-
keys.clear();
|
158
|
-
cache.clear();
|
159
|
-
defaultNamespace = null;
|
160
|
-
}
|
161
|
-
|
162
|
-
private class CacheEntry {
|
163
|
-
private XmlNamespace namespace;
|
164
|
-
private Node node;
|
165
|
-
|
166
|
-
CacheEntry(XmlNamespace namespace, Node node) {
|
167
|
-
this.namespace = namespace;
|
168
|
-
this.node = node;
|
169
|
-
}
|
170
|
-
}
|
171
|
-
}
|
@@ -1,118 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* (The MIT License)
|
3
|
-
*
|
4
|
-
* Copyright (c) 2008 - 2011:
|
5
|
-
*
|
6
|
-
* * {Aaron Patterson}[http://tenderlovemaking.com]
|
7
|
-
* * {Mike Dalessio}[http://mike.daless.io]
|
8
|
-
* * {Charles Nutter}[http://blog.headius.com]
|
9
|
-
* * {Sergio Arbeo}[http://www.serabe.com]
|
10
|
-
* * {Patrick Mahoney}[http://polycrystal.org]
|
11
|
-
* * {Yoko Harada}[http://yokolet.blogspot.com]
|
12
|
-
*
|
13
|
-
* Permission is hereby granted, free of charge, to any person obtaining
|
14
|
-
* a copy of this software and associated documentation files (the
|
15
|
-
* 'Software'), to deal in the Software without restriction, including
|
16
|
-
* without limitation the rights to use, copy, modify, merge, publish,
|
17
|
-
* distribute, sublicense, and/or sell copies of the Software, and to
|
18
|
-
* permit persons to whom the Software is furnished to do so, subject to
|
19
|
-
* the following conditions:
|
20
|
-
*
|
21
|
-
* The above copyright notice and this permission notice shall be
|
22
|
-
* included in all copies or substantial portions of the Software.
|
23
|
-
*
|
24
|
-
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
25
|
-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
26
|
-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
27
|
-
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
28
|
-
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
29
|
-
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
30
|
-
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
31
|
-
*/
|
32
|
-
|
33
|
-
package nokogiri.internals;
|
34
|
-
|
35
|
-
import java.util.ArrayList;
|
36
|
-
import java.util.Hashtable;
|
37
|
-
import java.util.Iterator;
|
38
|
-
import java.util.List;
|
39
|
-
import java.util.Set;
|
40
|
-
import java.util.Map.Entry;
|
41
|
-
|
42
|
-
import javax.xml.XMLConstants;
|
43
|
-
import javax.xml.namespace.NamespaceContext;
|
44
|
-
|
45
|
-
/**
|
46
|
-
* Holder of each node's namespace.
|
47
|
-
*
|
48
|
-
* @author Yoko Harada <yokolet@gmail.com>
|
49
|
-
*
|
50
|
-
*/
|
51
|
-
|
52
|
-
public class NokogiriNamespaceContext implements NamespaceContext {
|
53
|
-
public static final String NOKOGIRI_PREFIX = "nokogiri";
|
54
|
-
public static final String NOKOGIRI_URI = "http://www.nokogiri.org/default_ns/ruby/extensions_functions";
|
55
|
-
public static final String NOKOGIRI_TEMPORARY_ROOT_TAG = "nokogiri-temporary-root-tag";
|
56
|
-
|
57
|
-
private Hashtable<String,String> register;
|
58
|
-
|
59
|
-
public NokogiriNamespaceContext() {
|
60
|
-
this.register = new Hashtable<String,String>();
|
61
|
-
register.put(NOKOGIRI_PREFIX, NOKOGIRI_URI);
|
62
|
-
register.put("xml", "http://www.w3.org/XML/1998/namespace");
|
63
|
-
register.put("xhtml", "http://www.w3.org/1999/xhtml");
|
64
|
-
}
|
65
|
-
|
66
|
-
public String getNamespaceURI(String prefix) {
|
67
|
-
if (prefix == null) {
|
68
|
-
throw new IllegalArgumentException();
|
69
|
-
}
|
70
|
-
String uri = this.register.get(prefix);
|
71
|
-
if (uri != null) {
|
72
|
-
return uri;
|
73
|
-
}
|
74
|
-
|
75
|
-
if (prefix.equals(XMLConstants.XMLNS_ATTRIBUTE)) {
|
76
|
-
uri = this.register.get(XMLConstants.XMLNS_ATTRIBUTE);
|
77
|
-
return (uri == null) ? XMLConstants.XMLNS_ATTRIBUTE_NS_URI : uri;
|
78
|
-
}
|
79
|
-
|
80
|
-
return XMLConstants.NULL_NS_URI;
|
81
|
-
}
|
82
|
-
|
83
|
-
public String getPrefix(String uri) {
|
84
|
-
if (uri == null) {
|
85
|
-
throw new IllegalArgumentException("uri is null");
|
86
|
-
} else {
|
87
|
-
Set<Entry<String, String>> entries = register.entrySet();
|
88
|
-
for (Entry<String, String> entry : entries) {
|
89
|
-
if (uri.equals(entry.getValue())) {
|
90
|
-
return entry.getKey();
|
91
|
-
}
|
92
|
-
}
|
93
|
-
}
|
94
|
-
return null;
|
95
|
-
}
|
96
|
-
|
97
|
-
public Iterator<String> getPrefixes(String uri) {
|
98
|
-
if (register == null) return null;
|
99
|
-
Set<Entry<String, String>> entries = register.entrySet();
|
100
|
-
List<String> list = new ArrayList<String>();
|
101
|
-
for (Entry<String, String> entry : entries) {
|
102
|
-
if (uri.equals(entry.getValue())) {
|
103
|
-
list.add(entry.getKey());
|
104
|
-
}
|
105
|
-
}
|
106
|
-
return list.iterator();
|
107
|
-
}
|
108
|
-
|
109
|
-
public Set<String> getAllPrefixes() {
|
110
|
-
if (register == null) return null;
|
111
|
-
return register.keySet();
|
112
|
-
}
|
113
|
-
|
114
|
-
public void registerNamespace(String prefix, String uri) {
|
115
|
-
if("xmlns".equals(prefix)) prefix = "";
|
116
|
-
this.register.put(prefix, uri);
|
117
|
-
}
|
118
|
-
}
|
@@ -1,74 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* (The MIT License)
|
3
|
-
*
|
4
|
-
* Copyright (c) 2008 - 2011:
|
5
|
-
*
|
6
|
-
* * {Aaron Patterson}[http://tenderlovemaking.com]
|
7
|
-
* * {Mike Dalessio}[http://mike.daless.io]
|
8
|
-
* * {Charles Nutter}[http://blog.headius.com]
|
9
|
-
* * {Sergio Arbeo}[http://www.serabe.com]
|
10
|
-
* * {Patrick Mahoney}[http://polycrystal.org]
|
11
|
-
* * {Yoko Harada}[http://yokolet.blogspot.com]
|
12
|
-
*
|
13
|
-
* Permission is hereby granted, free of charge, to any person obtaining
|
14
|
-
* a copy of this software and associated documentation files (the
|
15
|
-
* 'Software'), to deal in the Software without restriction, including
|
16
|
-
* without limitation the rights to use, copy, modify, merge, publish,
|
17
|
-
* distribute, sublicense, and/or sell copies of the Software, and to
|
18
|
-
* permit persons to whom the Software is furnished to do so, subject to
|
19
|
-
* the following conditions:
|
20
|
-
*
|
21
|
-
* The above copyright notice and this permission notice shall be
|
22
|
-
* included in all copies or substantial portions of the Software.
|
23
|
-
*
|
24
|
-
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
25
|
-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
26
|
-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
27
|
-
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
28
|
-
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
29
|
-
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
30
|
-
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
31
|
-
*/
|
32
|
-
|
33
|
-
package nokogiri.internals;
|
34
|
-
|
35
|
-
import org.apache.xerces.xni.parser.XMLParseException;
|
36
|
-
import org.xml.sax.SAXException;
|
37
|
-
import org.xml.sax.SAXParseException;
|
38
|
-
|
39
|
-
/**
|
40
|
-
* Error Handler for XML document when recover is true (default).
|
41
|
-
*
|
42
|
-
* @author sergio
|
43
|
-
* @author Yoko Harada <yokolet@gmail.com>
|
44
|
-
*/
|
45
|
-
public class NokogiriNonStrictErrorHandler extends NokogiriErrorHandler{
|
46
|
-
public NokogiriNonStrictErrorHandler(boolean noerror, boolean nowarning) {
|
47
|
-
super(noerror, nowarning);
|
48
|
-
}
|
49
|
-
|
50
|
-
public void warning(SAXParseException ex) throws SAXException {
|
51
|
-
errors.add(ex);
|
52
|
-
}
|
53
|
-
|
54
|
-
public void error(SAXParseException ex) throws SAXException {
|
55
|
-
errors.add(ex);
|
56
|
-
}
|
57
|
-
|
58
|
-
public void fatalError(SAXParseException ex) throws SAXException {
|
59
|
-
errors.add(ex);
|
60
|
-
}
|
61
|
-
|
62
|
-
public void error(String domain, String key, XMLParseException e) {
|
63
|
-
errors.add(e);
|
64
|
-
}
|
65
|
-
|
66
|
-
public void fatalError(String domain, String key, XMLParseException e) {
|
67
|
-
errors.add(e);
|
68
|
-
}
|
69
|
-
|
70
|
-
public void warning(String domain, String key, XMLParseException e) {
|
71
|
-
errors.add(e);
|
72
|
-
}
|
73
|
-
|
74
|
-
}
|
@@ -1,121 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* (The MIT License)
|
3
|
-
*
|
4
|
-
* Copyright (c) 2008 - 2011:
|
5
|
-
*
|
6
|
-
* * {Aaron Patterson}[http://tenderlovemaking.com]
|
7
|
-
* * {Mike Dalessio}[http://mike.daless.io]
|
8
|
-
* * {Charles Nutter}[http://blog.headius.com]
|
9
|
-
* * {Sergio Arbeo}[http://www.serabe.com]
|
10
|
-
* * {Patrick Mahoney}[http://polycrystal.org]
|
11
|
-
* * {Yoko Harada}[http://yokolet.blogspot.com]
|
12
|
-
*
|
13
|
-
* Permission is hereby granted, free of charge, to any person obtaining
|
14
|
-
* a copy of this software and associated documentation files (the
|
15
|
-
* 'Software'), to deal in the Software without restriction, including
|
16
|
-
* without limitation the rights to use, copy, modify, merge, publish,
|
17
|
-
* distribute, sublicense, and/or sell copies of the Software, and to
|
18
|
-
* permit persons to whom the Software is furnished to do so, subject to
|
19
|
-
* the following conditions:
|
20
|
-
*
|
21
|
-
* The above copyright notice and this permission notice shall be
|
22
|
-
* included in all copies or substantial portions of the Software.
|
23
|
-
*
|
24
|
-
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
25
|
-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
26
|
-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
27
|
-
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
28
|
-
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
29
|
-
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
30
|
-
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
31
|
-
*/
|
32
|
-
|
33
|
-
package nokogiri.internals;
|
34
|
-
|
35
|
-
import org.apache.xerces.xni.parser.XMLParseException;
|
36
|
-
import org.xml.sax.SAXException;
|
37
|
-
import org.xml.sax.SAXParseException;
|
38
|
-
|
39
|
-
/**
|
40
|
-
* Non-strict error handler for NekoHtml.
|
41
|
-
*
|
42
|
-
* NekoHtml adds too many warnings, which makes later processing hard. For example,
|
43
|
-
* Nokogiri wants to know whether number of errors have been increased or not to judge
|
44
|
-
* availability of creating NodeSet from a given fragment. When the fragment nodes
|
45
|
-
* are to be created from HTML document, which means NekoHtml is used, always errors
|
46
|
-
* increases. As a result, even though the given fragment is correct HTML, NodeSet
|
47
|
-
* base on the given fragment won't be created. This is why all warnings are eliminated.
|
48
|
-
*
|
49
|
-
* @author Yoko Harada <yokolet@gmail.com>
|
50
|
-
*/
|
51
|
-
public class NokogiriNonStrictErrorHandler4NekoHtml extends NokogiriErrorHandler {
|
52
|
-
|
53
|
-
public NokogiriNonStrictErrorHandler4NekoHtml(boolean nowarning) {
|
54
|
-
super(false, nowarning);
|
55
|
-
}
|
56
|
-
|
57
|
-
public NokogiriNonStrictErrorHandler4NekoHtml(boolean noerror, boolean nowarning) {
|
58
|
-
super(noerror, nowarning);
|
59
|
-
}
|
60
|
-
|
61
|
-
public void warning(SAXParseException ex) throws SAXException {
|
62
|
-
//noop. NekoHtml adds too many warnings.
|
63
|
-
}
|
64
|
-
|
65
|
-
public void error(SAXParseException ex) throws SAXException {
|
66
|
-
errors.add(ex);
|
67
|
-
}
|
68
|
-
|
69
|
-
public void fatalError(SAXParseException ex) throws SAXException {
|
70
|
-
errors.add(ex);
|
71
|
-
}
|
72
|
-
|
73
|
-
/**
|
74
|
-
* Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
|
75
|
-
* is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
|
76
|
-
*
|
77
|
-
* @param domain The domain of the error. The domain can be any string but is
|
78
|
-
* suggested to be a valid URI. The domain can be used to conveniently
|
79
|
-
* specify a web site location of the relevant specification or
|
80
|
-
* document pertaining to this warning.
|
81
|
-
* @param key The error key. This key can be any string and is implementation
|
82
|
-
* dependent.
|
83
|
-
* @param e Exception.
|
84
|
-
*/
|
85
|
-
public void error(String domain, String key, XMLParseException e) {
|
86
|
-
errors.add(e);
|
87
|
-
}
|
88
|
-
|
89
|
-
/**
|
90
|
-
* Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
|
91
|
-
* is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
|
92
|
-
*
|
93
|
-
* @param domain The domain of the fatal error. The domain can be any string but is
|
94
|
-
* suggested to be a valid URI. The domain can be used to conveniently
|
95
|
-
* specify a web site location of the relevant specification or
|
96
|
-
* document pertaining to this warning.
|
97
|
-
* @param key The fatal error key. This key can be any string and is implementation
|
98
|
-
* dependent.
|
99
|
-
* @param e Exception.
|
100
|
-
*/
|
101
|
-
public void fatalError(String domain, String key, XMLParseException e) {
|
102
|
-
errors.add(e);
|
103
|
-
}
|
104
|
-
|
105
|
-
/**
|
106
|
-
* Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
|
107
|
-
* is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
|
108
|
-
*
|
109
|
-
* @param domain The domain of the warning. The domain can be any string but is
|
110
|
-
* suggested to be a valid URI. The domain can be used to conveniently
|
111
|
-
* specify a web site location of the relevant specification or
|
112
|
-
* document pertaining to this warning.
|
113
|
-
* @param key The warning key. This key can be any string and is implementation
|
114
|
-
* dependent.
|
115
|
-
* @param e Exception.
|
116
|
-
*/
|
117
|
-
public void warning(String domain, String key, XMLParseException e) {
|
118
|
-
//noop. NekoHtml adds too many warnings.
|
119
|
-
}
|
120
|
-
|
121
|
-
}
|