nokogiri 1.11.1-java → 1.11.2-java

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.

Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE-DEPENDENCIES.md +12 -12
  3. data/LICENSE.md +1 -1
  4. data/README.md +20 -15
  5. data/ext/java/nokogiri/EncodingHandler.java +78 -59
  6. data/ext/java/nokogiri/HtmlDocument.java +137 -114
  7. data/ext/java/nokogiri/HtmlElementDescription.java +104 -87
  8. data/ext/java/nokogiri/HtmlEntityLookup.java +31 -26
  9. data/ext/java/nokogiri/HtmlSaxParserContext.java +220 -192
  10. data/ext/java/nokogiri/HtmlSaxPushParser.java +164 -139
  11. data/ext/java/nokogiri/NokogiriService.java +597 -526
  12. data/ext/java/nokogiri/XmlAttr.java +120 -96
  13. data/ext/java/nokogiri/XmlAttributeDecl.java +97 -76
  14. data/ext/java/nokogiri/XmlCdata.java +35 -26
  15. data/ext/java/nokogiri/XmlComment.java +48 -37
  16. data/ext/java/nokogiri/XmlDocument.java +642 -540
  17. data/ext/java/nokogiri/XmlDocumentFragment.java +127 -107
  18. data/ext/java/nokogiri/XmlDtd.java +450 -384
  19. data/ext/java/nokogiri/XmlElement.java +25 -18
  20. data/ext/java/nokogiri/XmlElementContent.java +345 -286
  21. data/ext/java/nokogiri/XmlElementDecl.java +126 -95
  22. data/ext/java/nokogiri/XmlEntityDecl.java +121 -97
  23. data/ext/java/nokogiri/XmlEntityReference.java +51 -42
  24. data/ext/java/nokogiri/XmlNamespace.java +177 -145
  25. data/ext/java/nokogiri/XmlNode.java +1843 -1588
  26. data/ext/java/nokogiri/XmlNodeSet.java +361 -299
  27. data/ext/java/nokogiri/XmlProcessingInstruction.java +49 -39
  28. data/ext/java/nokogiri/XmlReader.java +513 -418
  29. data/ext/java/nokogiri/XmlRelaxng.java +91 -78
  30. data/ext/java/nokogiri/XmlSaxParserContext.java +330 -285
  31. data/ext/java/nokogiri/XmlSaxPushParser.java +229 -190
  32. data/ext/java/nokogiri/XmlSchema.java +328 -263
  33. data/ext/java/nokogiri/XmlSyntaxError.java +113 -83
  34. data/ext/java/nokogiri/XmlText.java +57 -46
  35. data/ext/java/nokogiri/XmlXpathContext.java +240 -206
  36. data/ext/java/nokogiri/XsltStylesheet.java +282 -239
  37. data/ext/java/nokogiri/internals/ClosedStreamException.java +5 -2
  38. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +199 -168
  39. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +17 -10
  40. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +43 -16
  41. data/ext/java/nokogiri/internals/NokogiriDomParser.java +65 -50
  42. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +107 -88
  43. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +25 -18
  44. data/ext/java/nokogiri/internals/NokogiriHandler.java +316 -254
  45. data/ext/java/nokogiri/internals/NokogiriHelpers.java +738 -622
  46. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +186 -143
  47. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +83 -68
  48. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +66 -49
  49. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +86 -69
  50. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +44 -29
  51. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +118 -101
  52. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +34 -24
  53. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +25 -17
  54. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +57 -42
  55. data/ext/java/nokogiri/internals/ParserContext.java +206 -179
  56. data/ext/java/nokogiri/internals/ReaderNode.java +478 -371
  57. data/ext/java/nokogiri/internals/SaveContextVisitor.java +822 -707
  58. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +28 -19
  59. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +129 -123
  60. data/ext/java/nokogiri/internals/XmlDeclHandler.java +5 -4
  61. data/ext/java/nokogiri/internals/XmlDomParserContext.java +208 -177
  62. data/ext/java/nokogiri/internals/XmlSaxParser.java +24 -17
  63. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +71 -68
  64. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +137 -118
  65. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +27 -21
  66. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +74 -61
  67. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +230 -205
  68. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +572 -547
  69. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +17 -10
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +17 -10
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +323 -302
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +232 -219
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +22 -15
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +23 -16
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +23 -16
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +22 -15
  77. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +575 -545
  78. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +141 -120
  79. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +39 -38
  80. data/ext/java/nokogiri/internals/c14n/Constants.java +13 -10
  81. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +279 -247
  82. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +66 -53
  83. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +44 -37
  84. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +135 -120
  85. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +59 -48
  86. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +384 -334
  87. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +25 -24
  88. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +151 -140
  89. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +456 -423
  90. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1466 -1500
  91. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +626 -570
  92. data/ext/nokogiri/depend +34 -474
  93. data/ext/nokogiri/extconf.rb +253 -183
  94. data/ext/nokogiri/html_document.c +10 -15
  95. data/ext/nokogiri/html_element_description.c +84 -71
  96. data/ext/nokogiri/html_entity_lookup.c +21 -16
  97. data/ext/nokogiri/html_sax_parser_context.c +66 -65
  98. data/ext/nokogiri/html_sax_push_parser.c +29 -27
  99. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  100. data/ext/nokogiri/nokogiri.c +171 -63
  101. data/ext/nokogiri/test_global_handlers.c +3 -4
  102. data/ext/nokogiri/xml_attr.c +15 -15
  103. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  104. data/ext/nokogiri/xml_cdata.c +13 -18
  105. data/ext/nokogiri/xml_comment.c +19 -26
  106. data/ext/nokogiri/xml_document.c +221 -164
  107. data/ext/nokogiri/xml_document_fragment.c +13 -15
  108. data/ext/nokogiri/xml_dtd.c +54 -48
  109. data/ext/nokogiri/xml_element_content.c +30 -27
  110. data/ext/nokogiri/xml_element_decl.c +22 -22
  111. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  112. data/ext/nokogiri/xml_entity_decl.c +32 -30
  113. data/ext/nokogiri/xml_entity_reference.c +16 -18
  114. data/ext/nokogiri/xml_namespace.c +56 -49
  115. data/ext/nokogiri/xml_node.c +338 -286
  116. data/ext/nokogiri/xml_node_set.c +168 -156
  117. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  118. data/ext/nokogiri/xml_reader.c +191 -157
  119. data/ext/nokogiri/xml_relax_ng.c +29 -23
  120. data/ext/nokogiri/xml_sax_parser.c +117 -112
  121. data/ext/nokogiri/xml_sax_parser_context.c +100 -85
  122. data/ext/nokogiri/xml_sax_push_parser.c +34 -27
  123. data/ext/nokogiri/xml_schema.c +48 -42
  124. data/ext/nokogiri/xml_syntax_error.c +21 -23
  125. data/ext/nokogiri/xml_text.c +13 -17
  126. data/ext/nokogiri/xml_xpath_context.c +134 -127
  127. data/ext/nokogiri/xslt_stylesheet.c +157 -157
  128. data/lib/nokogiri.rb +1 -22
  129. data/lib/nokogiri/css/parser.rb +1 -1
  130. data/lib/nokogiri/extension.rb +26 -0
  131. data/lib/nokogiri/html/document_fragment.rb +15 -15
  132. data/lib/nokogiri/nokogiri.jar +0 -0
  133. data/lib/nokogiri/version/constant.rb +1 -1
  134. data/lib/nokogiri/version/info.rb +31 -8
  135. data/lib/nokogiri/xml/document.rb +31 -11
  136. data/lib/nokogiri/xml/node.rb +38 -42
  137. data/lib/nokogiri/xml/reader.rb +2 -9
  138. data/lib/nokogiri/xml/xpath.rb +1 -3
  139. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  140. metadata +7 -8
  141. data/ext/nokogiri/xml_io.c +0 -63
  142. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
@@ -17,10 +17,10 @@
17
17
  * distribute, sublicense, and/or sell copies of the Software, and to
18
18
  * permit persons to whom the Software is furnished to do so, subject to
19
19
  * the following conditions:
20
- *
20
+ *
21
21
  * The above copyright notice and this permission notice shall be
22
22
  * included in all copies or substantial portions of the Software.
23
- *
23
+ *
24
24
  * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
25
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
26
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -38,63 +38,80 @@ import org.xml.sax.SAXParseException;
38
38
 
39
39
  /**
40
40
  * Error Handler for XML document when recover is true (default).
41
- *
41
+ *
42
42
  * @author sergio
43
43
  * @author Yoko Harada <yokolet@gmail.com>
44
44
  */
45
- public class NokogiriNonStrictErrorHandler extends NokogiriErrorHandler{
46
- public NokogiriNonStrictErrorHandler(boolean noerror, boolean nowarning) {
47
- super(noerror, nowarning);
48
- }
45
+ public class NokogiriNonStrictErrorHandler extends NokogiriErrorHandler
46
+ {
47
+ public
48
+ NokogiriNonStrictErrorHandler(boolean noerror, boolean nowarning)
49
+ {
50
+ super(noerror, nowarning);
51
+ }
49
52
 
50
- public void warning(SAXParseException ex) throws SAXException {
51
- errors.add(ex);
52
- }
53
+ public void
54
+ warning(SAXParseException ex) throws SAXException
55
+ {
56
+ errors.add(ex);
57
+ }
53
58
 
54
- public void error(SAXParseException ex) throws SAXException {
55
- errors.add(ex);
56
- }
59
+ public void
60
+ error(SAXParseException ex) throws SAXException
61
+ {
62
+ errors.add(ex);
63
+ }
57
64
 
58
- public void fatalError(SAXParseException ex) throws SAXException {
59
- // fix #837
60
- // Xerces won't skip the reference entity (and other invalid) constructs
61
- // found in the prolog, instead it will keep calling this method and we'll
62
- // keep inserting the error in the document errors array until we run
63
- // out of memory
64
- errors.add(ex);
65
- String message = ex.getMessage();
65
+ public void
66
+ fatalError(SAXParseException ex) throws SAXException
67
+ {
68
+ // fix #837
69
+ // Xerces won't skip the reference entity (and other invalid) constructs
70
+ // found in the prolog, instead it will keep calling this method and we'll
71
+ // keep inserting the error in the document errors array until we run
72
+ // out of memory
73
+ errors.add(ex);
74
+ String message = ex.getMessage();
66
75
 
67
- // The problem with Xerces is that some errors will cause the
68
- // parser not to advance the reader and it will keep reporting
69
- // the same error over and over, which will cause the parser
70
- // to enter an infinite loop unless we throw the exception.
71
- if (message != null && isFatal(message)) {
72
- throw ex;
73
- }
76
+ // The problem with Xerces is that some errors will cause the
77
+ // parser not to advance the reader and it will keep reporting
78
+ // the same error over and over, which will cause the parser
79
+ // to enter an infinite loop unless we throw the exception.
80
+ if (message != null && isFatal(message)) {
81
+ throw ex;
74
82
  }
83
+ }
75
84
 
76
- public void error(String domain, String key, XMLParseException e) {
77
- errors.add(e);
78
- }
85
+ public void
86
+ error(String domain, String key, XMLParseException e)
87
+ {
88
+ errors.add(e);
89
+ }
79
90
 
80
- public void fatalError(String domain, String key, XMLParseException e) {
81
- errors.add(e);
82
- }
91
+ public void
92
+ fatalError(String domain, String key, XMLParseException e)
93
+ {
94
+ errors.add(e);
95
+ }
83
96
 
84
- public void warning(String domain, String key, XMLParseException e) {
85
- errors.add(e);
86
- }
97
+ public void
98
+ warning(String domain, String key, XMLParseException e)
99
+ {
100
+ errors.add(e);
101
+ }
87
102
 
88
- /*
89
- * Determine whether this is a fatal error that should cause
90
- * the parsing to stop, or an error that can be ignored.
91
- */
92
- private static boolean isFatal(String msg) {
93
- String msgLowerCase = msg.toLowerCase();
94
- return
95
- msgLowerCase.contains("in prolog") ||
96
- msgLowerCase.contains("limit") ||
97
- msgLowerCase.contains("preceding the root element must be well-formed") ||
98
- msgLowerCase.contains("following the root element must be well-formed");
99
- }
103
+ /*
104
+ * Determine whether this is a fatal error that should cause
105
+ * the parsing to stop, or an error that can be ignored.
106
+ */
107
+ private static boolean
108
+ isFatal(String msg)
109
+ {
110
+ String msgLowerCase = msg.toLowerCase();
111
+ return
112
+ msgLowerCase.contains("in prolog") ||
113
+ msgLowerCase.contains("limit") ||
114
+ msgLowerCase.contains("preceding the root element must be well-formed") ||
115
+ msgLowerCase.contains("following the root element must be well-formed");
116
+ }
100
117
  }
@@ -17,10 +17,10 @@
17
17
  * distribute, sublicense, and/or sell copies of the Software, and to
18
18
  * permit persons to whom the Software is furnished to do so, subject to
19
19
  * the following conditions:
20
- *
20
+ *
21
21
  * The above copyright notice and this permission notice shall be
22
22
  * included in all copies or substantial portions of the Software.
23
- *
23
+ *
24
24
  * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
25
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
26
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -38,84 +38,101 @@ import org.xml.sax.SAXParseException;
38
38
 
39
39
  /**
40
40
  * Non-strict error handler for NekoHtml.
41
- *
41
+ *
42
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
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
45
  * are to be created from HTML document, which means NekoHtml is used, always errors
46
46
  * increases. As a result, even though the given fragment is correct HTML, NodeSet
47
47
  * base on the given fragment won't be created. This is why all warnings are eliminated.
48
- *
48
+ *
49
49
  * @author Yoko Harada <yokolet@gmail.com>
50
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
- }
51
+ public class NokogiriNonStrictErrorHandler4NekoHtml extends NokogiriErrorHandler
52
+ {
53
+
54
+ public
55
+ NokogiriNonStrictErrorHandler4NekoHtml(boolean nowarning)
56
+ {
57
+ super(false, nowarning);
58
+ }
59
+
60
+ public
61
+ NokogiriNonStrictErrorHandler4NekoHtml(boolean noerror, boolean nowarning)
62
+ {
63
+ super(noerror, nowarning);
64
+ }
60
65
 
61
- public void warning(SAXParseException ex) throws SAXException {
62
- //noop. NekoHtml adds too many warnings.
63
- }
66
+ public void
67
+ warning(SAXParseException ex) throws SAXException
68
+ {
69
+ //noop. NekoHtml adds too many warnings.
70
+ }
64
71
 
65
- public void error(SAXParseException ex) throws SAXException {
66
- errors.add(ex);
67
- }
72
+ public void
73
+ error(SAXParseException ex) throws SAXException
74
+ {
75
+ errors.add(ex);
76
+ }
68
77
 
69
- public void fatalError(SAXParseException ex) throws SAXException {
70
- errors.add(ex);
71
- }
78
+ public void
79
+ fatalError(SAXParseException ex) throws SAXException
80
+ {
81
+ errors.add(ex);
82
+ }
72
83
 
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
- }
84
+ /**
85
+ * Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
86
+ * is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
87
+ *
88
+ * @param domain The domain of the error. The domain can be any string but is
89
+ * suggested to be a valid URI. The domain can be used to conveniently
90
+ * specify a web site location of the relevant specification or
91
+ * document pertaining to this warning.
92
+ * @param key The error key. This key can be any string and is implementation
93
+ * dependent.
94
+ * @param e Exception.
95
+ */
96
+ public void
97
+ error(String domain, String key, XMLParseException e)
98
+ {
99
+ errors.add(e);
100
+ }
88
101
 
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
- }
102
+ /**
103
+ * Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
104
+ * is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
105
+ *
106
+ * @param domain The domain of the fatal error. The domain can be any string but is
107
+ * suggested to be a valid URI. The domain can be used to conveniently
108
+ * specify a web site location of the relevant specification or
109
+ * document pertaining to this warning.
110
+ * @param key The fatal error key. This key can be any string and is implementation
111
+ * dependent.
112
+ * @param e Exception.
113
+ */
114
+ public void
115
+ fatalError(String domain, String key, XMLParseException e)
116
+ {
117
+ errors.add(e);
118
+ }
104
119
 
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
- errors.add(e);
119
- }
120
+ /**
121
+ * Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
122
+ * is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
123
+ *
124
+ * @param domain The domain of the warning. The domain can be any string but is
125
+ * suggested to be a valid URI. The domain can be used to conveniently
126
+ * specify a web site location of the relevant specification or
127
+ * document pertaining to this warning.
128
+ * @param key The warning key. This key can be any string and is implementation
129
+ * dependent.
130
+ * @param e Exception.
131
+ */
132
+ public void
133
+ warning(String domain, String key, XMLParseException e)
134
+ {
135
+ errors.add(e);
136
+ }
120
137
 
121
138
  }
@@ -17,10 +17,10 @@
17
17
  * distribute, sublicense, and/or sell copies of the Software, and to
18
18
  * permit persons to whom the Software is furnished to do so, subject to
19
19
  * the following conditions:
20
- *
20
+ *
21
21
  * The above copyright notice and this permission notice shall be
22
22
  * included in all copies or substantial portions of the Software.
23
- *
23
+ *
24
24
  * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
25
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
26
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -39,40 +39,55 @@ import org.xml.sax.SAXParseException;
39
39
  /**
40
40
  * Strict error handler. Even though strict is specified, Nokogiri allows to go further
41
41
  * when NOERROR or/both NOWARNING is/are true.
42
- *
42
+ *
43
43
  * @author sergio
44
44
  * @author Yoko Harada <yokolet@gmail.com>
45
45
  */
46
- public class NokogiriStrictErrorHandler extends NokogiriErrorHandler {
47
- public NokogiriStrictErrorHandler(boolean noerror, boolean nowarning) {
48
- super(noerror, nowarning);
49
- }
46
+ public class NokogiriStrictErrorHandler extends NokogiriErrorHandler
47
+ {
48
+ public
49
+ NokogiriStrictErrorHandler(boolean noerror, boolean nowarning)
50
+ {
51
+ super(noerror, nowarning);
52
+ }
50
53
 
51
- public void warning(SAXParseException spex) throws SAXException {
52
- if (!nowarning) throw spex;
53
- else errors.add(spex);
54
- }
54
+ public void
55
+ warning(SAXParseException spex) throws SAXException
56
+ {
57
+ if (!nowarning) { throw spex; }
58
+ else { errors.add(spex); }
59
+ }
55
60
 
56
- public void error(SAXParseException spex) throws SAXException {
57
- if (!noerror) throw spex;
58
- else errors.add(spex);
59
- }
61
+ public void
62
+ error(SAXParseException spex) throws SAXException
63
+ {
64
+ if (!noerror) { throw spex; }
65
+ else { errors.add(spex); }
66
+ }
60
67
 
61
- public void fatalError(SAXParseException spex) throws SAXException {
62
- throw spex;
63
- }
68
+ public void
69
+ fatalError(SAXParseException spex) throws SAXException
70
+ {
71
+ throw spex;
72
+ }
64
73
 
65
- public void error(String domain, String key, XMLParseException e) throws XMLParseException {
66
- if (!noerror) throw e;
67
- else errors.add(e);
68
- }
74
+ public void
75
+ error(String domain, String key, XMLParseException e) throws XMLParseException
76
+ {
77
+ if (!noerror) { throw e; }
78
+ else { errors.add(e); }
79
+ }
69
80
 
70
- public void fatalError(String domain, String key, XMLParseException e) throws XMLParseException {
71
- throw e;
72
- }
81
+ public void
82
+ fatalError(String domain, String key, XMLParseException e) throws XMLParseException
83
+ {
84
+ throw e;
85
+ }
73
86
 
74
- public void warning(String domain, String key, XMLParseException e) throws XMLParseException {
75
- if (!nowarning) throw e;
76
- if (!usesNekoHtml(domain)) errors.add(e);
77
- }
87
+ public void
88
+ warning(String domain, String key, XMLParseException e) throws XMLParseException
89
+ {
90
+ if (!nowarning) { throw e; }
91
+ if (!usesNekoHtml(domain)) { errors.add(e); }
92
+ }
78
93
  }
@@ -17,10 +17,10 @@
17
17
  * distribute, sublicense, and/or sell copies of the Software, and to
18
18
  * permit persons to whom the Software is furnished to do so, subject to
19
19
  * the following conditions:
20
- *
20
+ *
21
21
  * The above copyright notice and this permission notice shall be
22
22
  * included in all copies or substantial portions of the Software.
23
- *
23
+ *
24
24
  * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
25
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
26
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -58,123 +58,140 @@ import static nokogiri.internals.NokogiriHelpers.nodeListToRubyArray;
58
58
 
59
59
  /**
60
60
  * Xpath function handler.
61
- *
61
+ *
62
62
  * @author sergio
63
63
  * @author Yoko Harada <yokolet@gmail.com>
64
64
  */
65
- public class NokogiriXPathFunction implements XPathFunction {
66
-
67
- private final IRubyObject handler;
68
- private final QName name;
69
- private final int arity;
70
-
71
- public static NokogiriXPathFunction create(IRubyObject handler, QName name, int arity) {
72
- return new NokogiriXPathFunction(handler, name, arity);
65
+ public class NokogiriXPathFunction implements XPathFunction
66
+ {
67
+
68
+ private final IRubyObject handler;
69
+ private final QName name;
70
+ private final int arity;
71
+
72
+ public static NokogiriXPathFunction
73
+ create(IRubyObject handler, QName name, int arity)
74
+ {
75
+ return new NokogiriXPathFunction(handler, name, arity);
76
+ }
77
+
78
+ private
79
+ NokogiriXPathFunction(IRubyObject handler, QName name, int arity)
80
+ {
81
+ this.handler = handler;
82
+ this.name = name;
83
+ this.arity = arity;
84
+ }
85
+
86
+ public Object
87
+ evaluate(List args) throws XPathFunctionException
88
+ {
89
+ if (args.size() != this.arity) {
90
+ throw new XPathFunctionException("arity does not match");
73
91
  }
74
92
 
75
- private NokogiriXPathFunction(IRubyObject handler, QName name, int arity) {
76
- this.handler = handler;
77
- this.name = name;
78
- this.arity = arity;
93
+ if (name.getNamespaceURI().equals(NokogiriNamespaceContext.NOKOGIRI_BUILTIN_URI)) {
94
+ if (name.getLocalPart().equals("css-class")) {
95
+ return builtinCssClass(args);
96
+ }
79
97
  }
80
98
 
81
- public Object evaluate(List args) throws XPathFunctionException {
82
- if (args.size() != this.arity) {
83
- throw new XPathFunctionException("arity does not match");
84
- }
85
-
86
- if (name.getNamespaceURI().equals(NokogiriNamespaceContext.NOKOGIRI_BUILTIN_URI)) {
87
- if (name.getLocalPart().equals("css-class")) {
88
- return builtinCssClass(args);
89
- }
90
- }
91
-
92
- if (this.handler.isNil()) {
93
- throw new XPathFunctionException("no custom function handler declared for '" + name + "'");
94
- }
95
-
96
- final Ruby runtime = this.handler.getRuntime();
97
- ThreadContext context = runtime.getCurrentContext();
98
- IRubyObject result = Helpers.invoke(context, this.handler, this.name.getLocalPart(),
99
- fromObjectToRubyArgs(runtime, args));
100
- return fromRubyToObject(runtime, result);
99
+ if (this.handler.isNil()) {
100
+ throw new XPathFunctionException("no custom function handler declared for '" + name + "'");
101
101
  }
102
102
 
103
- private static IRubyObject[] fromObjectToRubyArgs(final Ruby runtime, List args) {
104
- IRubyObject[] newArgs = new IRubyObject[args.size()];
105
- for(int i = 0; i < args.size(); i++) {
106
- newArgs[i] = fromObjectToRuby(runtime, args.get(i));
107
- }
108
- return newArgs;
103
+ final Ruby runtime = this.handler.getRuntime();
104
+ ThreadContext context = runtime.getCurrentContext();
105
+ IRubyObject result = Helpers.invoke(context, this.handler, this.name.getLocalPart(),
106
+ fromObjectToRubyArgs(runtime, args));
107
+ return fromRubyToObject(runtime, result);
108
+ }
109
+
110
+ private static IRubyObject[]
111
+ fromObjectToRubyArgs(final Ruby runtime, List args)
112
+ {
113
+ IRubyObject[] newArgs = new IRubyObject[args.size()];
114
+ for (int i = 0; i < args.size(); i++) {
115
+ newArgs[i] = fromObjectToRuby(runtime, args.get(i));
109
116
  }
110
-
111
- private static IRubyObject fromObjectToRuby(final Ruby runtime, Object obj) {
112
- // argument object type is one of NodeList, String, Boolean, or Double.
113
- if (obj instanceof NodeList) {
114
- IRubyObject[] nodes = nodeListToRubyArray(runtime, (NodeList) obj);
115
- return XmlNodeSet.newNodeSet(runtime, nodes);
116
- }
117
- return JavaUtil.convertJavaToUsableRubyObject(runtime, obj);
117
+ return newArgs;
118
+ }
119
+
120
+ private static IRubyObject
121
+ fromObjectToRuby(final Ruby runtime, Object obj)
122
+ {
123
+ // argument object type is one of NodeList, String, Boolean, or Double.
124
+ if (obj instanceof NodeList) {
125
+ IRubyObject[] nodes = nodeListToRubyArray(runtime, (NodeList) obj);
126
+ return XmlNodeSet.newNodeSet(runtime, nodes);
118
127
  }
119
-
120
- private static Object fromRubyToObject(final Ruby runtime, IRubyObject obj) {
121
- if (obj instanceof RubyString) return obj.asJavaString();
122
- if (obj instanceof RubyBoolean) return obj.toJava(Boolean.class);
123
- if (obj instanceof RubyFloat) return obj.toJava(Double.class);
124
- if (obj instanceof RubyInteger) {
125
- if ( obj instanceof RubyFixnum ) return RubyFixnum.fix2long(obj);
126
- return obj.toJava(java.math.BigInteger.class);
127
- }
128
- if (obj instanceof XmlNodeSet) return obj;
129
- if (obj instanceof RubyArray) {
130
- return XmlNodeSet.newNodeSet(runtime, ((RubyArray) obj).toJavaArray());
131
- }
132
- /*if (o instanceof XmlNode)*/ return ((XmlNode) obj).getNode();
128
+ return JavaUtil.convertJavaToUsableRubyObject(runtime, obj);
129
+ }
130
+
131
+ private static Object
132
+ fromRubyToObject(final Ruby runtime, IRubyObject obj)
133
+ {
134
+ if (obj instanceof RubyString) { return obj.asJavaString(); }
135
+ if (obj instanceof RubyBoolean) { return obj.toJava(Boolean.class); }
136
+ if (obj instanceof RubyFloat) { return obj.toJava(Double.class); }
137
+ if (obj instanceof RubyInteger) {
138
+ if (obj instanceof RubyFixnum) { return RubyFixnum.fix2long(obj); }
139
+ return obj.toJava(java.math.BigInteger.class);
140
+ }
141
+ if (obj instanceof XmlNodeSet) { return obj; }
142
+ if (obj instanceof RubyArray) {
143
+ return XmlNodeSet.newNodeSet(runtime, ((RubyArray) obj).toJavaArray());
144
+ }
145
+ /*if (o instanceof XmlNode)*/ return ((XmlNode) obj).getNode();
146
+ }
147
+
148
+ private static boolean
149
+ builtinCssClass(List args) throws XPathFunctionException
150
+ {
151
+ if (args.size() != 2) {
152
+ throw new XPathFunctionException("builtin function nokogiri:css-class takes two arguments");
133
153
  }
134
154
 
135
- private static boolean builtinCssClass(List args) throws XPathFunctionException {
136
- if (args.size() != 2) {
137
- throw new XPathFunctionException("builtin function nokogiri:css-class takes two arguments");
138
- }
155
+ String hay = args.get(0).toString();
156
+ String needle = args.get(1).toString();
139
157
 
140
- String hay = args.get(0).toString();
141
- String needle = args.get(1).toString();
158
+ if (needle.length() == 0) {
159
+ return true;
160
+ }
142
161
 
143
- if (needle.length() == 0) {
144
- return true;
162
+ int j = 0;
163
+ int j_lim = hay.length() - needle.length();
164
+ while (j <= j_lim) {
165
+ int k;
166
+ for (k = 0; k < needle.length(); k++) {
167
+ if (needle.charAt(k) != hay.charAt(j + k)) {
168
+ break;
145
169
  }
146
-
147
- int j = 0;
148
- int j_lim = hay.length() - needle.length();
149
- while (j <= j_lim) {
150
- int k;
151
- for (k = 0; k < needle.length(); k++) {
152
- if (needle.charAt(k) != hay.charAt(j+k)) {
153
- break;
154
- }
155
- }
156
- if (k == needle.length()) {
157
- if ((hay.length() == (j+k)) || isWhitespace(hay.charAt(j+k))) {
158
- return true ;
159
- }
160
- }
161
-
162
- /* advance str to whitespace */
163
- while (j <= j_lim && !isWhitespace(hay.charAt(j))) {
164
- j++;
165
- }
166
-
167
- /* advance str to start of next word or end of string */
168
- while (j <= j_lim && isWhitespace(hay.charAt(j))) {
169
- j++;
170
- }
170
+ }
171
+ if (k == needle.length()) {
172
+ if ((hay.length() == (j + k)) || isWhitespace(hay.charAt(j + k))) {
173
+ return true ;
171
174
  }
175
+ }
172
176
 
173
- return false;
174
- }
177
+ /* advance str to whitespace */
178
+ while (j <= j_lim && !isWhitespace(hay.charAt(j))) {
179
+ j++;
180
+ }
175
181
 
176
- private static boolean isWhitespace(char subject) {
177
- // see libxml2's xmlIsBlank_ch()
178
- return ((subject == 0x09) || (subject == 0x0A) || (subject == 0x0D) || (subject == 0x20));
182
+ /* advance str to start of next word or end of string */
183
+ while (j <= j_lim && isWhitespace(hay.charAt(j))) {
184
+ j++;
185
+ }
179
186
  }
187
+
188
+ return false;
189
+ }
190
+
191
+ private static boolean
192
+ isWhitespace(char subject)
193
+ {
194
+ // see libxml2's xmlIsBlank_ch()
195
+ return ((subject == 0x09) || (subject == 0x0A) || (subject == 0x0D) || (subject == 0x20));
196
+ }
180
197
  }