nokogiri 1.11.0-x64-mingw32 → 1.11.5-x64-mingw32

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE-DEPENDENCIES.md +12 -12
  3. data/LICENSE.md +1 -1
  4. data/README.md +21 -16
  5. data/dependencies.yml +12 -12
  6. data/ext/nokogiri/depend +34 -474
  7. data/ext/nokogiri/extconf.rb +253 -183
  8. data/ext/nokogiri/html_document.c +10 -15
  9. data/ext/nokogiri/html_element_description.c +84 -71
  10. data/ext/nokogiri/html_entity_lookup.c +21 -16
  11. data/ext/nokogiri/html_sax_parser_context.c +67 -64
  12. data/ext/nokogiri/html_sax_push_parser.c +42 -34
  13. data/ext/nokogiri/include/libxml2/libxml/c14n.h +6 -4
  14. data/ext/nokogiri/include/libxml2/libxml/parser.h +9 -7
  15. data/ext/nokogiri/include/libxml2/libxml/tree.h +3 -3
  16. data/ext/nokogiri/include/libxml2/libxml/xmlIO.h +2 -0
  17. data/ext/nokogiri/include/libxml2/libxml/xmlexports.h +39 -115
  18. data/ext/nokogiri/include/libxml2/libxml/xmlschemas.h +1 -1
  19. data/ext/nokogiri/include/libxml2/libxml/xmlversion.h +6 -6
  20. data/ext/nokogiri/include/libxml2/libxml/xpath.h +1 -3
  21. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  22. data/ext/nokogiri/nokogiri.c +190 -60
  23. data/ext/nokogiri/nokogiri.h +158 -75
  24. data/ext/nokogiri/test_global_handlers.c +40 -0
  25. data/ext/nokogiri/xml_attr.c +15 -15
  26. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  27. data/ext/nokogiri/xml_cdata.c +13 -18
  28. data/ext/nokogiri/xml_comment.c +19 -26
  29. data/ext/nokogiri/xml_document.c +246 -188
  30. data/ext/nokogiri/xml_document_fragment.c +13 -15
  31. data/ext/nokogiri/xml_dtd.c +54 -48
  32. data/ext/nokogiri/xml_element_content.c +30 -27
  33. data/ext/nokogiri/xml_element_decl.c +22 -22
  34. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  35. data/ext/nokogiri/xml_entity_decl.c +32 -30
  36. data/ext/nokogiri/xml_entity_reference.c +16 -18
  37. data/ext/nokogiri/xml_namespace.c +56 -49
  38. data/ext/nokogiri/xml_node.c +371 -320
  39. data/ext/nokogiri/xml_node_set.c +168 -156
  40. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  41. data/ext/nokogiri/xml_reader.c +191 -157
  42. data/ext/nokogiri/xml_relax_ng.c +29 -23
  43. data/ext/nokogiri/xml_sax_parser.c +117 -112
  44. data/ext/nokogiri/xml_sax_parser_context.c +101 -84
  45. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  46. data/ext/nokogiri/xml_schema.c +48 -42
  47. data/ext/nokogiri/xml_syntax_error.c +42 -21
  48. data/ext/nokogiri/xml_text.c +13 -17
  49. data/ext/nokogiri/xml_xpath_context.c +134 -127
  50. data/ext/nokogiri/xslt_stylesheet.c +157 -157
  51. data/lib/nokogiri.rb +1 -22
  52. data/lib/nokogiri/2.5/nokogiri.so +0 -0
  53. data/lib/nokogiri/2.6/nokogiri.so +0 -0
  54. data/lib/nokogiri/2.7/nokogiri.so +0 -0
  55. data/lib/nokogiri/3.0/nokogiri.so +0 -0
  56. data/lib/nokogiri/css/parser.rb +1 -1
  57. data/lib/nokogiri/extension.rb +26 -0
  58. data/lib/nokogiri/html/document_fragment.rb +15 -15
  59. data/lib/nokogiri/version/constant.rb +1 -1
  60. data/lib/nokogiri/version/info.rb +32 -8
  61. data/lib/nokogiri/xml/document.rb +74 -28
  62. data/lib/nokogiri/xml/node.rb +39 -42
  63. data/lib/nokogiri/xml/reader.rb +2 -9
  64. data/lib/nokogiri/xml/xpath.rb +1 -3
  65. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  66. metadata +11 -43
  67. data/ext/nokogiri/html_document.h +0 -10
  68. data/ext/nokogiri/html_element_description.h +0 -10
  69. data/ext/nokogiri/html_entity_lookup.h +0 -8
  70. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  71. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  72. data/ext/nokogiri/xml_attr.h +0 -9
  73. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  74. data/ext/nokogiri/xml_cdata.h +0 -9
  75. data/ext/nokogiri/xml_comment.h +0 -9
  76. data/ext/nokogiri/xml_document.h +0 -23
  77. data/ext/nokogiri/xml_document_fragment.h +0 -10
  78. data/ext/nokogiri/xml_dtd.h +0 -10
  79. data/ext/nokogiri/xml_element_content.h +0 -10
  80. data/ext/nokogiri/xml_element_decl.h +0 -9
  81. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  82. data/ext/nokogiri/xml_entity_decl.h +0 -10
  83. data/ext/nokogiri/xml_entity_reference.h +0 -9
  84. data/ext/nokogiri/xml_io.c +0 -63
  85. data/ext/nokogiri/xml_io.h +0 -11
  86. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  87. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  88. data/ext/nokogiri/xml_namespace.h +0 -14
  89. data/ext/nokogiri/xml_node.h +0 -13
  90. data/ext/nokogiri/xml_node_set.h +0 -12
  91. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  92. data/ext/nokogiri/xml_reader.h +0 -10
  93. data/ext/nokogiri/xml_relax_ng.h +0 -9
  94. data/ext/nokogiri/xml_sax_parser.h +0 -39
  95. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  96. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  97. data/ext/nokogiri/xml_schema.h +0 -9
  98. data/ext/nokogiri/xml_syntax_error.h +0 -13
  99. data/ext/nokogiri/xml_text.h +0 -9
  100. data/ext/nokogiri/xml_xpath_context.h +0 -10
  101. data/ext/nokogiri/xslt_stylesheet.h +0 -14
@@ -3,9 +3,7 @@ require 'nokogiri/xml/xpath/syntax_error'
3
3
 
4
4
  module Nokogiri
5
5
  module XML
6
- class XPath
7
- # The Nokogiri::XML::Document tied to this XPath instance
8
- attr_accessor :document
6
+ module XPath
9
7
  end
10
8
  end
11
9
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  module Nokogiri
3
3
  module XML
4
- class XPath
4
+ module XPath
5
5
  class SyntaxError < XML::SyntaxError
6
6
  def to_s
7
7
  [super.chomp, str1].compact.join(': ')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokogiri
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.0
4
+ version: 1.11.5
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Mike Dalessio
@@ -17,7 +17,7 @@ authors:
17
17
  autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
- date: 2021-01-04 00:00:00.000000000 Z
20
+ date: 2021-05-20 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: racc
@@ -67,14 +67,14 @@ dependencies:
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '1.1'
70
+ version: '1.4'
71
71
  type: :development
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '1.1'
77
+ version: '1.4'
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: minitest
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -165,14 +165,14 @@ dependencies:
165
165
  requirements:
166
166
  - - "~>"
167
167
  - !ruby/object:Gem::Version
168
- version: '0.88'
168
+ version: '1.7'
169
169
  type: :development
170
170
  prerelease: false
171
171
  version_requirements: !ruby/object:Gem::Requirement
172
172
  requirements:
173
173
  - - "~>"
174
174
  - !ruby/object:Gem::Version
175
- version: '0.88'
175
+ version: '1.7'
176
176
  - !ruby/object:Gem::Dependency
177
177
  name: simplecov
178
178
  requirement: !ruby/object:Gem::Requirement
@@ -213,17 +213,16 @@ extra_rdoc_files:
213
213
  - ext/nokogiri/xml_dtd.c
214
214
  - ext/nokogiri/xml_xpath_context.c
215
215
  - ext/nokogiri/xml_attr.c
216
+ - ext/nokogiri/libxml2_backwards_compat.c
216
217
  - ext/nokogiri/xml_comment.c
217
218
  - ext/nokogiri/nokogiri.c
218
219
  - ext/nokogiri/xml_sax_parser_context.c
219
220
  - ext/nokogiri/xml_node_set.c
220
221
  - ext/nokogiri/xml_reader.c
221
- - ext/nokogiri/xml_libxml2_hacks.c
222
222
  - ext/nokogiri/xml_cdata.c
223
223
  - ext/nokogiri/xml_element_content.c
224
224
  - ext/nokogiri/html_entity_lookup.c
225
225
  - ext/nokogiri/xml_namespace.c
226
- - ext/nokogiri/xml_io.c
227
226
  - ext/nokogiri/xml_document.c
228
227
  - ext/nokogiri/xml_element_decl.c
229
228
  - ext/nokogiri/xml_schema.c
@@ -237,6 +236,7 @@ extra_rdoc_files:
237
236
  - ext/nokogiri/html_sax_push_parser.c
238
237
  - ext/nokogiri/xml_relax_ng.c
239
238
  - ext/nokogiri/xml_entity_decl.c
239
+ - ext/nokogiri/test_global_handlers.c
240
240
  - ext/nokogiri/xml_node.c
241
241
  - ext/nokogiri/xml_entity_reference.c
242
242
  - ext/nokogiri/xslt_stylesheet.c
@@ -255,15 +255,10 @@ files:
255
255
  - ext/nokogiri/depend
256
256
  - ext/nokogiri/extconf.rb
257
257
  - ext/nokogiri/html_document.c
258
- - ext/nokogiri/html_document.h
259
258
  - ext/nokogiri/html_element_description.c
260
- - ext/nokogiri/html_element_description.h
261
259
  - ext/nokogiri/html_entity_lookup.c
262
- - ext/nokogiri/html_entity_lookup.h
263
260
  - ext/nokogiri/html_sax_parser_context.c
264
- - ext/nokogiri/html_sax_parser_context.h
265
261
  - ext/nokogiri/html_sax_push_parser.c
266
- - ext/nokogiri/html_sax_push_parser.h
267
262
  - ext/nokogiri/include/libexslt/exslt.h
268
263
  - ext/nokogiri/include/libexslt/exsltconfig.h
269
264
  - ext/nokogiri/include/libexslt/exsltexports.h
@@ -335,64 +330,36 @@ files:
335
330
  - ext/nokogiri/include/libxslt/xsltexports.h
336
331
  - ext/nokogiri/include/libxslt/xsltlocale.h
337
332
  - ext/nokogiri/include/libxslt/xsltutils.h
333
+ - ext/nokogiri/libxml2_backwards_compat.c
338
334
  - ext/nokogiri/nokogiri.c
339
335
  - ext/nokogiri/nokogiri.h
336
+ - ext/nokogiri/test_global_handlers.c
340
337
  - ext/nokogiri/xml_attr.c
341
- - ext/nokogiri/xml_attr.h
342
338
  - ext/nokogiri/xml_attribute_decl.c
343
- - ext/nokogiri/xml_attribute_decl.h
344
339
  - ext/nokogiri/xml_cdata.c
345
- - ext/nokogiri/xml_cdata.h
346
340
  - ext/nokogiri/xml_comment.c
347
- - ext/nokogiri/xml_comment.h
348
341
  - ext/nokogiri/xml_document.c
349
- - ext/nokogiri/xml_document.h
350
342
  - ext/nokogiri/xml_document_fragment.c
351
- - ext/nokogiri/xml_document_fragment.h
352
343
  - ext/nokogiri/xml_dtd.c
353
- - ext/nokogiri/xml_dtd.h
354
344
  - ext/nokogiri/xml_element_content.c
355
- - ext/nokogiri/xml_element_content.h
356
345
  - ext/nokogiri/xml_element_decl.c
357
- - ext/nokogiri/xml_element_decl.h
358
346
  - ext/nokogiri/xml_encoding_handler.c
359
- - ext/nokogiri/xml_encoding_handler.h
360
347
  - ext/nokogiri/xml_entity_decl.c
361
- - ext/nokogiri/xml_entity_decl.h
362
348
  - ext/nokogiri/xml_entity_reference.c
363
- - ext/nokogiri/xml_entity_reference.h
364
- - ext/nokogiri/xml_io.c
365
- - ext/nokogiri/xml_io.h
366
- - ext/nokogiri/xml_libxml2_hacks.c
367
- - ext/nokogiri/xml_libxml2_hacks.h
368
349
  - ext/nokogiri/xml_namespace.c
369
- - ext/nokogiri/xml_namespace.h
370
350
  - ext/nokogiri/xml_node.c
371
- - ext/nokogiri/xml_node.h
372
351
  - ext/nokogiri/xml_node_set.c
373
- - ext/nokogiri/xml_node_set.h
374
352
  - ext/nokogiri/xml_processing_instruction.c
375
- - ext/nokogiri/xml_processing_instruction.h
376
353
  - ext/nokogiri/xml_reader.c
377
- - ext/nokogiri/xml_reader.h
378
354
  - ext/nokogiri/xml_relax_ng.c
379
- - ext/nokogiri/xml_relax_ng.h
380
355
  - ext/nokogiri/xml_sax_parser.c
381
- - ext/nokogiri/xml_sax_parser.h
382
356
  - ext/nokogiri/xml_sax_parser_context.c
383
- - ext/nokogiri/xml_sax_parser_context.h
384
357
  - ext/nokogiri/xml_sax_push_parser.c
385
- - ext/nokogiri/xml_sax_push_parser.h
386
358
  - ext/nokogiri/xml_schema.c
387
- - ext/nokogiri/xml_schema.h
388
359
  - ext/nokogiri/xml_syntax_error.c
389
- - ext/nokogiri/xml_syntax_error.h
390
360
  - ext/nokogiri/xml_text.c
391
- - ext/nokogiri/xml_text.h
392
361
  - ext/nokogiri/xml_xpath_context.c
393
- - ext/nokogiri/xml_xpath_context.h
394
362
  - ext/nokogiri/xslt_stylesheet.c
395
- - ext/nokogiri/xslt_stylesheet.h
396
363
  - lib/nokogiri.rb
397
364
  - lib/nokogiri/2.5/nokogiri.so
398
365
  - lib/nokogiri/2.6/nokogiri.so
@@ -408,6 +375,7 @@ files:
408
375
  - lib/nokogiri/css/tokenizer.rex
409
376
  - lib/nokogiri/css/xpath_visitor.rb
410
377
  - lib/nokogiri/decorators/slop.rb
378
+ - lib/nokogiri/extension.rb
411
379
  - lib/nokogiri/html.rb
412
380
  - lib/nokogiri/html/builder.rb
413
381
  - lib/nokogiri/html/document.rb
@@ -1,10 +0,0 @@
1
- #ifndef NOKOGIRI_HTML_DOCUMENT
2
- #define NOKOGIRI_HTML_DOCUMENT
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_html_document();
7
-
8
- extern VALUE cNokogiriHtmlDocument ;
9
-
10
- #endif
@@ -1,10 +0,0 @@
1
- #ifndef NOKOGIRI_HTML_ELEMENT_DESCRIPTION
2
- #define NOKOGIRI_HTML_ELEMENT_DESCRIPTION
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_html_element_description();
7
-
8
- extern VALUE cNokogiriHtmlElementDescription ;
9
-
10
- #endif
@@ -1,8 +0,0 @@
1
- #ifndef NOKOGIRI_HTML_ENTITY_LOOKUP
2
- #define NOKOGIRI_HTML_ENTITY_LOOKUP
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_html_entity_lookup();
7
-
8
- #endif
@@ -1,11 +0,0 @@
1
- #ifndef NOKOGIRI_HTML_SAX_PARSER_CONTEXT
2
- #define NOKOGIRI_HTML_SAX_PARSER_CONTEXT
3
-
4
- #include <nokogiri.h>
5
-
6
- extern VALUE cNokogiriHtmlSaxParserContext;
7
-
8
- void init_html_sax_parser_context();
9
-
10
- #endif
11
-
@@ -1,9 +0,0 @@
1
- #ifndef NOKOGIRI_HTML_SAX_PUSH_PARSER
2
- #define NOKOGIRI_HTML_SAX_PUSH_PARSER
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_html_sax_push_parser();
7
-
8
- extern VALUE cNokogiriHtmlSaxPushParser ;
9
- #endif
@@ -1,9 +0,0 @@
1
- #ifndef NOKOGIRI_XML_ATTR
2
- #define NOKOGIRI_XML_ATTR
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_attr();
7
-
8
- extern VALUE cNokogiriXmlAttr;
9
- #endif
@@ -1,9 +0,0 @@
1
- #ifndef NOKOGIRI_XML_ATTRIBUTE_DECL
2
- #define NOKOGIRI_XML_ATTRIBUTE_DECL
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_attribute_decl();
7
-
8
- extern VALUE cNokogiriXmlAttributeDecl;
9
- #endif
@@ -1,9 +0,0 @@
1
- #ifndef NOKOGIRI_XML_CDATA
2
- #define NOKOGIRI_XML_CDATA
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_cdata();
7
-
8
- extern VALUE cNokogiriXmlCData;
9
- #endif
@@ -1,9 +0,0 @@
1
- #ifndef NOKOGIRI_XML_COMMENT
2
- #define NOKOGIRI_XML_COMMENT
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_comment();
7
-
8
- extern VALUE cNokogiriXmlComment;
9
- #endif
@@ -1,23 +0,0 @@
1
- #ifndef NOKOGIRI_XML_DOCUMENT
2
- #define NOKOGIRI_XML_DOCUMENT
3
-
4
- #include <nokogiri.h>
5
-
6
- struct _nokogiriTuple {
7
- VALUE doc;
8
- st_table *unlinkedNodes;
9
- VALUE node_cache;
10
- };
11
- typedef struct _nokogiriTuple nokogiriTuple;
12
- typedef nokogiriTuple * nokogiriTuplePtr;
13
-
14
- void init_xml_document();
15
- VALUE Nokogiri_wrap_xml_document(VALUE klass, xmlDocPtr doc);
16
-
17
- #define DOC_RUBY_OBJECT_TEST(x) ((nokogiriTuplePtr)(x->_private))
18
- #define DOC_RUBY_OBJECT(x) (((nokogiriTuplePtr)(x->_private))->doc)
19
- #define DOC_UNLINKED_NODE_HASH(x) (((nokogiriTuplePtr)(x->_private))->unlinkedNodes)
20
- #define DOC_NODE_CACHE(x) (((nokogiriTuplePtr)(x->_private))->node_cache)
21
-
22
- extern VALUE cNokogiriXmlDocument ;
23
- #endif
@@ -1,10 +0,0 @@
1
- #ifndef NOKOGIRI_XML_DOCUMENT_FRAGMENT
2
- #define NOKOGIRI_XML_DOCUMENT_FRAGMENT
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_document_fragment();
7
-
8
- extern VALUE cNokogiriXmlDocumentFragment;
9
- #endif
10
-
@@ -1,10 +0,0 @@
1
- #ifndef NOKOGIRI_XML_DTD
2
- #define NOKOGIRI_XML_DTD
3
-
4
- #include <nokogiri.h>
5
-
6
- extern VALUE cNokogiriXmlDtd;
7
-
8
- void init_xml_dtd();
9
-
10
- #endif
@@ -1,10 +0,0 @@
1
- #ifndef NOKOGIRI_XML_ELEMENT_CONTENT
2
- #define NOKOGIRI_XML_ELEMENT_CONTENT
3
-
4
- #include <nokogiri.h>
5
-
6
-
7
- VALUE Nokogiri_wrap_element_content(VALUE doc, xmlElementContentPtr element);
8
- void init_xml_element_content();
9
-
10
- #endif
@@ -1,9 +0,0 @@
1
- #ifndef NOKOGIRI_XML_ELEMENT_DECL
2
- #define NOKOGIRI_XML_ELEMENT_DECL
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_element_decl();
7
-
8
- extern VALUE cNokogiriXmlElementDecl;
9
- #endif
@@ -1,8 +0,0 @@
1
- #ifndef NOKOGIRI_XML_ENCODING_HANDLER
2
- #define NOKOGIRI_XML_ENCODING_HANDLER
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_encoding_handler();
7
-
8
- #endif
@@ -1,10 +0,0 @@
1
- #ifndef NOKOGIRI_XML_ENTITY_DECL
2
- #define NOKOGIRI_XML_ENTITY_DECL
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_entity_decl();
7
-
8
- extern VALUE cNokogiriXmlEntityDecl;
9
- #endif
10
-
@@ -1,9 +0,0 @@
1
- #ifndef NOKOGIRI_XML_ENTITY_REFERENCE
2
- #define NOKOGIRI_XML_ENTITY_REFERENCE
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_entity_reference();
7
-
8
- extern VALUE cNokogiriXmlEntityReference;
9
- #endif
@@ -1,63 +0,0 @@
1
- #include <xml_io.h>
2
-
3
- static ID id_read, id_write;
4
-
5
- VALUE read_check(VALUE val) {
6
- VALUE *args = (VALUE *)val;
7
- return rb_funcall(args[0], id_read, 1, args[1]);
8
- }
9
-
10
- VALUE read_failed(VALUE arg, VALUE exc) {
11
- return Qundef;
12
- }
13
-
14
- int io_read_callback(void * ctx, char * buffer, int len) {
15
- VALUE string, args[2];
16
- size_t str_len, safe_len;
17
-
18
- args[0] = (VALUE)ctx;
19
- args[1] = INT2NUM(len);
20
-
21
- string = rb_rescue(read_check, (VALUE)args, read_failed, 0);
22
-
23
- if (NIL_P(string)) return 0;
24
- if (string == Qundef) return -1;
25
- if (TYPE(string) != T_STRING) return -1;
26
-
27
- str_len = (size_t)RSTRING_LEN(string);
28
- safe_len = str_len > (size_t)len ? (size_t)len : str_len;
29
- memcpy(buffer, StringValuePtr(string), safe_len);
30
-
31
- return (int)safe_len;
32
- }
33
-
34
- VALUE write_check(VALUE val) {
35
- VALUE *args = (VALUE *)val;
36
- return rb_funcall(args[0], id_write, 1, args[1]);
37
- }
38
-
39
- VALUE write_failed(VALUE arg, VALUE exc) {
40
- return Qundef;
41
- }
42
-
43
- int io_write_callback(void * ctx, char * buffer, int len) {
44
- VALUE args[2], size;
45
-
46
- args[0] = (VALUE)ctx;
47
- args[1] = rb_str_new(buffer, (long)len);
48
-
49
- size = rb_rescue(write_check, (VALUE)args, write_failed, 0);
50
-
51
- if (size == Qundef) return -1;
52
-
53
- return NUM2INT(size);
54
- }
55
-
56
- int io_close_callback(void * ctx) {
57
- return 0;
58
- }
59
-
60
- void init_nokogiri_io() {
61
- id_read = rb_intern("read");
62
- id_write = rb_intern("write");
63
- }