nokogiri 1.11.1 → 1.12.0.rc1

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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE-DEPENDENCIES.md +232 -11
  3. data/LICENSE.md +1 -1
  4. data/README.md +27 -21
  5. data/dependencies.yml +12 -12
  6. data/ext/nokogiri/depend +35 -474
  7. data/ext/nokogiri/extconf.rb +391 -243
  8. data/ext/nokogiri/gumbo.c +611 -0
  9. data/ext/nokogiri/{html_document.c → html4_document.c} +18 -23
  10. data/ext/nokogiri/html4_element_description.c +294 -0
  11. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  12. data/ext/nokogiri/html4_sax_parser_context.c +119 -0
  13. data/ext/nokogiri/{html_sax_push_parser.c → html4_sax_push_parser.c} +29 -27
  14. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  15. data/ext/nokogiri/nokogiri.c +206 -66
  16. data/ext/nokogiri/nokogiri.h +166 -76
  17. data/ext/nokogiri/test_global_handlers.c +3 -4
  18. data/ext/nokogiri/xml_attr.c +15 -15
  19. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  20. data/ext/nokogiri/xml_cdata.c +13 -18
  21. data/ext/nokogiri/xml_comment.c +19 -26
  22. data/ext/nokogiri/xml_document.c +258 -200
  23. data/ext/nokogiri/xml_document_fragment.c +13 -15
  24. data/ext/nokogiri/xml_dtd.c +54 -48
  25. data/ext/nokogiri/xml_element_content.c +31 -26
  26. data/ext/nokogiri/xml_element_decl.c +22 -22
  27. data/ext/nokogiri/xml_encoding_handler.c +28 -17
  28. data/ext/nokogiri/xml_entity_decl.c +32 -30
  29. data/ext/nokogiri/xml_entity_reference.c +16 -18
  30. data/ext/nokogiri/xml_namespace.c +58 -49
  31. data/ext/nokogiri/xml_node.c +473 -414
  32. data/ext/nokogiri/xml_node_set.c +174 -162
  33. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  34. data/ext/nokogiri/xml_reader.c +193 -157
  35. data/ext/nokogiri/xml_relax_ng.c +29 -23
  36. data/ext/nokogiri/xml_sax_parser.c +111 -106
  37. data/ext/nokogiri/xml_sax_parser_context.c +102 -85
  38. data/ext/nokogiri/xml_sax_push_parser.c +34 -27
  39. data/ext/nokogiri/xml_schema.c +49 -41
  40. data/ext/nokogiri/xml_syntax_error.c +21 -23
  41. data/ext/nokogiri/xml_text.c +13 -17
  42. data/ext/nokogiri/xml_xpath_context.c +86 -77
  43. data/ext/nokogiri/xslt_stylesheet.c +157 -156
  44. data/gumbo-parser/CHANGES.md +63 -0
  45. data/gumbo-parser/Makefile +101 -0
  46. data/gumbo-parser/THANKS +27 -0
  47. data/gumbo-parser/src/Makefile +17 -0
  48. data/gumbo-parser/src/README.md +41 -0
  49. data/gumbo-parser/src/ascii.c +75 -0
  50. data/gumbo-parser/src/ascii.h +115 -0
  51. data/gumbo-parser/src/attribute.c +42 -0
  52. data/gumbo-parser/src/attribute.h +17 -0
  53. data/gumbo-parser/src/char_ref.c +22225 -0
  54. data/gumbo-parser/src/char_ref.h +29 -0
  55. data/gumbo-parser/src/char_ref.rl +2154 -0
  56. data/gumbo-parser/src/error.c +626 -0
  57. data/gumbo-parser/src/error.h +148 -0
  58. data/gumbo-parser/src/foreign_attrs.c +104 -0
  59. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  60. data/gumbo-parser/src/gumbo.h +943 -0
  61. data/gumbo-parser/src/insertion_mode.h +33 -0
  62. data/gumbo-parser/src/macros.h +91 -0
  63. data/gumbo-parser/src/parser.c +4886 -0
  64. data/gumbo-parser/src/parser.h +41 -0
  65. data/gumbo-parser/src/replacement.h +33 -0
  66. data/gumbo-parser/src/string_buffer.c +103 -0
  67. data/gumbo-parser/src/string_buffer.h +68 -0
  68. data/gumbo-parser/src/string_piece.c +48 -0
  69. data/gumbo-parser/src/svg_attrs.c +174 -0
  70. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  71. data/gumbo-parser/src/svg_tags.c +137 -0
  72. data/gumbo-parser/src/svg_tags.gperf +55 -0
  73. data/gumbo-parser/src/tag.c +222 -0
  74. data/gumbo-parser/src/tag_lookup.c +382 -0
  75. data/gumbo-parser/src/tag_lookup.gperf +169 -0
  76. data/gumbo-parser/src/tag_lookup.h +13 -0
  77. data/gumbo-parser/src/token_buffer.c +79 -0
  78. data/gumbo-parser/src/token_buffer.h +71 -0
  79. data/gumbo-parser/src/token_type.h +17 -0
  80. data/gumbo-parser/src/tokenizer.c +3463 -0
  81. data/gumbo-parser/src/tokenizer.h +112 -0
  82. data/gumbo-parser/src/tokenizer_states.h +339 -0
  83. data/gumbo-parser/src/utf8.c +245 -0
  84. data/gumbo-parser/src/utf8.h +164 -0
  85. data/gumbo-parser/src/util.c +68 -0
  86. data/gumbo-parser/src/util.h +30 -0
  87. data/gumbo-parser/src/vector.c +111 -0
  88. data/gumbo-parser/src/vector.h +45 -0
  89. data/lib/nokogiri.rb +31 -50
  90. data/lib/nokogiri/css.rb +14 -14
  91. data/lib/nokogiri/css/parser.rb +2 -2
  92. data/lib/nokogiri/css/parser.y +1 -1
  93. data/lib/nokogiri/css/syntax_error.rb +1 -1
  94. data/lib/nokogiri/extension.rb +26 -0
  95. data/lib/nokogiri/gumbo.rb +14 -0
  96. data/lib/nokogiri/html.rb +31 -27
  97. data/lib/nokogiri/html4.rb +40 -0
  98. data/lib/nokogiri/{html → html4}/builder.rb +2 -2
  99. data/lib/nokogiri/{html → html4}/document.rb +4 -4
  100. data/lib/nokogiri/{html → html4}/document_fragment.rb +17 -17
  101. data/lib/nokogiri/{html → html4}/element_description.rb +1 -1
  102. data/lib/nokogiri/{html → html4}/element_description_defaults.rb +1 -1
  103. data/lib/nokogiri/{html → html4}/entity_lookup.rb +1 -1
  104. data/lib/nokogiri/{html → html4}/sax/parser.rb +11 -14
  105. data/lib/nokogiri/html4/sax/parser_context.rb +19 -0
  106. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +5 -5
  107. data/lib/nokogiri/html5.rb +473 -0
  108. data/lib/nokogiri/html5/document.rb +74 -0
  109. data/lib/nokogiri/html5/document_fragment.rb +80 -0
  110. data/lib/nokogiri/html5/node.rb +93 -0
  111. data/lib/nokogiri/version/constant.rb +1 -1
  112. data/lib/nokogiri/version/info.rb +42 -9
  113. data/lib/nokogiri/xml.rb +35 -36
  114. data/lib/nokogiri/xml/document.rb +74 -28
  115. data/lib/nokogiri/xml/node.rb +45 -47
  116. data/lib/nokogiri/xml/parse_options.rb +2 -0
  117. data/lib/nokogiri/xml/pp.rb +2 -2
  118. data/lib/nokogiri/xml/reader.rb +2 -9
  119. data/lib/nokogiri/xml/sax.rb +4 -4
  120. data/lib/nokogiri/xml/sax/document.rb +24 -30
  121. data/lib/nokogiri/xml/xpath.rb +3 -5
  122. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  123. data/lib/nokogiri/xslt.rb +16 -16
  124. data/lib/nokogiri/xslt/stylesheet.rb +1 -1
  125. data/patches/libxml2/{0002-Remove-script-macro-support.patch → 0001-Remove-script-macro-support.patch} +0 -0
  126. data/patches/libxml2/{0003-Update-entities-to-remove-handling-of-ssi.patch → 0002-Update-entities-to-remove-handling-of-ssi.patch} +0 -0
  127. data/patches/libxml2/{0004-libxml2.la-is-in-top_builddir.patch → 0003-libxml2.la-is-in-top_builddir.patch} +1 -1
  128. data/patches/libxml2/{0008-use-glibc-strlen.patch → 0004-use-glibc-strlen.patch} +0 -0
  129. data/patches/libxml2/{0009-avoid-isnan-isinf.patch → 0005-avoid-isnan-isinf.patch} +4 -4
  130. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +2511 -0
  131. data/patches/libxml2/0007-Fix-XPath-recursion-limit.patch +31 -0
  132. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +2511 -0
  133. data/patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch +19 -0
  134. data/ports/archives/libxml2-2.9.12.tar.gz +0 -0
  135. metadata +117 -109
  136. data/ext/nokogiri/html_document.h +0 -10
  137. data/ext/nokogiri/html_element_description.c +0 -279
  138. data/ext/nokogiri/html_element_description.h +0 -10
  139. data/ext/nokogiri/html_entity_lookup.c +0 -32
  140. data/ext/nokogiri/html_entity_lookup.h +0 -8
  141. data/ext/nokogiri/html_sax_parser_context.c +0 -118
  142. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  143. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  144. data/ext/nokogiri/xml_attr.h +0 -9
  145. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  146. data/ext/nokogiri/xml_cdata.h +0 -9
  147. data/ext/nokogiri/xml_comment.h +0 -9
  148. data/ext/nokogiri/xml_document.h +0 -23
  149. data/ext/nokogiri/xml_document_fragment.h +0 -10
  150. data/ext/nokogiri/xml_dtd.h +0 -10
  151. data/ext/nokogiri/xml_element_content.h +0 -10
  152. data/ext/nokogiri/xml_element_decl.h +0 -9
  153. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  154. data/ext/nokogiri/xml_entity_decl.h +0 -10
  155. data/ext/nokogiri/xml_entity_reference.h +0 -9
  156. data/ext/nokogiri/xml_io.c +0 -63
  157. data/ext/nokogiri/xml_io.h +0 -11
  158. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  159. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  160. data/ext/nokogiri/xml_namespace.h +0 -14
  161. data/ext/nokogiri/xml_node.h +0 -13
  162. data/ext/nokogiri/xml_node_set.h +0 -12
  163. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  164. data/ext/nokogiri/xml_reader.h +0 -10
  165. data/ext/nokogiri/xml_relax_ng.h +0 -9
  166. data/ext/nokogiri/xml_sax_parser.h +0 -39
  167. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  168. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  169. data/ext/nokogiri/xml_schema.h +0 -9
  170. data/ext/nokogiri/xml_syntax_error.h +0 -25
  171. data/ext/nokogiri/xml_text.h +0 -9
  172. data/ext/nokogiri/xml_xpath_context.h +0 -10
  173. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  174. data/lib/nokogiri/html/sax/parser_context.rb +0 -17
  175. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  176. data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +0 -32
  177. data/patches/libxml2/0006-htmlParseComment-treat-as-if-it-closed-the-comment.patch +0 -73
  178. data/patches/libxml2/0007-use-new-htmlParseLookupCommentEnd-to-find-comment-en.patch +0 -103
  179. data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
@@ -0,0 +1,30 @@
1
+ #ifndef GUMBO_UTIL_H_
2
+ #define GUMBO_UTIL_H_
3
+
4
+ #include <stdbool.h>
5
+ #include <stddef.h>
6
+ #include "macros.h"
7
+
8
+ #ifdef __cplusplus
9
+ extern "C" {
10
+ #endif
11
+
12
+ // Utility function for allocating & copying a null-terminated string into a
13
+ // freshly-allocated buffer. This is necessary for proper memory management; we
14
+ // have the convention that all const char* in parse tree structures are
15
+ // freshly-allocated, so if we didn't copy, we'd try to delete a literal string
16
+ // when the parse tree is destroyed.
17
+ char* gumbo_strdup(const char* str) XMALLOC NONNULL_ARGS;
18
+
19
+ void* gumbo_alloc(size_t size) XMALLOC;
20
+ void* gumbo_realloc(void* ptr, size_t size) RETURNS_NONNULL;
21
+ void gumbo_free(void* ptr);
22
+
23
+ // Debug wrapper for printf
24
+ void gumbo_debug(const char* format, ...) PRINTF(1);
25
+
26
+ #ifdef __cplusplus
27
+ }
28
+ #endif
29
+
30
+ #endif // GUMBO_UTIL_H_
@@ -0,0 +1,111 @@
1
+ /*
2
+ Copyright 2018 Craig Barnes.
3
+ Copyright 2010 Google Inc.
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ https://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ */
17
+
18
+ #include <assert.h>
19
+ #include <stdlib.h>
20
+ #include <string.h>
21
+ #include "vector.h"
22
+ #include "util.h"
23
+
24
+ void gumbo_vector_init(unsigned int initial_capacity, GumboVector* vector) {
25
+ vector->length = 0;
26
+ vector->capacity = initial_capacity;
27
+ if (initial_capacity > 0) {
28
+ vector->data = gumbo_alloc(sizeof(void*) * initial_capacity);
29
+ } else {
30
+ vector->data = NULL;
31
+ }
32
+ }
33
+
34
+ void gumbo_vector_destroy(GumboVector* vector) {
35
+ if (vector->capacity > 0) {
36
+ gumbo_free(vector->data);
37
+ }
38
+ }
39
+
40
+ static void enlarge_vector_if_full(GumboVector* vector) {
41
+ if (vector->length >= vector->capacity) {
42
+ if (vector->capacity) {
43
+ vector->capacity *= 2;
44
+ size_t num_bytes = sizeof(void*) * vector->capacity;
45
+ vector->data = gumbo_realloc(vector->data, num_bytes);
46
+ } else {
47
+ // 0-capacity vector; no previous array to deallocate.
48
+ vector->capacity = 2;
49
+ vector->data = gumbo_alloc(sizeof(void*) * vector->capacity);
50
+ }
51
+ }
52
+ }
53
+
54
+ void gumbo_vector_add(void* element, GumboVector* vector) {
55
+ enlarge_vector_if_full(vector);
56
+ assert(vector->data);
57
+ assert(vector->length < vector->capacity);
58
+ vector->data[vector->length++] = element;
59
+ }
60
+
61
+ void* gumbo_vector_pop(GumboVector* vector) {
62
+ if (vector->length == 0) {
63
+ return NULL;
64
+ }
65
+ return vector->data[--vector->length];
66
+ }
67
+
68
+ int gumbo_vector_index_of(GumboVector* vector, const void* element) {
69
+ for (unsigned int i = 0; i < vector->length; ++i) {
70
+ if (vector->data[i] == element) {
71
+ return i;
72
+ }
73
+ }
74
+ return -1;
75
+ }
76
+
77
+ void gumbo_vector_insert_at (
78
+ void* element,
79
+ unsigned int index,
80
+ GumboVector* vector
81
+ ) {
82
+ assert(index <= vector->length);
83
+ enlarge_vector_if_full(vector);
84
+ ++vector->length;
85
+ memmove (
86
+ &vector->data[index + 1],
87
+ &vector->data[index],
88
+ sizeof(void*) * (vector->length - index - 1)
89
+ );
90
+ vector->data[index] = element;
91
+ }
92
+
93
+ void gumbo_vector_remove(void* node, GumboVector* vector) {
94
+ int index = gumbo_vector_index_of(vector, node);
95
+ if (index == -1) {
96
+ return;
97
+ }
98
+ gumbo_vector_remove_at(index, vector);
99
+ }
100
+
101
+ void* gumbo_vector_remove_at(unsigned int index, GumboVector* vector) {
102
+ assert(index < vector->length);
103
+ void* result = vector->data[index];
104
+ memmove (
105
+ &vector->data[index],
106
+ &vector->data[index + 1],
107
+ sizeof(void*) * (vector->length - index - 1)
108
+ );
109
+ --vector->length;
110
+ return result;
111
+ }
@@ -0,0 +1,45 @@
1
+ #ifndef GUMBO_VECTOR_H_
2
+ #define GUMBO_VECTOR_H_
3
+
4
+ #include "gumbo.h"
5
+
6
+ #ifdef __cplusplus
7
+ extern "C" {
8
+ #endif
9
+
10
+ // Initializes a new GumboVector with the specified initial capacity.
11
+ void gumbo_vector_init(unsigned int initial_capacity, GumboVector* vector);
12
+
13
+ // Frees the memory used by a GumboVector. Does not free the contained
14
+ // pointers.
15
+ void gumbo_vector_destroy(GumboVector* vector);
16
+
17
+ // Adds a new element to a GumboVector.
18
+ void gumbo_vector_add(void* element, GumboVector* vector);
19
+
20
+ // Removes and returns the element most recently added to the GumboVector.
21
+ // Ownership is transferred to caller. Capacity is unchanged. If the vector is
22
+ // empty, NULL is returned.
23
+ void* gumbo_vector_pop(GumboVector* vector);
24
+
25
+ // Inserts an element at a specific index. This is potentially O(N) time, but
26
+ // is necessary for some of the spec's behavior.
27
+ void gumbo_vector_insert_at (
28
+ void* element,
29
+ unsigned int index,
30
+ GumboVector* vector
31
+ );
32
+
33
+ // Removes an element from the vector, or does nothing if the element is not in
34
+ // the vector.
35
+ void gumbo_vector_remove(void* element, GumboVector* vector);
36
+
37
+ // Removes and returns an element at a specific index. Note that this is
38
+ // potentially O(N) time and should be used sparingly.
39
+ void* gumbo_vector_remove_at(unsigned int index, GumboVector* vector);
40
+
41
+ #ifdef __cplusplus
42
+ }
43
+ #endif
44
+
45
+ #endif // GUMBO_VECTOR_H_
data/lib/nokogiri.rb CHANGED
@@ -2,59 +2,29 @@
2
2
  # frozen_string_literal: true
3
3
  # Modify the PATH on windows so that the external DLLs will get loaded.
4
4
 
5
- require 'rbconfig'
5
+ require "rbconfig"
6
6
 
7
7
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
8
- require 'nokogiri/jruby/dependencies'
8
+ require_relative "nokogiri/jruby/dependencies"
9
9
  end
10
10
 
11
- begin
12
- RUBY_VERSION =~ /(\d+\.\d+)/
13
- require "nokogiri/#{$1}/nokogiri"
14
- rescue LoadError => e
15
- if e.message =~ /GLIBC/
16
- warn <<~EOM
17
-
18
- ERROR: It looks like you're trying to use Nokogiri as a precompiled native gem on a system with glibc < 2.17:
19
-
20
- #{e.message}
21
-
22
- If that's the case, then please install Nokogiri via the `ruby` platform gem:
23
- gem install nokogiri --platform=ruby
24
- or:
25
- bundle config set force_ruby_platform true
26
-
27
- Please visit https://nokogiri.org/tutorials/installing_nokogiri.html for more help.
28
-
29
- EOM
30
- raise e
31
- end
32
- require 'nokogiri/nokogiri'
33
- end
34
- require 'nokogiri/version'
35
- require 'nokogiri/syntax_error'
36
- require 'nokogiri/xml'
37
- require 'nokogiri/xslt'
38
- require 'nokogiri/html'
39
- require 'nokogiri/decorators/slop'
40
- require 'nokogiri/css'
41
- require 'nokogiri/html/builder'
11
+ require_relative "nokogiri/extension"
42
12
 
43
13
  # Nokogiri parses and searches XML/HTML very quickly, and also has
44
14
  # correctly implemented CSS3 selector support as well as XPath 1.0
45
15
  # support.
46
16
  #
47
17
  # Parsing a document returns either a Nokogiri::XML::Document, or a
48
- # Nokogiri::HTML::Document depending on the kind of document you parse.
18
+ # Nokogiri::HTML4::Document depending on the kind of document you parse.
49
19
  #
50
20
  # Here is an example:
51
21
  #
52
22
  # require 'nokogiri'
53
23
  # require 'open-uri'
54
24
  #
55
- # # Get a Nokogiri::HTML:Document for the page we’re interested in...
25
+ # # Get a Nokogiri::HTML4::Document for the page we’re interested in...
56
26
  #
57
- # doc = Nokogiri::HTML(URI.open('http://www.google.com/search?q=tenderlove'))
27
+ # doc = Nokogiri::HTML4(URI.open('http://www.google.com/search?q=tenderlove'))
58
28
  #
59
29
  # # Do funky things with it using Nokogiri::XML::Node methods...
60
30
  #
@@ -70,27 +40,27 @@ module Nokogiri
70
40
  class << self
71
41
  ###
72
42
  # Parse an HTML or XML document. +string+ contains the document.
73
- def parse string, url = nil, encoding = nil, options = nil
43
+ def parse(string, url = nil, encoding = nil, options = nil)
74
44
  if string.respond_to?(:read) ||
75
45
  /^\s*<(?:!DOCTYPE\s+)?html[\s>]/i === string[0, 512]
76
46
  # Expect an HTML indicator to appear within the first 512
77
47
  # characters of a document. (<?xml ?> + <?xml-stylesheet ?>
78
48
  # shouldn't be that long)
79
- Nokogiri.HTML(string, url, encoding,
49
+ Nokogiri.HTML4(string, url, encoding,
80
50
  options || XML::ParseOptions::DEFAULT_HTML)
81
51
  else
82
52
  Nokogiri.XML(string, url, encoding,
83
53
  options || XML::ParseOptions::DEFAULT_XML)
84
- end.tap { |doc|
54
+ end.tap do |doc|
85
55
  yield doc if block_given?
86
- }
56
+ end
87
57
  end
88
58
 
89
59
  ###
90
60
  # Create a new Nokogiri::XML::DocumentFragment
91
- def make input = nil, opts = {}, &blk
61
+ def make(input = nil, opts = {}, &blk)
92
62
  if input
93
- Nokogiri::HTML.fragment(input).children.first
63
+ Nokogiri::HTML4.fragment(input).children.first
94
64
  else
95
65
  Nokogiri(&blk)
96
66
  end
@@ -119,10 +89,10 @@ module Nokogiri
119
89
  # Make sure to support some popular encoding aliases not known by
120
90
  # all iconv implementations.
121
91
  {
122
- 'Windows-31J' => 'CP932', # Windows-31J is the IANA registered name of CP932.
123
- }.each { |alias_name, name|
92
+ "Windows-31J" => "CP932", # Windows-31J is the IANA registered name of CP932.
93
+ }.each do |alias_name, name|
124
94
  EncodingHandler.alias(name, alias_name) if EncodingHandler[alias_name].nil?
125
- }
95
+ end
126
96
  end
127
97
  end
128
98
 
@@ -130,15 +100,26 @@ module Nokogiri
130
100
  end
131
101
 
132
102
  ###
133
- # Parse a document contained in +args+. Nokogiri will try to guess what
134
- # type of document you are attempting to parse. For more information, see
135
- # Nokogiri.parse
103
+ # Parse a document contained in +args+. Nokogiri will try to guess what type of document you are
104
+ # attempting to parse. For more information, see Nokogiri.parse
136
105
  #
137
- # To specify the type of document, use Nokogiri.XML or Nokogiri.HTML.
106
+ # To specify the type of document, use {Nokogiri.XML}, {Nokogiri.HTML4}, or {Nokogiri.HTML5}.
138
107
  def Nokogiri(*args, &block)
139
108
  if block_given?
140
- Nokogiri::HTML::Builder.new(&block).doc.root
109
+ Nokogiri::HTML4::Builder.new(&block).doc.root
141
110
  else
142
111
  Nokogiri.parse(*args)
143
112
  end
144
113
  end
114
+
115
+ require_relative "nokogiri/version"
116
+ require_relative "nokogiri/syntax_error"
117
+ require_relative "nokogiri/xml"
118
+ require_relative "nokogiri/xslt"
119
+ require_relative "nokogiri/html4"
120
+ require_relative "nokogiri/html"
121
+ require_relative "nokogiri/decorators/slop"
122
+ require_relative "nokogiri/css"
123
+ require_relative "nokogiri/html4/builder"
124
+
125
+ require_relative "nokogiri/html5" if Nokogiri.uses_gumbo?
data/lib/nokogiri/css.rb CHANGED
@@ -1,28 +1,28 @@
1
1
  # frozen_string_literal: true
2
- require 'nokogiri/css/node'
3
- require 'nokogiri/css/xpath_visitor'
4
- x = $-w
5
- $-w = false
6
- require 'nokogiri/css/parser'
7
- $-w = x
8
-
9
- require 'nokogiri/css/tokenizer'
10
- require 'nokogiri/css/syntax_error'
11
-
12
2
  module Nokogiri
13
3
  module CSS
14
4
  class << self
15
5
  ###
16
6
  # Parse this CSS selector in +selector+. Returns an AST.
17
- def parse selector
18
- Parser.new.parse selector
7
+ def parse(selector)
8
+ Parser.new.parse(selector)
19
9
  end
20
10
 
21
11
  ###
22
12
  # Get the XPath for +selector+.
23
- def xpath_for selector, options={}
24
- Parser.new(options[:ns] || {}).xpath_for selector, options
13
+ def xpath_for(selector, options = {})
14
+ Parser.new(options[:ns] || {}).xpath_for(selector, options)
25
15
  end
26
16
  end
27
17
  end
28
18
  end
19
+
20
+ require_relative "css/node"
21
+ require_relative "css/xpath_visitor"
22
+ x = $-w
23
+ $-w = false
24
+ require_relative "css/parser"
25
+ $-w = x
26
+
27
+ require_relative "css/tokenizer"
28
+ require_relative "css/syntax_error"
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
3
  # DO NOT MODIFY!!!!
4
- # This file is automatically generated by Racc 1.5.1
4
+ # This file is automatically generated by Racc 1.5.2
5
5
  # from Racc grammar file "".
6
6
  #
7
7
 
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'nokogiri/css/parser_extras'
11
+ require_relative "parser_extras"
12
12
 
13
13
  module Nokogiri
14
14
  module CSS
@@ -253,7 +253,7 @@ end
253
253
 
254
254
  ---- header
255
255
 
256
- require 'nokogiri/css/parser_extras'
256
+ require_relative "parser_extras"
257
257
 
258
258
  ---- inner
259
259
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'nokogiri/syntax_error'
2
+ require_relative "../syntax_error"
3
3
  module Nokogiri
4
4
  module CSS
5
5
  class SyntaxError < ::Nokogiri::SyntaxError
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # load the C or Java extension
4
+ begin
5
+ ::RUBY_VERSION =~ /(\d+\.\d+)/
6
+ require_relative "#{Regexp.last_match(1)}/nokogiri"
7
+ rescue LoadError => e
8
+ if e.message =~ /GLIBC/
9
+ warn(<<~EOM)
10
+
11
+ ERROR: It looks like you're trying to use Nokogiri as a precompiled native gem on a system with glibc < 2.17:
12
+
13
+ #{e.message}
14
+
15
+ If that's the case, then please install Nokogiri via the `ruby` platform gem:
16
+ gem install nokogiri --platform=ruby
17
+ or:
18
+ bundle config set force_ruby_platform true
19
+
20
+ Please visit https://nokogiri.org/tutorials/installing_nokogiri.html for more help.
21
+
22
+ EOM
23
+ raise e
24
+ end
25
+ require_relative "nokogiri"
26
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ module Nokogiri
3
+ module Gumbo
4
+ # The default maximum number of attributes per element.
5
+ DEFAULT_MAX_ATTRIBUTES = 400
6
+
7
+ # The default maximum number of errors for parsing a document or a fragment.
8
+ DEFAULT_MAX_ERRORS = 0
9
+
10
+ # The default maximum depth of the DOM tree produced by parsing a document
11
+ # or fragment.
12
+ DEFAULT_MAX_TREE_DEPTH = 400
13
+ end
14
+ end