libxml-ruby 0.9.2-x86-mswin32-60 → 0.9.3-x86-mswin32-60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +13 -0
- data/ext/libxml/libxml.c +885 -886
- data/ext/libxml/ruby_libxml.h +70 -72
- data/ext/libxml/ruby_xml_attr.c +76 -76
- data/ext/libxml/ruby_xml_attr.h +8 -8
- data/ext/libxml/ruby_xml_attributes.c +36 -36
- data/ext/libxml/ruby_xml_attributes.h +6 -6
- data/ext/libxml/ruby_xml_document.c +133 -220
- data/ext/libxml/ruby_xml_document.h +4 -7
- data/ext/libxml/ruby_xml_dtd.c +30 -109
- data/ext/libxml/ruby_xml_dtd.h +2 -11
- data/ext/libxml/ruby_xml_error.c +10 -10
- data/ext/libxml/ruby_xml_error.h +4 -4
- data/ext/libxml/ruby_xml_html_parser.c +28 -40
- data/ext/libxml/ruby_xml_html_parser.h +4 -4
- data/ext/libxml/ruby_xml_input.c +208 -32
- data/ext/libxml/ruby_xml_input.h +7 -5
- data/ext/libxml/ruby_xml_input_cbg.c +3 -3
- data/ext/libxml/ruby_xml_node.c +217 -217
- data/ext/libxml/ruby_xml_node.h +5 -5
- data/ext/libxml/ruby_xml_ns.c +26 -26
- data/ext/libxml/ruby_xml_ns.h +4 -4
- data/ext/libxml/ruby_xml_parser.c +151 -164
- data/ext/libxml/ruby_xml_parser.h +3 -8
- data/ext/libxml/ruby_xml_parser_context.c +105 -105
- data/ext/libxml/ruby_xml_parser_context.h +4 -4
- data/ext/libxml/ruby_xml_reader.c +145 -162
- data/ext/libxml/ruby_xml_reader.h +4 -4
- data/ext/libxml/ruby_xml_relaxng.c +30 -43
- data/ext/libxml/ruby_xml_relaxng.h +2 -7
- data/ext/libxml/ruby_xml_sax_parser.c +174 -228
- data/ext/libxml/ruby_xml_sax_parser.h +12 -20
- data/ext/libxml/ruby_xml_schema.c +31 -44
- data/ext/libxml/ruby_xml_schema.h +2 -7
- data/ext/libxml/ruby_xml_state.c +6 -6
- data/ext/libxml/ruby_xml_state.h +2 -2
- data/ext/libxml/ruby_xml_xinclude.c +1 -1
- data/ext/libxml/ruby_xml_xinclude.h +3 -3
- data/ext/libxml/ruby_xml_xpath.c +1 -1
- data/ext/libxml/ruby_xml_xpath.h +3 -12
- data/ext/libxml/ruby_xml_xpath_context.c +293 -294
- data/ext/libxml/ruby_xml_xpath_context.h +3 -7
- data/ext/libxml/ruby_xml_xpath_expression.c +11 -11
- data/ext/libxml/ruby_xml_xpath_expression.h +2 -2
- data/ext/libxml/ruby_xml_xpath_object.c +52 -66
- data/ext/libxml/ruby_xml_xpath_object.h +3 -14
- data/ext/libxml/ruby_xml_xpointer.c +11 -12
- data/ext/libxml/ruby_xml_xpointer.h +5 -7
- data/ext/libxml/sax_parser_callbacks.inc +53 -36
- data/ext/libxml/version.h +2 -2
- data/ext/mingw/libxml_ruby.dll.a +0 -0
- data/ext/mingw/libxml_ruby.so +0 -0
- data/ext/vc/libxml_ruby.vcproj +1 -9
- data/lib/libxml/html_parser.rb +5 -5
- data/lib/libxml/parser.rb +4 -4
- data/lib/libxml/sax_parser.rb +24 -0
- data/test/tc_document_write.rb +2 -16
- data/test/tc_html_parser.rb +57 -5
- data/test/tc_input.rb +13 -0
- data/test/tc_parser.rb +11 -3
- data/test/tc_reader.rb +53 -34
- data/test/tc_sax_parser.rb +30 -8
- data/test/test.rb +8 -0
- data/test/test_suite.rb +1 -1
- metadata +5 -6
- data/ext/libxml/ruby_xml_encoding.c +0 -164
- data/ext/libxml/ruby_xml_encoding.h +0 -13
- data/test/tc_encoding.rb +0 -13
data/CHANGES
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
(See log/ChangeLog for more detailed changes derived directly from source control.)
|
2
2
|
|
3
|
+
== 0.9.3 / 2008-11-22 Charlie Savage
|
4
|
+
|
5
|
+
* Fixed segementation fault caused by documents being freed
|
6
|
+
before xpath results that referenced the document (take 2).
|
7
|
+
|
8
|
+
* Allowed sax parser to use io stream
|
9
|
+
|
10
|
+
* Combined encoding and input classes
|
11
|
+
|
12
|
+
* Cleaned up C code - removed remaining legacy structures,
|
13
|
+
added static to most methods, changed C namespace from ruby_xml
|
14
|
+
to rxml
|
15
|
+
|
3
16
|
== 0.9.2 / 2008-11-19 Charlie Savage
|
4
17
|
|
5
18
|
* Add support for compiled XPath expressions (donated by Pavel Valodzka)
|
data/ext/libxml/libxml.c
CHANGED
@@ -1,886 +1,885 @@
|
|
1
|
-
/* $Id: libxml.c
|
2
|
-
|
3
|
-
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
-
|
5
|
-
#include "ruby_libxml.h"
|
6
|
-
|
7
|
-
VALUE mLibXML;
|
8
|
-
VALUE mXML;
|
9
|
-
|
10
|
-
|
11
|
-
/*
|
12
|
-
* call-seq:
|
13
|
-
* XML.catalog_dump -> true
|
14
|
-
*
|
15
|
-
* Dump all the global catalog content stdout.
|
16
|
-
*/
|
17
|
-
VALUE
|
18
|
-
|
19
|
-
xmlCatalogDump(stdout);
|
20
|
-
return(Qtrue);
|
21
|
-
}
|
22
|
-
|
23
|
-
|
24
|
-
/*
|
25
|
-
* call-seq:
|
26
|
-
* XML.catalog_remove(catalog) -> true
|
27
|
-
*
|
28
|
-
* Remove the specified resource catalog.
|
29
|
-
*/
|
30
|
-
VALUE
|
31
|
-
|
32
|
-
Check_Type(cat, T_STRING);
|
33
|
-
xmlCatalogRemove((xmlChar *)StringValuePtr(cat));
|
34
|
-
return(Qtrue);
|
35
|
-
}
|
36
|
-
|
37
|
-
|
38
|
-
/*
|
39
|
-
* call-seq:
|
40
|
-
* XML.check_lib_versions -> true
|
41
|
-
*
|
42
|
-
* Check LIBXML version matches version the bindings
|
43
|
-
* were compiled to. Throws an exception if not.
|
44
|
-
*/
|
45
|
-
VALUE
|
46
|
-
|
47
|
-
xmlCheckVersion(LIBXML_VERSION);
|
48
|
-
return(Qtrue);
|
49
|
-
}
|
50
|
-
|
51
|
-
|
52
|
-
/*
|
53
|
-
* call-seq:
|
54
|
-
* XML.enabled_automata? -> (true|false)
|
55
|
-
*
|
56
|
-
* Determine whether libxml regexp automata support is enabled.
|
57
|
-
*/
|
58
|
-
VALUE
|
59
|
-
|
60
|
-
#ifdef LIBXML_AUTOMATA_ENABLED
|
61
|
-
return(Qtrue);
|
62
|
-
#else
|
63
|
-
return(Qfalse);
|
64
|
-
#endif
|
65
|
-
}
|
66
|
-
|
67
|
-
|
68
|
-
/*
|
69
|
-
* call-seq:
|
70
|
-
* XML.enabled_c14n? -> (true|false)
|
71
|
-
*
|
72
|
-
* Determine whether libxml 'canonical XML' support is enabled.
|
73
|
-
* See "Canonical XML" (http://www.w3.org/TR/xml-c14n)
|
74
|
-
*/
|
75
|
-
VALUE
|
76
|
-
|
77
|
-
#ifdef LIBXML_C14N_ENABLED
|
78
|
-
return(Qtrue);
|
79
|
-
#else
|
80
|
-
return(Qfalse);
|
81
|
-
#endif
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
/*
|
86
|
-
* call-seq:
|
87
|
-
* XML.enabled_catalog? -> (true|false)
|
88
|
-
*
|
89
|
-
* Determine whether libxml resource catalog support is enabled.
|
90
|
-
*/
|
91
|
-
VALUE
|
92
|
-
|
93
|
-
#ifdef LIBXML_CATALOG_ENABLED
|
94
|
-
return(Qtrue);
|
95
|
-
#else
|
96
|
-
return(Qfalse);
|
97
|
-
#endif
|
98
|
-
}
|
99
|
-
|
100
|
-
|
101
|
-
/*
|
102
|
-
* call-seq:
|
103
|
-
* XML.enabled_debug? -> (true|false)
|
104
|
-
*
|
105
|
-
* Determine whether libxml debugging support is enabled.
|
106
|
-
*/
|
107
|
-
VALUE
|
108
|
-
|
109
|
-
#ifdef LIBXML_DEBUG_ENABLED
|
110
|
-
return(Qtrue);
|
111
|
-
#else
|
112
|
-
return(Qfalse);
|
113
|
-
#endif
|
114
|
-
}
|
115
|
-
|
116
|
-
|
117
|
-
/*
|
118
|
-
* call-seq:
|
119
|
-
* XML.enabled_docbook? -> (true|false)
|
120
|
-
*
|
121
|
-
* Determine whether libxml docbook support is enabled.
|
122
|
-
*/
|
123
|
-
VALUE
|
124
|
-
|
125
|
-
#ifdef LIBXML_DOCB_ENABLED
|
126
|
-
return(Qtrue);
|
127
|
-
#else
|
128
|
-
return(Qfalse);
|
129
|
-
#endif
|
130
|
-
}
|
131
|
-
|
132
|
-
|
133
|
-
/*
|
134
|
-
* call-seq:
|
135
|
-
* XML.enabled_ftp? -> (true|false)
|
136
|
-
*
|
137
|
-
* Determine whether libxml ftp client support is enabled.
|
138
|
-
*/
|
139
|
-
VALUE
|
140
|
-
|
141
|
-
#ifdef LIBXML_FTP_ENABLED
|
142
|
-
return(Qtrue);
|
143
|
-
#else
|
144
|
-
return(Qfalse);
|
145
|
-
#endif
|
146
|
-
}
|
147
|
-
|
148
|
-
|
149
|
-
/*
|
150
|
-
* call-seq:
|
151
|
-
* XML.enabled_http? -> (true|false)
|
152
|
-
*
|
153
|
-
* Determine whether libxml http client support is enabled.
|
154
|
-
*/
|
155
|
-
VALUE
|
156
|
-
|
157
|
-
#ifdef LIBXML_HTTP_ENABLED
|
158
|
-
return(Qtrue);
|
159
|
-
#else
|
160
|
-
return(Qfalse);
|
161
|
-
#endif
|
162
|
-
}
|
163
|
-
|
164
|
-
|
165
|
-
/*
|
166
|
-
* call-seq:
|
167
|
-
* XML.enabled_html? -> (true|false)
|
168
|
-
*
|
169
|
-
* Determine whether libxml html support is enabled.
|
170
|
-
*/
|
171
|
-
VALUE
|
172
|
-
|
173
|
-
#ifdef LIBXML_HTML_ENABLED
|
174
|
-
return(Qtrue);
|
175
|
-
#else
|
176
|
-
return(Qfalse);
|
177
|
-
#endif
|
178
|
-
}
|
179
|
-
|
180
|
-
|
181
|
-
/*
|
182
|
-
* call-seq:
|
183
|
-
* XML.enabled_iconv? -> (true|false)
|
184
|
-
*
|
185
|
-
* Determine whether libxml iconv support is enabled.
|
186
|
-
*/
|
187
|
-
VALUE
|
188
|
-
|
189
|
-
#ifdef LIBXML_ICONV_ENABLED
|
190
|
-
return(Qtrue);
|
191
|
-
#else
|
192
|
-
return(Qfalse);
|
193
|
-
#endif
|
194
|
-
}
|
195
|
-
|
196
|
-
|
197
|
-
/*
|
198
|
-
* call-seq:
|
199
|
-
* XML.enabled_memory_debug? -> (true|false)
|
200
|
-
*
|
201
|
-
* Determine whether libxml memory location debugging support
|
202
|
-
* is enabled.
|
203
|
-
*/
|
204
|
-
VALUE
|
205
|
-
|
206
|
-
#ifdef DEBUG_MEMORY_LOCATION
|
207
|
-
return(Qtrue);
|
208
|
-
#else
|
209
|
-
return(Qfalse);
|
210
|
-
#endif
|
211
|
-
}
|
212
|
-
|
213
|
-
|
214
|
-
/*
|
215
|
-
* call-seq:
|
216
|
-
* XML.enabled_regexp? -> (true|false)
|
217
|
-
*
|
218
|
-
* Determine whether libxml regular expression support is enabled.
|
219
|
-
*/
|
220
|
-
VALUE
|
221
|
-
|
222
|
-
#ifdef LIBXML_REGEXP_ENABLED
|
223
|
-
return(Qtrue);
|
224
|
-
#else
|
225
|
-
return(Qfalse);
|
226
|
-
#endif
|
227
|
-
}
|
228
|
-
|
229
|
-
|
230
|
-
/*
|
231
|
-
* call-seq:
|
232
|
-
* XML.enabled_schemas? -> (true|false)
|
233
|
-
*
|
234
|
-
* Determine whether libxml schema support is enabled.
|
235
|
-
*/
|
236
|
-
VALUE
|
237
|
-
|
238
|
-
#ifdef LIBXML_SCHEMAS_ENABLED
|
239
|
-
return(Qtrue);
|
240
|
-
#else
|
241
|
-
return(Qfalse);
|
242
|
-
#endif
|
243
|
-
}
|
244
|
-
|
245
|
-
|
246
|
-
/*
|
247
|
-
* call-seq:
|
248
|
-
* XML.enabled_thread? -> (true|false)
|
249
|
-
*
|
250
|
-
* Determine whether libxml thread-safe semantics support
|
251
|
-
* is enabled (I think?).
|
252
|
-
*/
|
253
|
-
VALUE
|
254
|
-
|
255
|
-
#ifdef LIBXML_THREAD_ENABLED
|
256
|
-
return(Qtrue);
|
257
|
-
#else
|
258
|
-
return(Qfalse);
|
259
|
-
#endif
|
260
|
-
}
|
261
|
-
|
262
|
-
|
263
|
-
/*
|
264
|
-
* call-seq:
|
265
|
-
* XML.enabled_unicode? -> (true|false)
|
266
|
-
*
|
267
|
-
* Determine whether libxml unicode support is enabled.
|
268
|
-
*/
|
269
|
-
VALUE
|
270
|
-
|
271
|
-
#ifdef LIBXML_UNICODE_ENABLED
|
272
|
-
return(Qtrue);
|
273
|
-
#else
|
274
|
-
return(Qfalse);
|
275
|
-
#endif
|
276
|
-
}
|
277
|
-
|
278
|
-
|
279
|
-
/*
|
280
|
-
* call-seq:
|
281
|
-
* XML.enabled_xinclude? -> (true|false)
|
282
|
-
*
|
283
|
-
* Determine whether libxml xinclude support is enabled.
|
284
|
-
*/
|
285
|
-
VALUE
|
286
|
-
|
287
|
-
#ifdef LIBXML_XINCLUDE_ENABLED
|
288
|
-
return(Qtrue);
|
289
|
-
#else
|
290
|
-
return(Qfalse);
|
291
|
-
#endif
|
292
|
-
}
|
293
|
-
|
294
|
-
|
295
|
-
/*
|
296
|
-
* call-seq:
|
297
|
-
* XML.enabled_xpath? -> (true|false)
|
298
|
-
*
|
299
|
-
* Determine whether libxml xpath support is enabled.
|
300
|
-
*/
|
301
|
-
VALUE
|
302
|
-
|
303
|
-
#ifdef LIBXML_XPATH_ENABLED
|
304
|
-
return(Qtrue);
|
305
|
-
#else
|
306
|
-
return(Qfalse);
|
307
|
-
#endif
|
308
|
-
}
|
309
|
-
|
310
|
-
|
311
|
-
/*
|
312
|
-
* call-seq:
|
313
|
-
* XML.enabled_xpointer? -> (true|false)
|
314
|
-
*
|
315
|
-
* Determine whether libxml xpointer support is enabled.
|
316
|
-
*/
|
317
|
-
VALUE
|
318
|
-
|
319
|
-
#ifdef LIBXML_XPTR_ENABLED
|
320
|
-
return(Qtrue);
|
321
|
-
#else
|
322
|
-
return(Qfalse);
|
323
|
-
#endif
|
324
|
-
}
|
325
|
-
|
326
|
-
|
327
|
-
/*
|
328
|
-
* call-seq:
|
329
|
-
* XML.enabled_zlib? -> (true|false)
|
330
|
-
*
|
331
|
-
* Determine whether libxml zlib support is enabled.
|
332
|
-
*/
|
333
|
-
VALUE
|
334
|
-
|
335
|
-
#ifdef HAVE_ZLIB_H
|
336
|
-
return(Qtrue);
|
337
|
-
#else
|
338
|
-
return(Qfalse);
|
339
|
-
#endif
|
340
|
-
}
|
341
|
-
|
342
|
-
|
343
|
-
/*
|
344
|
-
* call-seq:
|
345
|
-
* XML.debug_entities -> (true|false)
|
346
|
-
*
|
347
|
-
* Determine whether included-entity debugging is enabled.
|
348
|
-
* (Requires Libxml to be compiled with debugging support)
|
349
|
-
*/
|
350
|
-
VALUE
|
351
|
-
|
352
|
-
#ifdef LIBXML_DEBUG_ENABLED
|
353
|
-
if (xmlParserDebugEntities)
|
354
|
-
return(Qtrue);
|
355
|
-
else
|
356
|
-
return(Qfalse);
|
357
|
-
#else
|
358
|
-
rb_warn("libxml was compiled with debugging turned off");
|
359
|
-
return(Qfalse);
|
360
|
-
#endif
|
361
|
-
}
|
362
|
-
|
363
|
-
|
364
|
-
/*
|
365
|
-
* call-seq:
|
366
|
-
* XML.debug_entities = true|false
|
367
|
-
*
|
368
|
-
* Enable or disable included-entity debugging.
|
369
|
-
* (Requires Libxml to be compiled with debugging support)
|
370
|
-
*/
|
371
|
-
VALUE
|
372
|
-
|
373
|
-
#ifdef LIBXML_DEBUG_ENABLED
|
374
|
-
if (TYPE(bool) == T_FALSE) {
|
375
|
-
xmlParserDebugEntities = 0;
|
376
|
-
return(Qfalse);
|
377
|
-
} else {
|
378
|
-
xmlParserDebugEntities = 1;
|
379
|
-
return(Qtrue);
|
380
|
-
}
|
381
|
-
#else
|
382
|
-
rb_warn("libxml was compiled with debugging turned off");
|
383
|
-
#endif
|
384
|
-
}
|
385
|
-
|
386
|
-
|
387
|
-
/*
|
388
|
-
* call-seq:
|
389
|
-
* XML.default_keep_blanks -> (true|false)
|
390
|
-
*
|
391
|
-
* Determine whether parsers retain whitespace by default.
|
392
|
-
*/
|
393
|
-
VALUE
|
394
|
-
|
395
|
-
if (xmlKeepBlanksDefaultValue)
|
396
|
-
return(Qtrue);
|
397
|
-
else
|
398
|
-
return(Qfalse);
|
399
|
-
}
|
400
|
-
|
401
|
-
|
402
|
-
/*
|
403
|
-
* call-seq:
|
404
|
-
* XML.default_keep_blanks = true|false
|
405
|
-
*
|
406
|
-
* Controls whether parsers retain whitespace by default.
|
407
|
-
*/
|
408
|
-
VALUE
|
409
|
-
|
410
|
-
if (TYPE(bool) == T_FALSE) {
|
411
|
-
xmlKeepBlanksDefaultValue = 0;
|
412
|
-
return(Qfalse);
|
413
|
-
} else if (TYPE(bool) == T_TRUE) {
|
414
|
-
xmlKeepBlanksDefaultValue = 1;
|
415
|
-
return(Qtrue);
|
416
|
-
} else {
|
417
|
-
rb_raise(rb_eArgError, "Invalid argument, must be a boolean");
|
418
|
-
}
|
419
|
-
}
|
420
|
-
|
421
|
-
|
422
|
-
/*
|
423
|
-
* call-seq:
|
424
|
-
* XML.default_load_external_dtd -> (true|false)
|
425
|
-
*
|
426
|
-
* Determine whether parsers load external DTDs by default.
|
427
|
-
*/
|
428
|
-
VALUE
|
429
|
-
|
430
|
-
if (xmlLoadExtDtdDefaultValue)
|
431
|
-
return(Qtrue);
|
432
|
-
else
|
433
|
-
return(Qfalse);
|
434
|
-
}
|
435
|
-
|
436
|
-
|
437
|
-
/*
|
438
|
-
* call-seq:
|
439
|
-
* XML.default_load_external_dtd = true|false
|
440
|
-
*
|
441
|
-
* Controls whether parsers load external DTDs by default.
|
442
|
-
*/
|
443
|
-
VALUE
|
444
|
-
|
445
|
-
if (TYPE(bool) == T_FALSE) {
|
446
|
-
xmlLoadExtDtdDefaultValue = 0;
|
447
|
-
return(Qfalse);
|
448
|
-
} else {
|
449
|
-
xmlLoadExtDtdDefaultValue = 1;
|
450
|
-
return(Qtrue);
|
451
|
-
}
|
452
|
-
}
|
453
|
-
|
454
|
-
|
455
|
-
/*
|
456
|
-
* call-seq:
|
457
|
-
* XML.default_line_numbers -> (true|false)
|
458
|
-
*
|
459
|
-
* Determine whether parsers retain line-numbers by default.
|
460
|
-
*/
|
461
|
-
VALUE
|
462
|
-
|
463
|
-
if (xmlLineNumbersDefaultValue)
|
464
|
-
return(Qtrue);
|
465
|
-
else
|
466
|
-
return(Qfalse);
|
467
|
-
}
|
468
|
-
|
469
|
-
|
470
|
-
/*
|
471
|
-
* call-seq:
|
472
|
-
* XML.default_line_numbers = true|false
|
473
|
-
*
|
474
|
-
* Controls whether parsers retain line-numbers by default.
|
475
|
-
*/
|
476
|
-
VALUE
|
477
|
-
|
478
|
-
if (TYPE(bool) == T_FALSE) {
|
479
|
-
xmlLineNumbersDefault(0);
|
480
|
-
return(Qfalse);
|
481
|
-
} else {
|
482
|
-
xmlLineNumbersDefault(1);
|
483
|
-
return(Qtrue);
|
484
|
-
}
|
485
|
-
}
|
486
|
-
|
487
|
-
|
488
|
-
/*
|
489
|
-
* call-seq:
|
490
|
-
* XML.default_pedantic_parser -> (true|false)
|
491
|
-
*
|
492
|
-
* Determine whether parsers are pedantic by default.
|
493
|
-
*/
|
494
|
-
VALUE
|
495
|
-
|
496
|
-
if (xmlPedanticParserDefaultValue)
|
497
|
-
return(Qtrue);
|
498
|
-
else
|
499
|
-
return(Qfalse);
|
500
|
-
}
|
501
|
-
|
502
|
-
|
503
|
-
/*
|
504
|
-
* call-seq:
|
505
|
-
* XML.default_pedantic_parser = true|false
|
506
|
-
*
|
507
|
-
* Controls whether parsers are pedantic by default.
|
508
|
-
*/
|
509
|
-
VALUE
|
510
|
-
|
511
|
-
if (TYPE(bool) == T_FALSE) {
|
512
|
-
xmlPedanticParserDefault(0);
|
513
|
-
return(Qfalse);
|
514
|
-
} else {
|
515
|
-
xmlPedanticParserDefault(1);
|
516
|
-
return(Qtrue);
|
517
|
-
}
|
518
|
-
}
|
519
|
-
|
520
|
-
|
521
|
-
/*
|
522
|
-
* call-seq:
|
523
|
-
* XML.default_substitute_entities -> (true|false)
|
524
|
-
*
|
525
|
-
* Determine whether parsers perform inline entity substitution
|
526
|
-
* (for external entities) by default.
|
527
|
-
*/
|
528
|
-
VALUE
|
529
|
-
|
530
|
-
if (xmlSubstituteEntitiesDefaultValue)
|
531
|
-
return(Qtrue);
|
532
|
-
else
|
533
|
-
return(Qfalse);
|
534
|
-
}
|
535
|
-
|
536
|
-
|
537
|
-
/*
|
538
|
-
* call-seq:
|
539
|
-
* XML.default_substitute_entities = true|false
|
540
|
-
*
|
541
|
-
* Controls whether parsers perform inline entity substitution
|
542
|
-
* (for external entities) by default.
|
543
|
-
*/
|
544
|
-
VALUE
|
545
|
-
|
546
|
-
if (TYPE(bool) == T_FALSE) {
|
547
|
-
xmlSubstituteEntitiesDefault(0);
|
548
|
-
return(Qfalse);
|
549
|
-
} else {
|
550
|
-
xmlSubstituteEntitiesDefault(1);
|
551
|
-
return(Qtrue);
|
552
|
-
}
|
553
|
-
}
|
554
|
-
|
555
|
-
|
556
|
-
/*
|
557
|
-
* call-seq:
|
558
|
-
* XML.default_tree_indent_string -> "string"
|
559
|
-
*
|
560
|
-
* Obtain the default string used by parsers to indent the XML tree
|
561
|
-
* for output.
|
562
|
-
*/
|
563
|
-
VALUE
|
564
|
-
|
565
|
-
if (xmlTreeIndentString == NULL)
|
566
|
-
return(Qnil);
|
567
|
-
else
|
568
|
-
return(rb_str_new2(xmlTreeIndentString));
|
569
|
-
}
|
570
|
-
|
571
|
-
|
572
|
-
/*
|
573
|
-
* call-seq:
|
574
|
-
* XML.default_tree_indent_string = "string"
|
575
|
-
*
|
576
|
-
* Set the default string used by parsers to indent the XML tree
|
577
|
-
* for output.
|
578
|
-
*/
|
579
|
-
VALUE
|
580
|
-
|
581
|
-
Check_Type(string, T_STRING);
|
582
|
-
xmlTreeIndentString = xmlStrdup(StringValuePtr(string));
|
583
|
-
return(string);
|
584
|
-
}
|
585
|
-
|
586
|
-
|
587
|
-
/*
|
588
|
-
* call-seq:
|
589
|
-
* XML.default_validity_checking -> (true|false)
|
590
|
-
*
|
591
|
-
* Determine whether parsers perform XML validation by default.
|
592
|
-
*/
|
593
|
-
VALUE
|
594
|
-
|
595
|
-
if (xmlDoValidityCheckingDefaultValue)
|
596
|
-
return(Qtrue);
|
597
|
-
else
|
598
|
-
return(Qfalse);
|
599
|
-
}
|
600
|
-
|
601
|
-
|
602
|
-
/*
|
603
|
-
* call-seq:
|
604
|
-
* XML.default_validity_checking = true|false
|
605
|
-
*
|
606
|
-
* Controls whether parsers perform XML validation by default.
|
607
|
-
*/
|
608
|
-
VALUE
|
609
|
-
|
610
|
-
if (TYPE(bool) == T_FALSE) {
|
611
|
-
xmlDoValidityCheckingDefaultValue = 0;
|
612
|
-
return(Qfalse);
|
613
|
-
} else {
|
614
|
-
xmlDoValidityCheckingDefaultValue = 1;
|
615
|
-
return(Qtrue);
|
616
|
-
}
|
617
|
-
}
|
618
|
-
|
619
|
-
|
620
|
-
/*
|
621
|
-
* call-seq:
|
622
|
-
* XML.default_warnings -> (true|false)
|
623
|
-
*
|
624
|
-
* Determine whether parsers output warnings by default.
|
625
|
-
*/
|
626
|
-
VALUE
|
627
|
-
|
628
|
-
if (xmlGetWarningsDefaultValue)
|
629
|
-
return(Qtrue);
|
630
|
-
else
|
631
|
-
return(Qfalse);
|
632
|
-
}
|
633
|
-
|
634
|
-
|
635
|
-
/*
|
636
|
-
* call-seq:
|
637
|
-
* XML.default_warnings = true|false
|
638
|
-
*
|
639
|
-
* Controls whether parsers output warnings by default.
|
640
|
-
*/
|
641
|
-
VALUE
|
642
|
-
|
643
|
-
if (TYPE(bool) == T_FALSE) {
|
644
|
-
xmlGetWarningsDefaultValue = 0;
|
645
|
-
return(Qfalse);
|
646
|
-
} else {
|
647
|
-
xmlGetWarningsDefaultValue = 1;
|
648
|
-
return(Qtrue);
|
649
|
-
}
|
650
|
-
}
|
651
|
-
|
652
|
-
|
653
|
-
/*
|
654
|
-
* call-seq:
|
655
|
-
* XML.default_compression -> (true|false)
|
656
|
-
*
|
657
|
-
* Determine whether parsers use Zlib compression by default
|
658
|
-
* (requires libxml to be compiled with Zlib support).
|
659
|
-
*/
|
660
|
-
VALUE
|
661
|
-
|
662
|
-
#ifdef HAVE_ZLIB_H
|
663
|
-
return(INT2FIX(xmlGetCompressMode()));
|
664
|
-
#else
|
665
|
-
rb_warn("libxml was compiled without zlib support");
|
666
|
-
return(Qfalse);
|
667
|
-
#endif
|
668
|
-
}
|
669
|
-
|
670
|
-
|
671
|
-
/*
|
672
|
-
* call-seq:
|
673
|
-
* XML.default_compression = true|false
|
674
|
-
*
|
675
|
-
* Controls whether parsers use Zlib compression by default
|
676
|
-
* (requires libxml to be compiled with Zlib support).
|
677
|
-
*/
|
678
|
-
VALUE
|
679
|
-
|
680
|
-
#ifdef HAVE_ZLIB_H
|
681
|
-
Check_Type(num, T_FIXNUM);
|
682
|
-
xmlSetCompressMode(FIX2INT(num));
|
683
|
-
return(num);
|
684
|
-
#else
|
685
|
-
rb_warn("libxml was compiled without zlib support");
|
686
|
-
return(Qfalse);
|
687
|
-
#endif
|
688
|
-
}
|
689
|
-
|
690
|
-
|
691
|
-
/*
|
692
|
-
* call-seq:
|
693
|
-
* XML.features -> ["feature", ..., "feature"]
|
694
|
-
*
|
695
|
-
* Obtains an array of strings representing features supported
|
696
|
-
* (and enabled) by the installed libxml.
|
697
|
-
*/
|
698
|
-
VALUE
|
699
|
-
|
700
|
-
VALUE arr, str;
|
701
|
-
int i, len = MAX_LIBXML_FEATURES_LEN;
|
702
|
-
char **list = NULL;
|
703
|
-
|
704
|
-
list = ALLOC_N(char *,MAX_LIBXML_FEATURES_LEN);
|
705
|
-
MEMZERO(list, char *, MAX_LIBXML_FEATURES_LEN);
|
706
|
-
|
707
|
-
arr = rb_ary_new();
|
708
|
-
if (xmlGetFeaturesList(&len, (const char **)list) == -1)
|
709
|
-
return Qnil;
|
710
|
-
|
711
|
-
for (i = 0; i < len; i++) {
|
712
|
-
str = rb_str_new2((const char *)list[i]);
|
713
|
-
rb_gc_unregister_address(&str);
|
714
|
-
rb_ary_push(arr, str);
|
715
|
-
}
|
716
|
-
|
717
|
-
if (len == MAX_LIBXML_FEATURES_LEN)
|
718
|
-
rb_warn("Please contact libxml-devel@rubyforge.org and ask to have the \"MAX_LIBXML_FEATURES_LEN increased\" because you could possibly be seeing an incomplete list");
|
719
|
-
|
720
|
-
ruby_xfree(list);
|
721
|
-
return(arr);
|
722
|
-
}
|
723
|
-
|
724
|
-
|
725
|
-
/*
|
726
|
-
* call-seq:
|
727
|
-
* XML.indent_tree_output -> (true|false)
|
728
|
-
*
|
729
|
-
* Determines whether XML output will be indented
|
730
|
-
* (using the string supplied to +default_indent_tree_string+)
|
731
|
-
*/
|
732
|
-
VALUE
|
733
|
-
|
734
|
-
if (xmlIndentTreeOutput)
|
735
|
-
return(Qtrue);
|
736
|
-
else
|
737
|
-
return(Qfalse);
|
738
|
-
}
|
739
|
-
|
740
|
-
|
741
|
-
/*
|
742
|
-
* call-seq:
|
743
|
-
* XML.indent_tree_output = true|false
|
744
|
-
*
|
745
|
-
* Controls whether XML output will be indented
|
746
|
-
* (using the string supplied to +default_indent_tree_string+)
|
747
|
-
*/
|
748
|
-
VALUE
|
749
|
-
|
750
|
-
if (TYPE(bool) == T_TRUE) {
|
751
|
-
xmlIndentTreeOutput = 1;
|
752
|
-
return(Qtrue);
|
753
|
-
} else if (TYPE(bool) == T_FALSE) {
|
754
|
-
xmlIndentTreeOutput = 0;
|
755
|
-
return(Qfalse);
|
756
|
-
} else {
|
757
|
-
rb_raise(rb_eArgError, "Invalid argument, must be boolean");
|
758
|
-
}
|
759
|
-
}
|
760
|
-
|
761
|
-
/*
|
762
|
-
* call-seq:
|
763
|
-
* XML.memory_dump -> (true|false)
|
764
|
-
*
|
765
|
-
* Perform a parser memory dump (requires memory debugging
|
766
|
-
* support in libxml).
|
767
|
-
*/
|
768
|
-
VALUE
|
769
|
-
|
770
|
-
#ifdef DEBUG_MEMORY_LOCATION
|
771
|
-
xmlMemoryDump();
|
772
|
-
return(Qtrue);
|
773
|
-
#else
|
774
|
-
rb_warn("libxml was compiled without memory debugging support");
|
775
|
-
return(Qfalse);
|
776
|
-
#endif
|
777
|
-
}
|
778
|
-
|
779
|
-
|
780
|
-
/*
|
781
|
-
* call-seq:
|
782
|
-
* XML.memory_used -> num_bytes
|
783
|
-
*
|
784
|
-
* Perform a parser memory dump (requires memory debugging
|
785
|
-
* support in libxml).
|
786
|
-
*/
|
787
|
-
VALUE
|
788
|
-
|
789
|
-
#ifdef DEBUG_MEMORY_LOCATION
|
790
|
-
return(INT2NUM(xmlMemUsed()));
|
791
|
-
#else
|
792
|
-
rb_warn("libxml was compiled without memory debugging support");
|
793
|
-
return(Qfalse);
|
794
|
-
#endif
|
795
|
-
}
|
796
|
-
|
797
|
-
#if defined(_WIN32)
|
798
|
-
__declspec(dllexport)
|
799
|
-
#endif
|
800
|
-
void
|
801
|
-
Init_libxml_ruby(void) {
|
802
|
-
mLibXML = rb_define_module("LibXML");
|
803
|
-
mXML = rb_define_module_under(mLibXML, "XML");
|
804
|
-
|
805
|
-
/* Constants */
|
806
|
-
rb_define_const(mXML, "LIBXML_VERSION", rb_str_new2(LIBXML_DOTTED_VERSION));
|
807
|
-
rb_define_const(mXML, "VERSION", rb_str_new2(RUBY_LIBXML_VERSION));
|
808
|
-
rb_define_const(mXML, "VERNUM", INT2NUM(RUBY_LIBXML_VERNUM));
|
809
|
-
rb_define_const(mXML, "XML_NAMESPACE", rb_str_new2((const char*)XML_XML_NAMESPACE));
|
810
|
-
|
811
|
-
rb_define_module_function(mXML, "enabled_automata?",
|
812
|
-
rb_define_module_function(mXML, "enabled_c14n?",
|
813
|
-
rb_define_module_function(mXML, "enabled_catalog?",
|
814
|
-
rb_define_module_function(mXML, "enabled_debug?",
|
815
|
-
rb_define_module_function(mXML, "enabled_docbook?",
|
816
|
-
rb_define_module_function(mXML, "enabled_ftp?",
|
817
|
-
rb_define_module_function(mXML, "enabled_http?",
|
818
|
-
rb_define_module_function(mXML, "enabled_html?",
|
819
|
-
rb_define_module_function(mXML, "enabled_iconv?",
|
820
|
-
rb_define_module_function(mXML, "enabled_memory_debug?",
|
821
|
-
rb_define_module_function(mXML, "enabled_regexp?",
|
822
|
-
rb_define_module_function(mXML, "enabled_schemas?",
|
823
|
-
rb_define_module_function(mXML, "enabled_thread?",
|
824
|
-
rb_define_module_function(mXML, "enabled_unicode?",
|
825
|
-
rb_define_module_function(mXML, "enabled_xinclude?",
|
826
|
-
rb_define_module_function(mXML, "enabled_xpath?",
|
827
|
-
rb_define_module_function(mXML, "enabled_xpointer?",
|
828
|
-
rb_define_module_function(mXML, "enabled_zlib?",
|
829
|
-
|
830
|
-
rb_define_module_function(mXML, "catalog_dump",
|
831
|
-
rb_define_module_function(mXML, "catalog_remove",
|
832
|
-
rb_define_module_function(mXML, "check_lib_versions",
|
833
|
-
rb_define_module_function(mXML, "debug_entities",
|
834
|
-
rb_define_module_function(mXML, "debug_entities=",
|
835
|
-
rb_define_module_function(mXML, "default_compression",
|
836
|
-
rb_define_module_function(mXML, "default_compression=",
|
837
|
-
rb_define_module_function(mXML, "default_keep_blanks",
|
838
|
-
rb_define_module_function(mXML, "default_keep_blanks=",
|
839
|
-
rb_define_module_function(mXML, "default_load_external_dtd",
|
840
|
-
rb_define_module_function(mXML, "default_load_external_dtd=",
|
841
|
-
rb_define_module_function(mXML, "default_line_numbers",
|
842
|
-
rb_define_module_function(mXML, "default_line_numbers=",
|
843
|
-
rb_define_module_function(mXML, "default_pedantic_parser",
|
844
|
-
rb_define_module_function(mXML, "default_pedantic_parser=",
|
845
|
-
rb_define_module_function(mXML, "default_substitute_entities",
|
846
|
-
rb_define_module_function(mXML, "default_substitute_entities=",
|
847
|
-
rb_define_module_function(mXML, "default_tree_indent_string",
|
848
|
-
rb_define_module_function(mXML, "default_tree_indent_string=",
|
849
|
-
rb_define_module_function(mXML, "default_validity_checking",
|
850
|
-
rb_define_module_function(mXML, "default_validity_checking=",
|
851
|
-
rb_define_module_function(mXML, "default_warnings",
|
852
|
-
rb_define_module_function(mXML, "default_warnings=",
|
853
|
-
rb_define_module_function(mXML, "features",
|
854
|
-
rb_define_module_function(mXML, "indent_tree_output",
|
855
|
-
rb_define_module_function(mXML, "indent_tree_output=",
|
856
|
-
rb_define_module_function(mXML, "memory_dump",
|
857
|
-
rb_define_module_function(mXML, "memory_used",
|
858
|
-
|
859
|
-
/* Now initialize all the other modules */
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
}
|
1
|
+
/* $Id: libxml.c 615 2008-11-22 08:36:27Z cfis $ */
|
2
|
+
|
3
|
+
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
+
|
5
|
+
#include "ruby_libxml.h"
|
6
|
+
|
7
|
+
VALUE mLibXML;
|
8
|
+
VALUE mXML;
|
9
|
+
|
10
|
+
|
11
|
+
/*
|
12
|
+
* call-seq:
|
13
|
+
* XML.catalog_dump -> true
|
14
|
+
*
|
15
|
+
* Dump all the global catalog content stdout.
|
16
|
+
*/
|
17
|
+
static VALUE
|
18
|
+
rxml_catalog_dump(VALUE self) {
|
19
|
+
xmlCatalogDump(stdout);
|
20
|
+
return(Qtrue);
|
21
|
+
}
|
22
|
+
|
23
|
+
|
24
|
+
/*
|
25
|
+
* call-seq:
|
26
|
+
* XML.catalog_remove(catalog) -> true
|
27
|
+
*
|
28
|
+
* Remove the specified resource catalog.
|
29
|
+
*/
|
30
|
+
static VALUE
|
31
|
+
rxml_catalog_remove(VALUE self, VALUE cat) {
|
32
|
+
Check_Type(cat, T_STRING);
|
33
|
+
xmlCatalogRemove((xmlChar *)StringValuePtr(cat));
|
34
|
+
return(Qtrue);
|
35
|
+
}
|
36
|
+
|
37
|
+
|
38
|
+
/*
|
39
|
+
* call-seq:
|
40
|
+
* XML.check_lib_versions -> true
|
41
|
+
*
|
42
|
+
* Check LIBXML version matches version the bindings
|
43
|
+
* were compiled to. Throws an exception if not.
|
44
|
+
*/
|
45
|
+
static VALUE
|
46
|
+
rxml_check_lib_versions(VALUE class) {
|
47
|
+
xmlCheckVersion(LIBXML_VERSION);
|
48
|
+
return(Qtrue);
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
/*
|
53
|
+
* call-seq:
|
54
|
+
* XML.enabled_automata? -> (true|false)
|
55
|
+
*
|
56
|
+
* Determine whether libxml regexp automata support is enabled.
|
57
|
+
*/
|
58
|
+
static VALUE
|
59
|
+
rxml_enabled_automata_q(VALUE class) {
|
60
|
+
#ifdef LIBXML_AUTOMATA_ENABLED
|
61
|
+
return(Qtrue);
|
62
|
+
#else
|
63
|
+
return(Qfalse);
|
64
|
+
#endif
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
/*
|
69
|
+
* call-seq:
|
70
|
+
* XML.enabled_c14n? -> (true|false)
|
71
|
+
*
|
72
|
+
* Determine whether libxml 'canonical XML' support is enabled.
|
73
|
+
* See "Canonical XML" (http://www.w3.org/TR/xml-c14n)
|
74
|
+
*/
|
75
|
+
static VALUE
|
76
|
+
rxml_enabled_c14n_q(VALUE class) {
|
77
|
+
#ifdef LIBXML_C14N_ENABLED
|
78
|
+
return(Qtrue);
|
79
|
+
#else
|
80
|
+
return(Qfalse);
|
81
|
+
#endif
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
/*
|
86
|
+
* call-seq:
|
87
|
+
* XML.enabled_catalog? -> (true|false)
|
88
|
+
*
|
89
|
+
* Determine whether libxml resource catalog support is enabled.
|
90
|
+
*/
|
91
|
+
static VALUE
|
92
|
+
rxml_enabled_catalog_q(VALUE class) {
|
93
|
+
#ifdef LIBXML_CATALOG_ENABLED
|
94
|
+
return(Qtrue);
|
95
|
+
#else
|
96
|
+
return(Qfalse);
|
97
|
+
#endif
|
98
|
+
}
|
99
|
+
|
100
|
+
|
101
|
+
/*
|
102
|
+
* call-seq:
|
103
|
+
* XML.enabled_debug? -> (true|false)
|
104
|
+
*
|
105
|
+
* Determine whether libxml debugging support is enabled.
|
106
|
+
*/
|
107
|
+
static VALUE
|
108
|
+
rxml_enabled_debug_q(VALUE class) {
|
109
|
+
#ifdef LIBXML_DEBUG_ENABLED
|
110
|
+
return(Qtrue);
|
111
|
+
#else
|
112
|
+
return(Qfalse);
|
113
|
+
#endif
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
/*
|
118
|
+
* call-seq:
|
119
|
+
* XML.enabled_docbook? -> (true|false)
|
120
|
+
*
|
121
|
+
* Determine whether libxml docbook support is enabled.
|
122
|
+
*/
|
123
|
+
static VALUE
|
124
|
+
rxml_enabled_docbook_q(VALUE class) {
|
125
|
+
#ifdef LIBXML_DOCB_ENABLED
|
126
|
+
return(Qtrue);
|
127
|
+
#else
|
128
|
+
return(Qfalse);
|
129
|
+
#endif
|
130
|
+
}
|
131
|
+
|
132
|
+
|
133
|
+
/*
|
134
|
+
* call-seq:
|
135
|
+
* XML.enabled_ftp? -> (true|false)
|
136
|
+
*
|
137
|
+
* Determine whether libxml ftp client support is enabled.
|
138
|
+
*/
|
139
|
+
static VALUE
|
140
|
+
rxml_enabled_ftp_q(VALUE class) {
|
141
|
+
#ifdef LIBXML_FTP_ENABLED
|
142
|
+
return(Qtrue);
|
143
|
+
#else
|
144
|
+
return(Qfalse);
|
145
|
+
#endif
|
146
|
+
}
|
147
|
+
|
148
|
+
|
149
|
+
/*
|
150
|
+
* call-seq:
|
151
|
+
* XML.enabled_http? -> (true|false)
|
152
|
+
*
|
153
|
+
* Determine whether libxml http client support is enabled.
|
154
|
+
*/
|
155
|
+
static VALUE
|
156
|
+
rxml_enabled_http_q(VALUE class) {
|
157
|
+
#ifdef LIBXML_HTTP_ENABLED
|
158
|
+
return(Qtrue);
|
159
|
+
#else
|
160
|
+
return(Qfalse);
|
161
|
+
#endif
|
162
|
+
}
|
163
|
+
|
164
|
+
|
165
|
+
/*
|
166
|
+
* call-seq:
|
167
|
+
* XML.enabled_html? -> (true|false)
|
168
|
+
*
|
169
|
+
* Determine whether libxml html support is enabled.
|
170
|
+
*/
|
171
|
+
static VALUE
|
172
|
+
rxml_enabled_html_q(VALUE class) {
|
173
|
+
#ifdef LIBXML_HTML_ENABLED
|
174
|
+
return(Qtrue);
|
175
|
+
#else
|
176
|
+
return(Qfalse);
|
177
|
+
#endif
|
178
|
+
}
|
179
|
+
|
180
|
+
|
181
|
+
/*
|
182
|
+
* call-seq:
|
183
|
+
* XML.enabled_iconv? -> (true|false)
|
184
|
+
*
|
185
|
+
* Determine whether libxml iconv support is enabled.
|
186
|
+
*/
|
187
|
+
static VALUE
|
188
|
+
rxml_enabled_iconv_q(VALUE class) {
|
189
|
+
#ifdef LIBXML_ICONV_ENABLED
|
190
|
+
return(Qtrue);
|
191
|
+
#else
|
192
|
+
return(Qfalse);
|
193
|
+
#endif
|
194
|
+
}
|
195
|
+
|
196
|
+
|
197
|
+
/*
|
198
|
+
* call-seq:
|
199
|
+
* XML.enabled_memory_debug? -> (true|false)
|
200
|
+
*
|
201
|
+
* Determine whether libxml memory location debugging support
|
202
|
+
* is enabled.
|
203
|
+
*/
|
204
|
+
static VALUE
|
205
|
+
rxml_enabled_memory_debug_location_q(VALUE class) {
|
206
|
+
#ifdef DEBUG_MEMORY_LOCATION
|
207
|
+
return(Qtrue);
|
208
|
+
#else
|
209
|
+
return(Qfalse);
|
210
|
+
#endif
|
211
|
+
}
|
212
|
+
|
213
|
+
|
214
|
+
/*
|
215
|
+
* call-seq:
|
216
|
+
* XML.enabled_regexp? -> (true|false)
|
217
|
+
*
|
218
|
+
* Determine whether libxml regular expression support is enabled.
|
219
|
+
*/
|
220
|
+
static VALUE
|
221
|
+
rxml_enabled_regexp_q(VALUE class) {
|
222
|
+
#ifdef LIBXML_REGEXP_ENABLED
|
223
|
+
return(Qtrue);
|
224
|
+
#else
|
225
|
+
return(Qfalse);
|
226
|
+
#endif
|
227
|
+
}
|
228
|
+
|
229
|
+
|
230
|
+
/*
|
231
|
+
* call-seq:
|
232
|
+
* XML.enabled_schemas? -> (true|false)
|
233
|
+
*
|
234
|
+
* Determine whether libxml schema support is enabled.
|
235
|
+
*/
|
236
|
+
static VALUE
|
237
|
+
rxml_enabled_schemas_q(VALUE class) {
|
238
|
+
#ifdef LIBXML_SCHEMAS_ENABLED
|
239
|
+
return(Qtrue);
|
240
|
+
#else
|
241
|
+
return(Qfalse);
|
242
|
+
#endif
|
243
|
+
}
|
244
|
+
|
245
|
+
|
246
|
+
/*
|
247
|
+
* call-seq:
|
248
|
+
* XML.enabled_thread? -> (true|false)
|
249
|
+
*
|
250
|
+
* Determine whether libxml thread-safe semantics support
|
251
|
+
* is enabled (I think?).
|
252
|
+
*/
|
253
|
+
static VALUE
|
254
|
+
rxml_enabled_thread_q(VALUE class) {
|
255
|
+
#ifdef LIBXML_THREAD_ENABLED
|
256
|
+
return(Qtrue);
|
257
|
+
#else
|
258
|
+
return(Qfalse);
|
259
|
+
#endif
|
260
|
+
}
|
261
|
+
|
262
|
+
|
263
|
+
/*
|
264
|
+
* call-seq:
|
265
|
+
* XML.enabled_unicode? -> (true|false)
|
266
|
+
*
|
267
|
+
* Determine whether libxml unicode support is enabled.
|
268
|
+
*/
|
269
|
+
static VALUE
|
270
|
+
rxml_enabled_unicode_q(VALUE class) {
|
271
|
+
#ifdef LIBXML_UNICODE_ENABLED
|
272
|
+
return(Qtrue);
|
273
|
+
#else
|
274
|
+
return(Qfalse);
|
275
|
+
#endif
|
276
|
+
}
|
277
|
+
|
278
|
+
|
279
|
+
/*
|
280
|
+
* call-seq:
|
281
|
+
* XML.enabled_xinclude? -> (true|false)
|
282
|
+
*
|
283
|
+
* Determine whether libxml xinclude support is enabled.
|
284
|
+
*/
|
285
|
+
static VALUE
|
286
|
+
rxml_enabled_xinclude_q(VALUE class) {
|
287
|
+
#ifdef LIBXML_XINCLUDE_ENABLED
|
288
|
+
return(Qtrue);
|
289
|
+
#else
|
290
|
+
return(Qfalse);
|
291
|
+
#endif
|
292
|
+
}
|
293
|
+
|
294
|
+
|
295
|
+
/*
|
296
|
+
* call-seq:
|
297
|
+
* XML.enabled_xpath? -> (true|false)
|
298
|
+
*
|
299
|
+
* Determine whether libxml xpath support is enabled.
|
300
|
+
*/
|
301
|
+
static VALUE
|
302
|
+
rxml_enabled_xpath_q(VALUE class) {
|
303
|
+
#ifdef LIBXML_XPATH_ENABLED
|
304
|
+
return(Qtrue);
|
305
|
+
#else
|
306
|
+
return(Qfalse);
|
307
|
+
#endif
|
308
|
+
}
|
309
|
+
|
310
|
+
|
311
|
+
/*
|
312
|
+
* call-seq:
|
313
|
+
* XML.enabled_xpointer? -> (true|false)
|
314
|
+
*
|
315
|
+
* Determine whether libxml xpointer support is enabled.
|
316
|
+
*/
|
317
|
+
static VALUE
|
318
|
+
rxml_enabled_xpointer_q(VALUE class) {
|
319
|
+
#ifdef LIBXML_XPTR_ENABLED
|
320
|
+
return(Qtrue);
|
321
|
+
#else
|
322
|
+
return(Qfalse);
|
323
|
+
#endif
|
324
|
+
}
|
325
|
+
|
326
|
+
|
327
|
+
/*
|
328
|
+
* call-seq:
|
329
|
+
* XML.enabled_zlib? -> (true|false)
|
330
|
+
*
|
331
|
+
* Determine whether libxml zlib support is enabled.
|
332
|
+
*/
|
333
|
+
static VALUE
|
334
|
+
rxml_enabled_zlib_q(VALUE class) {
|
335
|
+
#ifdef HAVE_ZLIB_H
|
336
|
+
return(Qtrue);
|
337
|
+
#else
|
338
|
+
return(Qfalse);
|
339
|
+
#endif
|
340
|
+
}
|
341
|
+
|
342
|
+
|
343
|
+
/*
|
344
|
+
* call-seq:
|
345
|
+
* XML.debug_entities -> (true|false)
|
346
|
+
*
|
347
|
+
* Determine whether included-entity debugging is enabled.
|
348
|
+
* (Requires Libxml to be compiled with debugging support)
|
349
|
+
*/
|
350
|
+
static VALUE
|
351
|
+
rxml_debug_entities_get(VALUE class) {
|
352
|
+
#ifdef LIBXML_DEBUG_ENABLED
|
353
|
+
if (xmlParserDebugEntities)
|
354
|
+
return(Qtrue);
|
355
|
+
else
|
356
|
+
return(Qfalse);
|
357
|
+
#else
|
358
|
+
rb_warn("libxml was compiled with debugging turned off");
|
359
|
+
return(Qfalse);
|
360
|
+
#endif
|
361
|
+
}
|
362
|
+
|
363
|
+
|
364
|
+
/*
|
365
|
+
* call-seq:
|
366
|
+
* XML.debug_entities = true|false
|
367
|
+
*
|
368
|
+
* Enable or disable included-entity debugging.
|
369
|
+
* (Requires Libxml to be compiled with debugging support)
|
370
|
+
*/
|
371
|
+
static VALUE
|
372
|
+
rxml_debug_entities_set(VALUE class, VALUE bool) {
|
373
|
+
#ifdef LIBXML_DEBUG_ENABLED
|
374
|
+
if (TYPE(bool) == T_FALSE) {
|
375
|
+
xmlParserDebugEntities = 0;
|
376
|
+
return(Qfalse);
|
377
|
+
} else {
|
378
|
+
xmlParserDebugEntities = 1;
|
379
|
+
return(Qtrue);
|
380
|
+
}
|
381
|
+
#else
|
382
|
+
rb_warn("libxml was compiled with debugging turned off");
|
383
|
+
#endif
|
384
|
+
}
|
385
|
+
|
386
|
+
|
387
|
+
/*
|
388
|
+
* call-seq:
|
389
|
+
* XML.default_keep_blanks -> (true|false)
|
390
|
+
*
|
391
|
+
* Determine whether parsers retain whitespace by default.
|
392
|
+
*/
|
393
|
+
static VALUE
|
394
|
+
rxml_default_keep_blanks_get(VALUE class) {
|
395
|
+
if (xmlKeepBlanksDefaultValue)
|
396
|
+
return(Qtrue);
|
397
|
+
else
|
398
|
+
return(Qfalse);
|
399
|
+
}
|
400
|
+
|
401
|
+
|
402
|
+
/*
|
403
|
+
* call-seq:
|
404
|
+
* XML.default_keep_blanks = true|false
|
405
|
+
*
|
406
|
+
* Controls whether parsers retain whitespace by default.
|
407
|
+
*/
|
408
|
+
static VALUE
|
409
|
+
rxml_default_keep_blanks_set(VALUE class, VALUE bool) {
|
410
|
+
if (TYPE(bool) == T_FALSE) {
|
411
|
+
xmlKeepBlanksDefaultValue = 0;
|
412
|
+
return(Qfalse);
|
413
|
+
} else if (TYPE(bool) == T_TRUE) {
|
414
|
+
xmlKeepBlanksDefaultValue = 1;
|
415
|
+
return(Qtrue);
|
416
|
+
} else {
|
417
|
+
rb_raise(rb_eArgError, "Invalid argument, must be a boolean");
|
418
|
+
}
|
419
|
+
}
|
420
|
+
|
421
|
+
|
422
|
+
/*
|
423
|
+
* call-seq:
|
424
|
+
* XML.default_load_external_dtd -> (true|false)
|
425
|
+
*
|
426
|
+
* Determine whether parsers load external DTDs by default.
|
427
|
+
*/
|
428
|
+
static VALUE
|
429
|
+
rxml_default_load_external_dtd_get(VALUE class) {
|
430
|
+
if (xmlLoadExtDtdDefaultValue)
|
431
|
+
return(Qtrue);
|
432
|
+
else
|
433
|
+
return(Qfalse);
|
434
|
+
}
|
435
|
+
|
436
|
+
|
437
|
+
/*
|
438
|
+
* call-seq:
|
439
|
+
* XML.default_load_external_dtd = true|false
|
440
|
+
*
|
441
|
+
* Controls whether parsers load external DTDs by default.
|
442
|
+
*/
|
443
|
+
static VALUE
|
444
|
+
rxml_default_load_external_dtd_set(VALUE class, VALUE bool) {
|
445
|
+
if (TYPE(bool) == T_FALSE) {
|
446
|
+
xmlLoadExtDtdDefaultValue = 0;
|
447
|
+
return(Qfalse);
|
448
|
+
} else {
|
449
|
+
xmlLoadExtDtdDefaultValue = 1;
|
450
|
+
return(Qtrue);
|
451
|
+
}
|
452
|
+
}
|
453
|
+
|
454
|
+
|
455
|
+
/*
|
456
|
+
* call-seq:
|
457
|
+
* XML.default_line_numbers -> (true|false)
|
458
|
+
*
|
459
|
+
* Determine whether parsers retain line-numbers by default.
|
460
|
+
*/
|
461
|
+
static VALUE
|
462
|
+
rxml_default_line_numbers_get(VALUE class) {
|
463
|
+
if (xmlLineNumbersDefaultValue)
|
464
|
+
return(Qtrue);
|
465
|
+
else
|
466
|
+
return(Qfalse);
|
467
|
+
}
|
468
|
+
|
469
|
+
|
470
|
+
/*
|
471
|
+
* call-seq:
|
472
|
+
* XML.default_line_numbers = true|false
|
473
|
+
*
|
474
|
+
* Controls whether parsers retain line-numbers by default.
|
475
|
+
*/
|
476
|
+
static VALUE
|
477
|
+
rxml_default_line_numbers_set(VALUE class, VALUE bool) {
|
478
|
+
if (TYPE(bool) == T_FALSE) {
|
479
|
+
xmlLineNumbersDefault(0);
|
480
|
+
return(Qfalse);
|
481
|
+
} else {
|
482
|
+
xmlLineNumbersDefault(1);
|
483
|
+
return(Qtrue);
|
484
|
+
}
|
485
|
+
}
|
486
|
+
|
487
|
+
|
488
|
+
/*
|
489
|
+
* call-seq:
|
490
|
+
* XML.default_pedantic_parser -> (true|false)
|
491
|
+
*
|
492
|
+
* Determine whether parsers are pedantic by default.
|
493
|
+
*/
|
494
|
+
static VALUE
|
495
|
+
rxml_default_pedantic_parser_get(VALUE class) {
|
496
|
+
if (xmlPedanticParserDefaultValue)
|
497
|
+
return(Qtrue);
|
498
|
+
else
|
499
|
+
return(Qfalse);
|
500
|
+
}
|
501
|
+
|
502
|
+
|
503
|
+
/*
|
504
|
+
* call-seq:
|
505
|
+
* XML.default_pedantic_parser = true|false
|
506
|
+
*
|
507
|
+
* Controls whether parsers are pedantic by default.
|
508
|
+
*/
|
509
|
+
static VALUE
|
510
|
+
rxml_default_pedantic_parser_set(VALUE class, VALUE bool) {
|
511
|
+
if (TYPE(bool) == T_FALSE) {
|
512
|
+
xmlPedanticParserDefault(0);
|
513
|
+
return(Qfalse);
|
514
|
+
} else {
|
515
|
+
xmlPedanticParserDefault(1);
|
516
|
+
return(Qtrue);
|
517
|
+
}
|
518
|
+
}
|
519
|
+
|
520
|
+
|
521
|
+
/*
|
522
|
+
* call-seq:
|
523
|
+
* XML.default_substitute_entities -> (true|false)
|
524
|
+
*
|
525
|
+
* Determine whether parsers perform inline entity substitution
|
526
|
+
* (for external entities) by default.
|
527
|
+
*/
|
528
|
+
static VALUE
|
529
|
+
rxml_default_substitute_entities_get(VALUE class) {
|
530
|
+
if (xmlSubstituteEntitiesDefaultValue)
|
531
|
+
return(Qtrue);
|
532
|
+
else
|
533
|
+
return(Qfalse);
|
534
|
+
}
|
535
|
+
|
536
|
+
|
537
|
+
/*
|
538
|
+
* call-seq:
|
539
|
+
* XML.default_substitute_entities = true|false
|
540
|
+
*
|
541
|
+
* Controls whether parsers perform inline entity substitution
|
542
|
+
* (for external entities) by default.
|
543
|
+
*/
|
544
|
+
static VALUE
|
545
|
+
rxml_default_substitute_entities_set(VALUE class, VALUE bool) {
|
546
|
+
if (TYPE(bool) == T_FALSE) {
|
547
|
+
xmlSubstituteEntitiesDefault(0);
|
548
|
+
return(Qfalse);
|
549
|
+
} else {
|
550
|
+
xmlSubstituteEntitiesDefault(1);
|
551
|
+
return(Qtrue);
|
552
|
+
}
|
553
|
+
}
|
554
|
+
|
555
|
+
|
556
|
+
/*
|
557
|
+
* call-seq:
|
558
|
+
* XML.default_tree_indent_string -> "string"
|
559
|
+
*
|
560
|
+
* Obtain the default string used by parsers to indent the XML tree
|
561
|
+
* for output.
|
562
|
+
*/
|
563
|
+
static VALUE
|
564
|
+
rxml_default_tree_indent_string_get(VALUE class) {
|
565
|
+
if (xmlTreeIndentString == NULL)
|
566
|
+
return(Qnil);
|
567
|
+
else
|
568
|
+
return(rb_str_new2(xmlTreeIndentString));
|
569
|
+
}
|
570
|
+
|
571
|
+
|
572
|
+
/*
|
573
|
+
* call-seq:
|
574
|
+
* XML.default_tree_indent_string = "string"
|
575
|
+
*
|
576
|
+
* Set the default string used by parsers to indent the XML tree
|
577
|
+
* for output.
|
578
|
+
*/
|
579
|
+
static VALUE
|
580
|
+
rxml_default_tree_indent_string_set(VALUE class, VALUE string) {
|
581
|
+
Check_Type(string, T_STRING);
|
582
|
+
xmlTreeIndentString = xmlStrdup(StringValuePtr(string));
|
583
|
+
return(string);
|
584
|
+
}
|
585
|
+
|
586
|
+
|
587
|
+
/*
|
588
|
+
* call-seq:
|
589
|
+
* XML.default_validity_checking -> (true|false)
|
590
|
+
*
|
591
|
+
* Determine whether parsers perform XML validation by default.
|
592
|
+
*/
|
593
|
+
static VALUE
|
594
|
+
rxml_default_validity_checking_get(VALUE class) {
|
595
|
+
if (xmlDoValidityCheckingDefaultValue)
|
596
|
+
return(Qtrue);
|
597
|
+
else
|
598
|
+
return(Qfalse);
|
599
|
+
}
|
600
|
+
|
601
|
+
|
602
|
+
/*
|
603
|
+
* call-seq:
|
604
|
+
* XML.default_validity_checking = true|false
|
605
|
+
*
|
606
|
+
* Controls whether parsers perform XML validation by default.
|
607
|
+
*/
|
608
|
+
static VALUE
|
609
|
+
rxml_default_validity_checking_set(VALUE class, VALUE bool) {
|
610
|
+
if (TYPE(bool) == T_FALSE) {
|
611
|
+
xmlDoValidityCheckingDefaultValue = 0;
|
612
|
+
return(Qfalse);
|
613
|
+
} else {
|
614
|
+
xmlDoValidityCheckingDefaultValue = 1;
|
615
|
+
return(Qtrue);
|
616
|
+
}
|
617
|
+
}
|
618
|
+
|
619
|
+
|
620
|
+
/*
|
621
|
+
* call-seq:
|
622
|
+
* XML.default_warnings -> (true|false)
|
623
|
+
*
|
624
|
+
* Determine whether parsers output warnings by default.
|
625
|
+
*/
|
626
|
+
static VALUE
|
627
|
+
rxml_default_warnings_get(VALUE class) {
|
628
|
+
if (xmlGetWarningsDefaultValue)
|
629
|
+
return(Qtrue);
|
630
|
+
else
|
631
|
+
return(Qfalse);
|
632
|
+
}
|
633
|
+
|
634
|
+
|
635
|
+
/*
|
636
|
+
* call-seq:
|
637
|
+
* XML.default_warnings = true|false
|
638
|
+
*
|
639
|
+
* Controls whether parsers output warnings by default.
|
640
|
+
*/
|
641
|
+
static VALUE
|
642
|
+
rxml_default_warnings_set(VALUE class, VALUE bool) {
|
643
|
+
if (TYPE(bool) == T_FALSE) {
|
644
|
+
xmlGetWarningsDefaultValue = 0;
|
645
|
+
return(Qfalse);
|
646
|
+
} else {
|
647
|
+
xmlGetWarningsDefaultValue = 1;
|
648
|
+
return(Qtrue);
|
649
|
+
}
|
650
|
+
}
|
651
|
+
|
652
|
+
|
653
|
+
/*
|
654
|
+
* call-seq:
|
655
|
+
* XML.default_compression -> (true|false)
|
656
|
+
*
|
657
|
+
* Determine whether parsers use Zlib compression by default
|
658
|
+
* (requires libxml to be compiled with Zlib support).
|
659
|
+
*/
|
660
|
+
static VALUE
|
661
|
+
rxml_default_compression_get(VALUE class) {
|
662
|
+
#ifdef HAVE_ZLIB_H
|
663
|
+
return(INT2FIX(xmlGetCompressMode()));
|
664
|
+
#else
|
665
|
+
rb_warn("libxml was compiled without zlib support");
|
666
|
+
return(Qfalse);
|
667
|
+
#endif
|
668
|
+
}
|
669
|
+
|
670
|
+
|
671
|
+
/*
|
672
|
+
* call-seq:
|
673
|
+
* XML.default_compression = true|false
|
674
|
+
*
|
675
|
+
* Controls whether parsers use Zlib compression by default
|
676
|
+
* (requires libxml to be compiled with Zlib support).
|
677
|
+
*/
|
678
|
+
static VALUE
|
679
|
+
rxml_default_compression_set(VALUE class, VALUE num) {
|
680
|
+
#ifdef HAVE_ZLIB_H
|
681
|
+
Check_Type(num, T_FIXNUM);
|
682
|
+
xmlSetCompressMode(FIX2INT(num));
|
683
|
+
return(num);
|
684
|
+
#else
|
685
|
+
rb_warn("libxml was compiled without zlib support");
|
686
|
+
return(Qfalse);
|
687
|
+
#endif
|
688
|
+
}
|
689
|
+
|
690
|
+
|
691
|
+
/*
|
692
|
+
* call-seq:
|
693
|
+
* XML.features -> ["feature", ..., "feature"]
|
694
|
+
*
|
695
|
+
* Obtains an array of strings representing features supported
|
696
|
+
* (and enabled) by the installed libxml.
|
697
|
+
*/
|
698
|
+
static VALUE
|
699
|
+
rxml_features(VALUE class) {
|
700
|
+
VALUE arr, str;
|
701
|
+
int i, len = MAX_LIBXML_FEATURES_LEN;
|
702
|
+
char **list = NULL;
|
703
|
+
|
704
|
+
list = ALLOC_N(char *,MAX_LIBXML_FEATURES_LEN);
|
705
|
+
MEMZERO(list, char *, MAX_LIBXML_FEATURES_LEN);
|
706
|
+
|
707
|
+
arr = rb_ary_new();
|
708
|
+
if (xmlGetFeaturesList(&len, (const char **)list) == -1)
|
709
|
+
return Qnil;
|
710
|
+
|
711
|
+
for (i = 0; i < len; i++) {
|
712
|
+
str = rb_str_new2((const char *)list[i]);
|
713
|
+
rb_gc_unregister_address(&str);
|
714
|
+
rb_ary_push(arr, str);
|
715
|
+
}
|
716
|
+
|
717
|
+
if (len == MAX_LIBXML_FEATURES_LEN)
|
718
|
+
rb_warn("Please contact libxml-devel@rubyforge.org and ask to have the \"MAX_LIBXML_FEATURES_LEN increased\" because you could possibly be seeing an incomplete list");
|
719
|
+
|
720
|
+
ruby_xfree(list);
|
721
|
+
return(arr);
|
722
|
+
}
|
723
|
+
|
724
|
+
|
725
|
+
/*
|
726
|
+
* call-seq:
|
727
|
+
* XML.indent_tree_output -> (true|false)
|
728
|
+
*
|
729
|
+
* Determines whether XML output will be indented
|
730
|
+
* (using the string supplied to +default_indent_tree_string+)
|
731
|
+
*/
|
732
|
+
static VALUE
|
733
|
+
rxml_indent_tree_output_get(VALUE class) {
|
734
|
+
if (xmlIndentTreeOutput)
|
735
|
+
return(Qtrue);
|
736
|
+
else
|
737
|
+
return(Qfalse);
|
738
|
+
}
|
739
|
+
|
740
|
+
|
741
|
+
/*
|
742
|
+
* call-seq:
|
743
|
+
* XML.indent_tree_output = true|false
|
744
|
+
*
|
745
|
+
* Controls whether XML output will be indented
|
746
|
+
* (using the string supplied to +default_indent_tree_string+)
|
747
|
+
*/
|
748
|
+
static VALUE
|
749
|
+
rxml_indent_tree_output_set(VALUE class, VALUE bool) {
|
750
|
+
if (TYPE(bool) == T_TRUE) {
|
751
|
+
xmlIndentTreeOutput = 1;
|
752
|
+
return(Qtrue);
|
753
|
+
} else if (TYPE(bool) == T_FALSE) {
|
754
|
+
xmlIndentTreeOutput = 0;
|
755
|
+
return(Qfalse);
|
756
|
+
} else {
|
757
|
+
rb_raise(rb_eArgError, "Invalid argument, must be boolean");
|
758
|
+
}
|
759
|
+
}
|
760
|
+
|
761
|
+
/*
|
762
|
+
* call-seq:
|
763
|
+
* XML.memory_dump -> (true|false)
|
764
|
+
*
|
765
|
+
* Perform a parser memory dump (requires memory debugging
|
766
|
+
* support in libxml).
|
767
|
+
*/
|
768
|
+
static VALUE
|
769
|
+
rxml_memory_dump(VALUE self) {
|
770
|
+
#ifdef DEBUG_MEMORY_LOCATION
|
771
|
+
xmlMemoryDump();
|
772
|
+
return(Qtrue);
|
773
|
+
#else
|
774
|
+
rb_warn("libxml was compiled without memory debugging support");
|
775
|
+
return(Qfalse);
|
776
|
+
#endif
|
777
|
+
}
|
778
|
+
|
779
|
+
|
780
|
+
/*
|
781
|
+
* call-seq:
|
782
|
+
* XML.memory_used -> num_bytes
|
783
|
+
*
|
784
|
+
* Perform a parser memory dump (requires memory debugging
|
785
|
+
* support in libxml).
|
786
|
+
*/
|
787
|
+
static VALUE
|
788
|
+
rxml_memory_used(VALUE self) {
|
789
|
+
#ifdef DEBUG_MEMORY_LOCATION
|
790
|
+
return(INT2NUM(xmlMemUsed()));
|
791
|
+
#else
|
792
|
+
rb_warn("libxml was compiled without memory debugging support");
|
793
|
+
return(Qfalse);
|
794
|
+
#endif
|
795
|
+
}
|
796
|
+
|
797
|
+
#if defined(_WIN32)
|
798
|
+
__declspec(dllexport)
|
799
|
+
#endif
|
800
|
+
void
|
801
|
+
Init_libxml_ruby(void) {
|
802
|
+
mLibXML = rb_define_module("LibXML");
|
803
|
+
mXML = rb_define_module_under(mLibXML, "XML");
|
804
|
+
|
805
|
+
/* Constants */
|
806
|
+
rb_define_const(mXML, "LIBXML_VERSION", rb_str_new2(LIBXML_DOTTED_VERSION));
|
807
|
+
rb_define_const(mXML, "VERSION", rb_str_new2(RUBY_LIBXML_VERSION));
|
808
|
+
rb_define_const(mXML, "VERNUM", INT2NUM(RUBY_LIBXML_VERNUM));
|
809
|
+
rb_define_const(mXML, "XML_NAMESPACE", rb_str_new2((const char*)XML_XML_NAMESPACE));
|
810
|
+
|
811
|
+
rb_define_module_function(mXML, "enabled_automata?", rxml_enabled_automata_q, 0);
|
812
|
+
rb_define_module_function(mXML, "enabled_c14n?", rxml_enabled_c14n_q, 0);
|
813
|
+
rb_define_module_function(mXML, "enabled_catalog?", rxml_enabled_catalog_q, 0);
|
814
|
+
rb_define_module_function(mXML, "enabled_debug?", rxml_enabled_debug_q, 0);
|
815
|
+
rb_define_module_function(mXML, "enabled_docbook?", rxml_enabled_docbook_q, 0);
|
816
|
+
rb_define_module_function(mXML, "enabled_ftp?", rxml_enabled_ftp_q, 0);
|
817
|
+
rb_define_module_function(mXML, "enabled_http?", rxml_enabled_http_q, 0);
|
818
|
+
rb_define_module_function(mXML, "enabled_html?", rxml_enabled_html_q, 0);
|
819
|
+
rb_define_module_function(mXML, "enabled_iconv?", rxml_enabled_iconv_q, 0);
|
820
|
+
rb_define_module_function(mXML, "enabled_memory_debug?", rxml_enabled_memory_debug_location_q, 0);
|
821
|
+
rb_define_module_function(mXML, "enabled_regexp?", rxml_enabled_regexp_q, 0);
|
822
|
+
rb_define_module_function(mXML, "enabled_schemas?", rxml_enabled_schemas_q, 0);
|
823
|
+
rb_define_module_function(mXML, "enabled_thread?", rxml_enabled_thread_q, 0);
|
824
|
+
rb_define_module_function(mXML, "enabled_unicode?", rxml_enabled_unicode_q, 0);
|
825
|
+
rb_define_module_function(mXML, "enabled_xinclude?", rxml_enabled_xinclude_q, 0);
|
826
|
+
rb_define_module_function(mXML, "enabled_xpath?", rxml_enabled_xpath_q, 0);
|
827
|
+
rb_define_module_function(mXML, "enabled_xpointer?", rxml_enabled_xpointer_q, 0);
|
828
|
+
rb_define_module_function(mXML, "enabled_zlib?", rxml_enabled_zlib_q, 0);
|
829
|
+
|
830
|
+
rb_define_module_function(mXML, "catalog_dump", rxml_catalog_dump, 0);
|
831
|
+
rb_define_module_function(mXML, "catalog_remove", rxml_catalog_remove, 1);
|
832
|
+
rb_define_module_function(mXML, "check_lib_versions", rxml_check_lib_versions, 0);
|
833
|
+
rb_define_module_function(mXML, "debug_entities", rxml_debug_entities_get, 0);
|
834
|
+
rb_define_module_function(mXML, "debug_entities=", rxml_debug_entities_set, 1);
|
835
|
+
rb_define_module_function(mXML, "default_compression", rxml_default_compression_get, 0);
|
836
|
+
rb_define_module_function(mXML, "default_compression=", rxml_default_compression_set, 1);
|
837
|
+
rb_define_module_function(mXML, "default_keep_blanks", rxml_default_keep_blanks_get, 0);
|
838
|
+
rb_define_module_function(mXML, "default_keep_blanks=", rxml_default_keep_blanks_set, 1);
|
839
|
+
rb_define_module_function(mXML, "default_load_external_dtd", rxml_default_load_external_dtd_get, 0);
|
840
|
+
rb_define_module_function(mXML, "default_load_external_dtd=", rxml_default_load_external_dtd_set, 1);
|
841
|
+
rb_define_module_function(mXML, "default_line_numbers", rxml_default_line_numbers_get, 0);
|
842
|
+
rb_define_module_function(mXML, "default_line_numbers=", rxml_default_line_numbers_set, 1);
|
843
|
+
rb_define_module_function(mXML, "default_pedantic_parser", rxml_default_pedantic_parser_get, 0);
|
844
|
+
rb_define_module_function(mXML, "default_pedantic_parser=", rxml_default_pedantic_parser_set, 1);
|
845
|
+
rb_define_module_function(mXML, "default_substitute_entities", rxml_default_substitute_entities_get, 0);
|
846
|
+
rb_define_module_function(mXML, "default_substitute_entities=", rxml_default_substitute_entities_set, 1);
|
847
|
+
rb_define_module_function(mXML, "default_tree_indent_string", rxml_default_tree_indent_string_get, 0);
|
848
|
+
rb_define_module_function(mXML, "default_tree_indent_string=", rxml_default_tree_indent_string_set, 1);
|
849
|
+
rb_define_module_function(mXML, "default_validity_checking", rxml_default_validity_checking_get, 0);
|
850
|
+
rb_define_module_function(mXML, "default_validity_checking=", rxml_default_validity_checking_set, 1);
|
851
|
+
rb_define_module_function(mXML, "default_warnings", rxml_default_warnings_get, 0);
|
852
|
+
rb_define_module_function(mXML, "default_warnings=", rxml_default_warnings_set, 1);
|
853
|
+
rb_define_module_function(mXML, "features", rxml_features, 0);
|
854
|
+
rb_define_module_function(mXML, "indent_tree_output", rxml_indent_tree_output_get, 0);
|
855
|
+
rb_define_module_function(mXML, "indent_tree_output=", rxml_indent_tree_output_set, 1);
|
856
|
+
rb_define_module_function(mXML, "memory_dump", rxml_memory_dump, 0);
|
857
|
+
rb_define_module_function(mXML, "memory_used", rxml_memory_used, 0);
|
858
|
+
|
859
|
+
/* Now initialize all the other modules */
|
860
|
+
ruby_init_xml_error();
|
861
|
+
ruby_init_xml_input();
|
862
|
+
ruby_init_state();
|
863
|
+
ruby_init_parser();
|
864
|
+
ruby_init_xml_parser_context();
|
865
|
+
ruby_init_xml_node();
|
866
|
+
ruby_init_xml_attributes();
|
867
|
+
ruby_init_xml_attr();
|
868
|
+
ruby_init_xml_document();
|
869
|
+
ruby_init_xml_ns();
|
870
|
+
ruby_init_xml_sax_parser();
|
871
|
+
ruby_init_xml_xinclude();
|
872
|
+
ruby_init_xml_xpath();
|
873
|
+
ruby_init_xml_xpath_context();
|
874
|
+
ruby_init_xml_xpath_expression();
|
875
|
+
ruby_init_xml_xpointer();
|
876
|
+
ruby_init_html_parser();
|
877
|
+
ruby_init_input_callbacks();
|
878
|
+
ruby_init_xml_dtd();
|
879
|
+
ruby_init_xml_schema();
|
880
|
+
ruby_init_xml_relaxng();
|
881
|
+
ruby_init_xml_reader();
|
882
|
+
|
883
|
+
rxml_default_substitute_entities_set(mXML, Qtrue);
|
884
|
+
rxml_default_load_external_dtd_set(mXML, Qtrue);
|
885
|
+
}
|