libxml-ruby 0.8.1-x86-mswin32-60 → 0.8.2-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.
Files changed (164) hide show
  1. data/CHANGES +21 -0
  2. data/RAKEFILE +213 -0
  3. data/README +32 -11
  4. data/doc/rdoc/classes/LibXML.html +4 -0
  5. data/doc/rdoc/classes/LibXML/XML.html +7 -0
  6. data/doc/rdoc/classes/LibXML/XML/Attr.html +187 -177
  7. data/doc/rdoc/classes/LibXML/XML/Attributes.html +62 -61
  8. data/doc/rdoc/classes/LibXML/XML/Document.html +318 -254
  9. data/doc/rdoc/classes/LibXML/XML/Dtd.html +62 -8
  10. data/doc/rdoc/classes/LibXML/XML/Error.html +6 -0
  11. data/doc/rdoc/classes/LibXML/XML/HTMLParser.html +59 -41
  12. data/doc/rdoc/classes/LibXML/XML/InputCallbacks.html +12 -6
  13. data/doc/rdoc/classes/LibXML/XML/NS.html +65 -50
  14. data/doc/rdoc/classes/LibXML/XML/Node.html +671 -630
  15. data/doc/rdoc/classes/LibXML/XML/Node/FailedModify.html +12 -0
  16. data/doc/rdoc/classes/LibXML/XML/Node/Set.html +64 -60
  17. data/doc/rdoc/classes/LibXML/XML/Node/SetNamespace.html +12 -0
  18. data/doc/rdoc/classes/LibXML/XML/Node/UnknownType.html +12 -0
  19. data/doc/rdoc/classes/LibXML/XML/Parser.html +407 -383
  20. data/doc/rdoc/classes/LibXML/XML/Parser/Context.html +241 -219
  21. data/doc/rdoc/classes/LibXML/XML/Parser/ParseError.html +12 -0
  22. data/doc/rdoc/classes/LibXML/XML/Reader.html +421 -331
  23. data/doc/rdoc/classes/LibXML/XML/RelaxNG.html +237 -0
  24. data/doc/rdoc/classes/LibXML/XML/SaxParser.html +79 -60
  25. data/doc/rdoc/classes/LibXML/XML/Schema.html +109 -22
  26. data/doc/rdoc/classes/LibXML/XML/State.html +6 -0
  27. data/doc/rdoc/classes/LibXML/XML/XInclude.html +6 -0
  28. data/doc/rdoc/classes/LibXML/XML/XInclude/Error.html +6 -0
  29. data/doc/rdoc/classes/LibXML/XML/XPath.html +4 -48
  30. data/doc/rdoc/classes/LibXML/XML/XPath/Context.html +6 -5
  31. data/doc/rdoc/classes/LibXML/XML/XPath/InvalidPath.html +61 -0
  32. data/doc/rdoc/classes/LibXML/XML/XPath/Object.html +12 -8
  33. data/doc/rdoc/classes/LibXML/XML/XPointer.html +14 -8
  34. data/doc/rdoc/classes/LibXML/XML/XPointer/Context.html +6 -0
  35. data/doc/rdoc/classes/LibXML/XML/XPointer/Context/InvalidPath.html +6 -0
  36. data/doc/rdoc/classes/LibXML/XML/XPointer/InvalidExpression.html +13 -0
  37. data/doc/rdoc/created.rid +1 -1
  38. data/doc/rdoc/files/CHANGES.html +38 -10
  39. data/doc/rdoc/files/LICENSE.html +1 -1
  40. data/doc/rdoc/files/README.html +57 -23
  41. data/doc/rdoc/files/VERSION.html +1 -1
  42. data/doc/rdoc/files/ext/libxml/cbg_c.html +1 -1
  43. data/doc/rdoc/files/ext/libxml/libxml_c.html +1 -1
  44. data/doc/rdoc/files/ext/libxml/ruby_xml_attr_c.html +1 -1
  45. data/doc/rdoc/files/ext/libxml/ruby_xml_attributes_c.html +1 -1
  46. data/doc/rdoc/files/ext/libxml/ruby_xml_document_c.html +1 -1
  47. data/doc/rdoc/files/ext/libxml/ruby_xml_dtd_c.html +1 -1
  48. data/doc/rdoc/files/ext/libxml/ruby_xml_html_parser_c.html +1 -1
  49. data/doc/rdoc/files/ext/libxml/ruby_xml_input_cbg_c.html +1 -1
  50. data/doc/rdoc/files/ext/libxml/ruby_xml_node_c.html +1 -1
  51. data/doc/rdoc/files/ext/libxml/ruby_xml_node_set_c.html +1 -1
  52. data/doc/rdoc/files/ext/libxml/ruby_xml_ns_c.html +1 -1
  53. data/doc/rdoc/files/ext/libxml/ruby_xml_parser_c.html +1 -1
  54. data/doc/rdoc/files/ext/libxml/ruby_xml_parser_context_c.html +1 -1
  55. data/doc/rdoc/files/ext/libxml/ruby_xml_reader_c.html +1 -1
  56. data/doc/rdoc/{classes/XML.html → files/ext/libxml/ruby_xml_relaxng_c.html} +16 -35
  57. data/doc/rdoc/files/ext/libxml/ruby_xml_sax_parser_c.html +1 -1
  58. data/doc/rdoc/files/ext/libxml/ruby_xml_schema_c.html +1 -1
  59. data/doc/rdoc/files/ext/libxml/ruby_xml_state_c.html +1 -1
  60. data/doc/rdoc/files/ext/libxml/ruby_xml_xinclude_c.html +1 -1
  61. data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_c.html +1 -1
  62. data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_context_c.html +1 -1
  63. data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_object_c.html +1 -1
  64. data/doc/rdoc/files/ext/libxml/ruby_xml_xpointer_c.html +1 -1
  65. data/doc/rdoc/files/ext/libxml/ruby_xml_xpointer_context_c.html +1 -1
  66. data/doc/rdoc/files/lib/libxml/attr_rb.html +1 -1
  67. data/doc/rdoc/files/lib/libxml/attributes_rb.html +1 -1
  68. data/doc/rdoc/files/lib/libxml/document_rb.html +1 -1
  69. data/doc/rdoc/files/lib/libxml/node_rb.html +1 -1
  70. data/doc/rdoc/files/lib/libxml/node_set_rb.html +1 -1
  71. data/doc/rdoc/files/lib/libxml/parser_options_rb.html +1 -1
  72. data/doc/rdoc/files/lib/libxml/parser_rb.html +1 -1
  73. data/doc/rdoc/files/lib/libxml/properties_rb.html +1 -1
  74. data/doc/rdoc/files/lib/libxml/tree_rb.html +1 -1
  75. data/doc/rdoc/files/lib/libxml_rb.html +2 -2
  76. data/doc/rdoc/files/lib/xml/libxml_rb.html +12 -2
  77. data/doc/rdoc/files/lib/xml_rb.html +134 -0
  78. data/doc/rdoc/fr_class_index.html +1 -1
  79. data/doc/rdoc/fr_file_index.html +2 -0
  80. data/doc/rdoc/fr_method_index.html +349 -344
  81. data/ext/libxml/libxml.c +2 -1
  82. data/ext/libxml/ruby_libxml.h +1 -0
  83. data/ext/libxml/ruby_xml_attr.c +8 -2
  84. data/ext/libxml/ruby_xml_attributes.c +5 -5
  85. data/ext/libxml/ruby_xml_document.c +41 -2
  86. data/ext/libxml/ruby_xml_dtd.c +169 -169
  87. data/ext/libxml/ruby_xml_html_parser.c +449 -449
  88. data/ext/libxml/ruby_xml_input_cbg.c +165 -165
  89. data/ext/libxml/ruby_xml_node.c +1 -1
  90. data/ext/libxml/ruby_xml_node_set.c +172 -172
  91. data/ext/libxml/ruby_xml_ns.c +145 -145
  92. data/ext/libxml/ruby_xml_parser.c +1398 -1398
  93. data/ext/libxml/ruby_xml_parser_context.c +697 -697
  94. data/ext/libxml/ruby_xml_reader.c +44 -0
  95. data/ext/libxml/ruby_xml_reader.h +14 -14
  96. data/ext/libxml/ruby_xml_relaxng.c +97 -0
  97. data/ext/libxml/ruby_xml_relaxng.h +15 -0
  98. data/ext/libxml/ruby_xml_sax_parser.c +486 -486
  99. data/ext/libxml/ruby_xml_schema.c +1 -1
  100. data/ext/libxml/ruby_xml_state.c +4 -4
  101. data/ext/libxml/ruby_xml_xinclude.c +21 -21
  102. data/ext/libxml/ruby_xml_xpath.c +89 -89
  103. data/ext/libxml/ruby_xml_xpath_context.c +283 -283
  104. data/ext/libxml/ruby_xml_xpath_object.c +5 -5
  105. data/ext/libxml/ruby_xml_xpointer.c +104 -104
  106. data/ext/libxml/ruby_xml_xpointer_context.c +22 -22
  107. data/ext/libxml/version.h +2 -2
  108. data/ext/libxml/version.h.rej +17 -0
  109. data/ext/mingw/Rakefile +41 -0
  110. data/{mingw → lib}/libiconv-2.dll +0 -0
  111. data/lib/libxml.rb +15 -4
  112. data/lib/libxml2-2.dll +0 -0
  113. data/lib/libxml_ruby.dll.a +0 -0
  114. data/lib/libxml_ruby.so +0 -0
  115. data/lib/xml.rb +14 -0
  116. data/lib/xml/libxml.rb +4 -1
  117. data/test/etc_doc_to_s.rb +1 -1
  118. data/test/ets_copy_bug.rb +1 -1
  119. data/test/ets_copy_bug3.rb +1 -1
  120. data/test/ets_doc_file.rb +1 -1
  121. data/test/ets_doc_to_s.rb +1 -1
  122. data/test/ets_node_gc.rb +1 -1
  123. data/test/ets_tsr.rb +1 -1
  124. data/test/model/shiporder.rnc +28 -0
  125. data/test/model/shiporder.rng +86 -0
  126. data/test/{tc_xml_attributes.rb → tc_attributes.rb} +1 -10
  127. data/test/{tc_xml_document.rb → tc_document.rb} +1 -1
  128. data/test/{tc_xml_document_write.rb → tc_document_write.rb} +1 -1
  129. data/test/{tc_xml_dtd.rb → tc_dtd.rb} +1 -1
  130. data/test/{tc_xml_html_parser.rb → tc_html_parser.rb} +1 -1
  131. data/test/{tc_xml_node.rb → tc_node.rb} +1 -1
  132. data/test/{tc_xml_node_attr.rb → tc_node_attr.rb} +1 -1
  133. data/test/{tc_xml_node_cdata.rb → tc_node_cdata.rb} +24 -5
  134. data/test/{tc_xml_node_comment.rb → tc_node_comment.rb} +1 -1
  135. data/test/{tc_xml_node_copy.rb → tc_node_copy.rb} +1 -1
  136. data/test/{tc_xml_node_edit.rb → tc_node_edit.rb} +1 -1
  137. data/test/{tc_xml_node_set.rb → tc_node_set.rb} +1 -1
  138. data/test/{tc_xml_node_set2.rb → tc_node_set2.rb} +1 -1
  139. data/test/{tc_xml_node_text.rb → tc_node_text.rb} +1 -1
  140. data/test/{tc_xml_node_xlink.rb → tc_node_xlink.rb} +2 -2
  141. data/test/{tc_xml_parser.rb → tc_parser.rb} +1 -1
  142. data/test/{tc_xml_parser_context.rb → tc_parser_context.rb} +1 -1
  143. data/test/{tc_xml_properties.rb → tc_properties.rb} +1 -7
  144. data/test/{tc_xml_reader.rb → tc_reader.rb} +1 -1
  145. data/test/tc_relaxng.rb +39 -0
  146. data/test/{tc_xml_sax_parser.rb → tc_sax_parser.rb} +1 -1
  147. data/test/{tc_xml_schema.rb → tc_schema.rb} +1 -1
  148. data/test/{tc_xml_traversal.rb → tc_traversal.rb} +1 -1
  149. data/test/{tc_xml_xinclude.rb → tc_xinclude.rb} +1 -1
  150. data/test/{tc_xml_xpath.rb → tc_xpath.rb} +1 -1
  151. data/test/{tc_xml_xpath_context.rb → tc_xpath_context.rb} +1 -1
  152. data/test/{tc_xml_xpointer.rb → tc_xpointer.rb} +1 -1
  153. data/test/test_suite.rb +26 -25
  154. metadata +103 -100
  155. data/benchmark/depixelate.rb +0 -632
  156. data/benchmark/hamlet.xml +0 -9055
  157. data/benchmark/sock_entries.xml +0 -507
  158. data/benchmark/throughput.rb +0 -39
  159. data/benchmark/xml_benchmarks.rb +0 -227
  160. data/mingw/libxml2-2.dll +0 -0
  161. data/mingw/libxml_ruby.so +0 -0
  162. data/test/gc.log +0 -0
  163. data/vc/libxml_ruby.sln +0 -20
  164. data/vc/libxml_ruby.vcproj +0 -389
@@ -23,6 +23,11 @@ __rb_str_new_and_free(xmlChar *x)
23
23
  VALUE cXMLReader;
24
24
  static ID error_handler_block_ivar_id;
25
25
 
26
+ static int
27
+ ctxtRead(FILE *f, char * buf, size_t len) {
28
+ return(fread(buf, 1, len, f));
29
+ }
30
+
26
31
  static VALUE
27
32
  ruby_xml_reader_new(VALUE class, xmlTextReaderPtr reader)
28
33
  {
@@ -63,6 +68,44 @@ ruby_xml_reader_new_file(int argc, VALUE *argv, VALUE self)
63
68
  return ruby_xml_reader_new(self, reader);
64
69
  }
65
70
 
71
+ /*
72
+ * call-seq:
73
+ * XML::Reader.io(io, url=nil, encoding=nil, options=0) -> reader
74
+ *
75
+ * Parse an XML file from a file handle. The parsing flags options are
76
+ * a combination of xmlParserOption.
77
+ */
78
+ static VALUE
79
+ ruby_xml_reader_new_io(int argc, VALUE *argv, VALUE self)
80
+ {
81
+ xmlTextReaderPtr reader;
82
+ VALUE io, url, encoding, options;
83
+ OpenFile *fptr;
84
+ FILE *f;
85
+
86
+ #ifdef _WIN32
87
+ rb_raise(rb_eRuntimeError, "Reading an io stream is not supported on Windows");
88
+ #endif
89
+
90
+ rb_scan_args(argc, argv, "13", &io, &url, &encoding, &options);
91
+
92
+ if (!rb_obj_is_kind_of(io, rb_cIO))
93
+ rb_raise(rb_eTypeError, "need an IO object");
94
+
95
+ GetOpenFile(io, fptr);
96
+ rb_io_check_readable(fptr);
97
+ f = GetWriteFile(fptr);
98
+
99
+ reader = xmlReaderForIO((xmlInputReadCallback) ctxtRead, NULL, f,
100
+ NIL_P(url) ? NULL : RVAL2CSTR(url),
101
+ NIL_P(encoding) ? NULL : RVAL2CSTR(encoding),
102
+ NIL_P(options) ? 0 : FIX2INT(options));
103
+ if (reader == NULL)
104
+ rb_raise(rb_eRuntimeError, "cannot create text reader for given stream");
105
+
106
+ return ruby_xml_reader_new(self, reader);
107
+ }
108
+
66
109
  /*
67
110
  * call-seq:
68
111
  * XML::Reader.walker(doc) -> reader
@@ -800,6 +843,7 @@ ruby_init_xml_reader(void)
800
843
  error_handler_block_ivar_id = rb_intern("@__error_handler_callback__");
801
844
 
802
845
  rb_define_singleton_method(cXMLReader, "file", ruby_xml_reader_new_file, -1);
846
+ rb_define_singleton_method(cXMLReader, "io", ruby_xml_reader_new_io, -1);
803
847
  rb_define_singleton_method(cXMLReader, "walker", ruby_xml_reader_new_walker, 1);
804
848
  rb_define_alias(CLASS_OF(cXMLReader), "document", "walker");
805
849
  rb_define_singleton_method(cXMLReader, "new", ruby_xml_reader_new_data, -1);
@@ -1,14 +1,14 @@
1
- /* Copyright (c) 2006 Apple Computer Inc.
2
- * Please see the LICENSE file for copyright and distribution information. */
3
-
4
- #ifndef __RUBY_XML_READER__
5
- #define __RUBY_XML_READER__
6
-
7
- extern VALUE cXMLReader;
8
-
9
- void ruby_init_xml_reader(void);
10
-
11
- /* Exported to be used by XML::Document#reader */
12
- VALUE ruby_xml_reader_new_walker(VALUE self, VALUE doc);
13
-
14
- #endif /* __RUBY_XML_READER__ */
1
+ /* Copyright (c) 2006 Apple Computer Inc.
2
+ * Please see the LICENSE file for copyright and distribution information. */
3
+
4
+ #ifndef __RUBY_XML_READER__
5
+ #define __RUBY_XML_READER__
6
+
7
+ extern VALUE cXMLReader;
8
+
9
+ void ruby_init_xml_reader(void);
10
+
11
+ /* Exported to be used by XML::Document#reader */
12
+ VALUE ruby_xml_reader_new_walker(VALUE self, VALUE doc);
13
+
14
+ #endif /* __RUBY_XML_READER__ */
@@ -0,0 +1,97 @@
1
+ #include "ruby_libxml.h"
2
+ #include "ruby_xml_relaxng.h"
3
+
4
+ VALUE cXMLRelaxNG;
5
+
6
+ // Rdoc needs to know
7
+ #ifdef RDOC_NEVER_DEFINED
8
+ mLibXML = rb_define_module("LibXML");
9
+ mXML = rb_define_module_under(mLibXML, "XML");
10
+ #endif
11
+
12
+ static void
13
+ ruby_xml_relaxng_mark(ruby_xml_relaxng *rxrelaxng) {
14
+ return;
15
+ }
16
+
17
+ void
18
+ ruby_xml_relaxng_free(ruby_xml_relaxng *rxrelaxng) {
19
+ if (rxrelaxng->relaxng != NULL) {
20
+ xmlRelaxNGFree(rxrelaxng->relaxng);
21
+ rxrelaxng->relaxng = NULL;
22
+ }
23
+
24
+ ruby_xfree(rxrelaxng);
25
+ }
26
+
27
+ /*
28
+ * call-seq:
29
+ * XML::Relaxng.new(relaxng_uri) -> relaxng
30
+ *
31
+ * Create a new relaxng from the specified URI.
32
+ */
33
+ VALUE
34
+ ruby_xml_relaxng_init_from_uri(VALUE class, VALUE uri) {
35
+ xmlRelaxNGParserCtxtPtr parser;
36
+ ruby_xml_relaxng *relaxng;
37
+
38
+ Check_Type(uri, T_STRING);
39
+
40
+ parser = xmlRelaxNGNewParserCtxt(StringValuePtr(uri));
41
+ relaxng = ALLOC(ruby_xml_relaxng);
42
+ relaxng->relaxng = xmlRelaxNGParse(parser);
43
+ xmlRelaxNGFreeParserCtxt(parser);
44
+
45
+ return Data_Wrap_Struct(cXMLRelaxNG, ruby_xml_relaxng_mark, ruby_xml_relaxng_free, relaxng);
46
+ }
47
+
48
+ /*
49
+ * call-seq:
50
+ * XML::RelaxNG.document(document) -> relaxng
51
+ *
52
+ * Create a new relaxng from the specified document.
53
+ */
54
+ VALUE
55
+ ruby_xml_relaxng_init_from_document(VALUE class, VALUE document) {
56
+ ruby_xml_document_t *rdoc;
57
+ ruby_xml_relaxng *relaxng;
58
+ xmlRelaxNGParserCtxtPtr parser;
59
+
60
+ Data_Get_Struct(document, ruby_xml_document_t, rdoc);
61
+
62
+ parser = xmlRelaxNGNewDocParserCtxt(rdoc->doc);
63
+ relaxng = ALLOC(ruby_xml_relaxng);
64
+ relaxng->relaxng = xmlRelaxNGParse(parser);
65
+ xmlRelaxNGFreeParserCtxt(parser);
66
+
67
+ return Data_Wrap_Struct(cXMLRelaxNG, ruby_xml_relaxng_mark, ruby_xml_relaxng_free, relaxng);
68
+ }
69
+
70
+ /*
71
+ * call-seq:
72
+ * XML::RelaxNG.string("relaxng_data") -> "value"
73
+ *
74
+ * Create a new relaxng using the specified string.
75
+ */
76
+ VALUE
77
+ ruby_xml_relaxng_init_from_string(VALUE self, VALUE relaxng_str) {
78
+ xmlRelaxNGParserCtxtPtr parser;
79
+ ruby_xml_relaxng *rxrelaxng;
80
+
81
+ Check_Type(relaxng_str, T_STRING);
82
+
83
+ parser = xmlRelaxNGNewMemParserCtxt(StringValuePtr(relaxng_str), strlen(StringValuePtr(relaxng_str)));
84
+ rxrelaxng = ALLOC(ruby_xml_relaxng);
85
+ rxrelaxng->relaxng = xmlRelaxNGParse(parser);
86
+ xmlRelaxNGFreeParserCtxt(parser);
87
+
88
+ return Data_Wrap_Struct(cXMLRelaxNG, ruby_xml_relaxng_mark, ruby_xml_relaxng_free, rxrelaxng);
89
+ }
90
+
91
+ void ruby_init_xml_relaxng(void) {
92
+ cXMLRelaxNG = rb_define_class_under(mXML, "RelaxNG", rb_cObject);
93
+ rb_define_singleton_method(cXMLRelaxNG, "new", ruby_xml_relaxng_init_from_uri, 1);
94
+ rb_define_singleton_method(cXMLRelaxNG, "from_string", ruby_xml_relaxng_init_from_string, 1);
95
+ rb_define_singleton_method(cXMLRelaxNG, "document", ruby_xml_relaxng_init_from_document, 1);
96
+ }
97
+
@@ -0,0 +1,15 @@
1
+ #ifndef __RUBY_XML_RELAXNG__
2
+ #define __RUBY_XML_RELAXNG__
3
+
4
+ #include <libxml/relaxng.h>
5
+
6
+ extern VALUE cXMLRelaxNG;
7
+
8
+ typedef struct rxp_relaxng {
9
+ xmlRelaxNGPtr relaxng; /* RelaxNG interface */
10
+ } ruby_xml_relaxng;
11
+
12
+ void ruby_init_xml_relaxng(void);
13
+ void ruby_relaxng_free(ruby_xml_relaxng *rxs);
14
+ #endif
15
+
@@ -1,486 +1,486 @@
1
- /* $Id: ruby_xml_sax_parser.c 461 2008-07-15 21:35:56Z cfis $ */
2
-
3
- /* Please see the LICENSE file for copyright and distribution information */
4
-
5
- #include "ruby_libxml.h"
6
- #include "ruby_xml_sax_parser.h"
7
-
8
- VALUE cXMLSaxParser;
9
- VALUE mXMLSaxParserCallbacks;
10
-
11
- VALUE cbidOnInternalSubset;
12
- VALUE cbidOnIsStandalone;
13
- VALUE cbidOnHasInternalSubset;
14
- VALUE cbidOnHasExternalSubset;
15
- VALUE cbidOnStartDocument;
16
- VALUE cbidOnEndDocument;
17
- VALUE cbidOnStartElement;
18
- VALUE cbidOnEndElement;
19
- VALUE cbidOnReference;
20
- VALUE cbidOnCharacters;
21
- VALUE cbidOnProcessingInstruction;
22
- VALUE cbidOnComment;
23
- VALUE cbidOnXmlParserWarning;
24
- VALUE cbidOnXmlParserError;
25
- VALUE cbidOnXmlParserFatalError;
26
- VALUE cbidOnCdataBlock;
27
- VALUE cbidOnExternalSubset;
28
-
29
- #include "sax_parser_callbacks.inc"
30
-
31
- void
32
- ruby_xml_sax_parser_free(ruby_xml_sax_parser *nodesp) {
33
- /* Apparently this isn't needed: time will tell */
34
- /* if (nodesp->xsh != NULL) */
35
- /* xmlFreeSax_Parser(nodesp->sax_parser); */
36
- }
37
-
38
- void
39
- ruby_xml_sax_parser_mark(ruby_xml_sax_parser *nodesp) {
40
- if (nodesp->callbackHandler && (nodesp->callbackHandler != Qnil)) {
41
- rb_gc_mark(nodesp->callbackHandler);
42
- }
43
-
44
- if (nodesp->filename && (nodesp->filename != Qnil)) {
45
- rb_gc_mark(nodesp->filename);
46
- }
47
-
48
- if (nodesp->str && (nodesp->str != Qnil)) {
49
- rb_gc_mark(nodesp->str);
50
- }
51
- }
52
-
53
- /*
54
- * call-seq:
55
- * XML::SaxParser.new -> sax_parser
56
- *
57
- * Create a new XML::SaxParser instance.
58
- */
59
- VALUE
60
- ruby_xml_sax_parser_new(VALUE class) {
61
- ruby_xml_sax_parser *nodesp;
62
-
63
- nodesp = ALLOC(ruby_xml_sax_parser);
64
- nodesp->xsh = &rubySAXHandlerStruct;
65
-
66
- nodesp->callbackHandler = Qnil;
67
- nodesp->xpc = NULL;
68
- nodesp->filename = Qnil;
69
- nodesp->str = Qnil;
70
-
71
- return(Data_Wrap_Struct(class, ruby_xml_sax_parser_mark,
72
- ruby_xml_sax_parser_free, nodesp));
73
- }
74
-
75
-
76
- /*
77
- * call-seq:
78
- * sax_parser.callbacks -> #<XML::SaxParser::Callbacks subclass>
79
- *
80
- * Obtain the callbacks used by this parser.
81
- */
82
- VALUE
83
- ruby_xml_sax_parser_callbacks_get(VALUE self) {
84
- ruby_xml_sax_parser *nodesp;
85
- Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
86
- return(nodesp->callbackHandler);
87
- }
88
-
89
-
90
- /*
91
- * call-seq:
92
- * sax_parser.callbacks = #<XML::SaxParser::Callbacks subclass>
93
- *
94
- * Set the callbacks used by this parser. The value assigned to
95
- * this attributesibute will usually be an object that extends the the
96
- * XML::SaxParser::Callbacks module, overriding the callbacks it
97
- * wishes to process.
98
- */
99
- VALUE
100
- ruby_xml_sax_parser_callbacks_set(VALUE self, VALUE callbacks) {
101
- ruby_xml_sax_parser *nodesp;
102
- Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
103
- nodesp->callbackHandler = callbacks;
104
- return(nodesp->callbackHandler);
105
- }
106
-
107
-
108
- /*
109
- * call-seq:
110
- * sax_parser.filename -> "filename"
111
- *
112
- * Obtain the filename this parser reads from.
113
- */
114
- VALUE
115
- ruby_xml_sax_parser_filename_get(VALUE self) {
116
- ruby_xml_sax_parser *nodesp;
117
- Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
118
- return(nodesp->filename);
119
- }
120
-
121
-
122
- /*
123
- * call-seq:
124
- * sax_parser.filename = "filename"
125
- *
126
- * Set the filename this parser reads from.
127
- */
128
- VALUE
129
- ruby_xml_sax_parser_filename_set(VALUE self, VALUE filename) {
130
- ruby_xml_sax_parser *nodesp;
131
- Check_Type(filename, T_STRING);
132
- Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
133
- nodesp->filename = filename;
134
- return(nodesp->filename);
135
- }
136
-
137
-
138
- /*
139
- * call-seq:
140
- * parser.parse -> (true|false)
141
- *
142
- * Parse the input XML, generating callbacks to the object
143
- * registered via the +callbacks+ attributesibute.
144
- */
145
- VALUE
146
- ruby_xml_sax_parser_parse(VALUE self) {
147
- char *str;
148
- int status = 1;
149
- ruby_xml_sax_parser *nodesp;
150
-
151
- Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
152
-
153
- if (nodesp->filename != Qnil) {
154
- status = xmlSAXUserParseFile(nodesp->xsh, nodesp, StringValuePtr(nodesp->filename));
155
- } else if (nodesp->str != Qnil) {
156
- str = StringValuePtr(nodesp->str);
157
- status = //ruby_xml_document_new(cXMLDocument,
158
- xmlSAXUserParseMemory(nodesp->xsh, nodesp,
159
- str, strlen(str)); //);
160
- }
161
-
162
- /* XXX This should return an exception for the various error codes
163
- * that can come back in status, but I'm too lazy to do that right
164
- * now. */
165
- if (status)
166
- return(Qfalse);
167
- else
168
- return(Qtrue);
169
- }
170
-
171
-
172
- /*
173
- * call-seq:
174
- * parser.string -> "xml"
175
- *
176
- * Obtain the parser's input string.
177
- */
178
- VALUE
179
- ruby_xml_sax_parser_str_get(VALUE self) {
180
- ruby_xml_sax_parser *nodesp;
181
- Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
182
- return(nodesp->str);
183
- }
184
-
185
-
186
- /*
187
- * call-seq:
188
- * parser.string = "xml"
189
- *
190
- * Set the parser's input string.
191
- */
192
- VALUE
193
- ruby_xml_sax_parser_str_set(VALUE self, VALUE str) {
194
- ruby_xml_sax_parser *nodesp;
195
- Check_Type(str, T_STRING);
196
- Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
197
- nodesp->str = str;
198
- return(nodesp->str);
199
- }
200
-
201
-
202
- /****** SaxCallbacks ******/
203
- /* These are all the same. Bloody Rdoc... */
204
-
205
- /*
206
- * call-seq:
207
- * callbacks.on_internal_subset(name, external_id, system_id)
208
- *
209
- * Called for an internal subset event.
210
- */
211
- VALUE
212
- ruby_xml_sax_callbacks_on_internal_subset(int argc, VALUE *argv, VALUE self) {
213
- return Qnil;
214
- }
215
-
216
-
217
- /*
218
- * call-seq:
219
- * callbacks.on_is_standalone()
220
- *
221
- * Called for 'is standalone' event.
222
- */
223
- VALUE
224
- ruby_xml_sax_callbacks_on_is_standalone(int argc, VALUE *argv, VALUE self) {
225
- return Qnil;
226
- }
227
-
228
-
229
- /*
230
- * call-seq:
231
- * callbacks.on_has_internal_subset()
232
- *
233
- * Called for an internal subset notification event.
234
- */
235
- VALUE
236
- ruby_xml_sax_callbacks_on_has_internal_subset(int argc, VALUE *argv, VALUE self) {
237
- return Qnil;
238
- }
239
-
240
-
241
- /*
242
- * call-seq:
243
- * callbacks.on_has_external_subset()
244
- *
245
- * Called for an external subset notification event.
246
- */
247
- VALUE
248
- ruby_xml_sax_callbacks_on_has_external_subset(int argc, VALUE *argv, VALUE self) {
249
- return Qnil;
250
- }
251
-
252
-
253
- /*
254
- * call-seq:
255
- * callbacks.on_start_document()
256
- *
257
- * Called for a start document event.
258
- */
259
- VALUE
260
- ruby_xml_sax_callbacks_on_start_document(int argc, VALUE *argv, VALUE self) {
261
- return Qnil;
262
- }
263
-
264
-
265
- /*
266
- * call-seq:
267
- * callbacks.on_end_document()
268
- *
269
- * Called for an end document event.
270
- */
271
- VALUE
272
- ruby_xml_sax_callbacks_on_end_document(int argc, VALUE *argv, VALUE self) {
273
- return Qnil;
274
- }
275
-
276
-
277
- /*
278
- * call-seq:
279
- * callbacks.on_start_element(name, attributes_hash)
280
- *
281
- * Called for an element start event.
282
- */
283
- VALUE
284
- ruby_xml_sax_callbacks_on_start_element(int argc, VALUE *argv, VALUE self) {
285
- return Qnil;
286
- }
287
-
288
-
289
- /*
290
- * call-seq:
291
- * callbacks.on_end_element(name)
292
- *
293
- * Called for an element end event.
294
- */
295
- VALUE
296
- ruby_xml_sax_callbacks_on_end_element(int argc, VALUE *argv, VALUE self) {
297
- return Qnil;
298
- }
299
-
300
-
301
- /*
302
- * call-seq:
303
- * callbacks.on_reference(name)
304
- *
305
- * Called for a reference event.
306
- */
307
- VALUE
308
- ruby_xml_sax_callbacks_on_reference(int argc, VALUE *argv, VALUE self) {
309
- return Qnil;
310
- }
311
-
312
-
313
- /*
314
- * call-seq:
315
- * callbacks.on_characters(chars)
316
- *
317
- * Called for a characters event.
318
- */
319
- VALUE
320
- ruby_xml_sax_callbacks_on_characters(int argc, VALUE *argv, VALUE self) {
321
- return Qnil;
322
- }
323
-
324
-
325
- /*
326
- * call-seq:
327
- * callbacks.on_processing_instruction(target, data)
328
- *
329
- * Called for an processing instruction event.
330
- */
331
- VALUE
332
- ruby_xml_sax_callbacks_on_processing_instruction(int argc, VALUE *argv, VALUE self) {
333
- return Qnil;
334
- }
335
-
336
-
337
- /*
338
- * call-seq:
339
- * callbacks.on_comment(msg)
340
- *
341
- * Called for a comment event.
342
- */
343
- VALUE
344
- ruby_xml_sax_callbacks_on_comment(int argc, VALUE *argv, VALUE self) {
345
- return Qnil;
346
- }
347
-
348
-
349
- /*
350
- * call-seq:
351
- * callbacks.on_parser_warning(msg)
352
- *
353
- * Called for parser warnings.
354
- */
355
- VALUE
356
- ruby_xml_sax_callbacks_on_parser_warning(int argc, VALUE *argv, VALUE self) {
357
- return Qnil;
358
- }
359
-
360
-
361
- /*
362
- * call-seq:
363
- * callbacks.on_parser_error(msg)
364
- *
365
- * Called for parser errors.
366
- */
367
- VALUE
368
- ruby_xml_sax_callbacks_on_parser_error(int argc, VALUE *argv, VALUE self) {
369
- return Qnil;
370
- }
371
-
372
-
373
- /*
374
- * call-seq:
375
- * callbacks.on_parser_fatal_error(msg)
376
- *
377
- * Called for fatal parser errors.
378
- */
379
- VALUE
380
- ruby_xml_sax_callbacks_on_parser_fatal_error(int argc, VALUE *argv, VALUE self) {
381
- return Qnil;
382
- }
383
-
384
- /*
385
- * call-seq:
386
- * callbacks.on_cdata_block(cdata)
387
- *
388
- * Called for a CDATA block event.
389
- */
390
- VALUE
391
- ruby_xml_sax_callbacks_on_cdata_block(int argc, VALUE *argv, VALUE self) {
392
- return Qnil;
393
- }
394
-
395
- /*
396
- * call-seq:
397
- * callbacks.on_external_subset(name, external_id, system_id)
398
- *
399
- * Called for an external subset event.
400
- */
401
- VALUE
402
- ruby_xml_sax_callbacks_on_external_subset(int argc, VALUE *argv, VALUE self) {
403
- return Qnil;
404
- }
405
-
406
-
407
- // Rdoc needs to know
408
- #ifdef RDOC_NEVER_DEFINED
409
- mLibXML = rb_define_module("LibXML");
410
- mXML = rb_define_module_under(mLibXML, "XML");
411
- #endif
412
-
413
- void
414
- ruby_init_xml_sax_parser(void) {
415
- cXMLSaxParser = rb_define_class_under(mXML, "SaxParser", rb_cObject);
416
- mXMLSaxParserCallbacks = rb_define_module_under(cXMLSaxParser, "Callbacks");
417
-
418
- /* SaxParser */
419
- rb_define_singleton_method(cXMLSaxParser, "new", ruby_xml_sax_parser_new, 0);
420
-
421
- rb_define_method(cXMLSaxParser, "filename",
422
- ruby_xml_sax_parser_filename_get, 0);
423
- rb_define_method(cXMLSaxParser, "filename=",
424
- ruby_xml_sax_parser_filename_set, 1);
425
- rb_define_method(cXMLSaxParser, "callbacks",
426
- ruby_xml_sax_parser_callbacks_get, 0);
427
- rb_define_method(cXMLSaxParser, "callbacks=",
428
- ruby_xml_sax_parser_callbacks_set, 1);
429
- rb_define_method(cXMLSaxParser, "parse", ruby_xml_sax_parser_parse, 0);
430
- rb_define_method(cXMLSaxParser, "string", ruby_xml_sax_parser_str_get, 0);
431
- rb_define_method(cXMLSaxParser, "string=", ruby_xml_sax_parser_str_set, 1);
432
-
433
- /* SaxCallbacks */
434
- cbidOnInternalSubset = rb_intern("on_internal_subset");
435
- cbidOnIsStandalone = rb_intern("on_is_standalone");
436
- cbidOnHasInternalSubset = rb_intern("on_has_internal_subset");
437
- cbidOnHasExternalSubset = rb_intern("on_has_external_subset");
438
- cbidOnStartDocument = rb_intern("on_start_document");
439
- cbidOnEndDocument = rb_intern("on_end_document");
440
- cbidOnStartElement = rb_intern("on_start_element");
441
- cbidOnEndElement = rb_intern("on_end_element");
442
- cbidOnReference = rb_intern("on_reference");
443
- cbidOnCharacters = rb_intern("on_characters");
444
- cbidOnProcessingInstruction = rb_intern("on_processing_instruction");
445
- cbidOnComment = rb_intern("on_comment");
446
- cbidOnXmlParserWarning = rb_intern("on_parser_warning");
447
- cbidOnXmlParserError = rb_intern("on_parser_error");
448
- cbidOnXmlParserFatalError = rb_intern("on_parser_fatal_error");
449
- cbidOnCdataBlock = rb_intern("on_cdata_block");
450
- cbidOnExternalSubset = rb_intern("on_external_subset");
451
-
452
- rb_define_method(mXMLSaxParserCallbacks, "on_internal_subset",
453
- ruby_xml_sax_callbacks_on_internal_subset, -1);
454
- rb_define_method(mXMLSaxParserCallbacks, "on_is_standalone",
455
- ruby_xml_sax_callbacks_on_is_standalone, -1);
456
- rb_define_method(mXMLSaxParserCallbacks, "on_has_internal_subset",
457
- ruby_xml_sax_callbacks_on_has_internal_subset, -1);
458
- rb_define_method(mXMLSaxParserCallbacks, "on_has_external_subset",
459
- ruby_xml_sax_callbacks_on_has_external_subset, -1);
460
- rb_define_method(mXMLSaxParserCallbacks, "on_start_document",
461
- ruby_xml_sax_callbacks_on_start_document, -1);
462
- rb_define_method(mXMLSaxParserCallbacks, "on_end_document",
463
- ruby_xml_sax_callbacks_on_end_document, -1);
464
- rb_define_method(mXMLSaxParserCallbacks, "on_start_element",
465
- ruby_xml_sax_callbacks_on_start_element, -1);
466
- rb_define_method(mXMLSaxParserCallbacks, "on_end_element",
467
- ruby_xml_sax_callbacks_on_end_element, -1);
468
- rb_define_method(mXMLSaxParserCallbacks, "on_reference",
469
- ruby_xml_sax_callbacks_on_reference, -1);
470
- rb_define_method(mXMLSaxParserCallbacks, "on_characters",
471
- ruby_xml_sax_callbacks_on_characters, -1);
472
- rb_define_method(mXMLSaxParserCallbacks, "on_processing_instruction",
473
- ruby_xml_sax_callbacks_on_processing_instruction, -1);
474
- rb_define_method(mXMLSaxParserCallbacks, "on_comment",
475
- ruby_xml_sax_callbacks_on_comment, -1);
476
- rb_define_method(mXMLSaxParserCallbacks, "on_parser_warning",
477
- ruby_xml_sax_callbacks_on_parser_warning, -1);
478
- rb_define_method(mXMLSaxParserCallbacks, "on_parser_error",
479
- ruby_xml_sax_callbacks_on_parser_error, -1);
480
- rb_define_method(mXMLSaxParserCallbacks, "on_parser_fatal_error",
481
- ruby_xml_sax_callbacks_on_parser_fatal_error, -1);
482
- rb_define_method(mXMLSaxParserCallbacks, "on_cdata_block",
483
- ruby_xml_sax_callbacks_on_cdata_block, -1);
484
- rb_define_method(mXMLSaxParserCallbacks, "on_external_subset",
485
- ruby_xml_sax_callbacks_on_external_subset, -1);
486
- }
1
+ /* $Id: ruby_xml_sax_parser.c 461 2008-07-15 21:35:56Z cfis $ */
2
+
3
+ /* Please see the LICENSE file for copyright and distribution information */
4
+
5
+ #include "ruby_libxml.h"
6
+ #include "ruby_xml_sax_parser.h"
7
+
8
+ VALUE cXMLSaxParser;
9
+ VALUE mXMLSaxParserCallbacks;
10
+
11
+ VALUE cbidOnInternalSubset;
12
+ VALUE cbidOnIsStandalone;
13
+ VALUE cbidOnHasInternalSubset;
14
+ VALUE cbidOnHasExternalSubset;
15
+ VALUE cbidOnStartDocument;
16
+ VALUE cbidOnEndDocument;
17
+ VALUE cbidOnStartElement;
18
+ VALUE cbidOnEndElement;
19
+ VALUE cbidOnReference;
20
+ VALUE cbidOnCharacters;
21
+ VALUE cbidOnProcessingInstruction;
22
+ VALUE cbidOnComment;
23
+ VALUE cbidOnXmlParserWarning;
24
+ VALUE cbidOnXmlParserError;
25
+ VALUE cbidOnXmlParserFatalError;
26
+ VALUE cbidOnCdataBlock;
27
+ VALUE cbidOnExternalSubset;
28
+
29
+ #include "sax_parser_callbacks.inc"
30
+
31
+ void
32
+ ruby_xml_sax_parser_free(ruby_xml_sax_parser *nodesp) {
33
+ /* Apparently this isn't needed: time will tell */
34
+ /* if (nodesp->xsh != NULL) */
35
+ /* xmlFreeSax_Parser(nodesp->sax_parser); */
36
+ }
37
+
38
+ void
39
+ ruby_xml_sax_parser_mark(ruby_xml_sax_parser *nodesp) {
40
+ if (nodesp->callbackHandler && (nodesp->callbackHandler != Qnil)) {
41
+ rb_gc_mark(nodesp->callbackHandler);
42
+ }
43
+
44
+ if (nodesp->filename && (nodesp->filename != Qnil)) {
45
+ rb_gc_mark(nodesp->filename);
46
+ }
47
+
48
+ if (nodesp->str && (nodesp->str != Qnil)) {
49
+ rb_gc_mark(nodesp->str);
50
+ }
51
+ }
52
+
53
+ /*
54
+ * call-seq:
55
+ * XML::SaxParser.new -> sax_parser
56
+ *
57
+ * Create a new XML::SaxParser instance.
58
+ */
59
+ VALUE
60
+ ruby_xml_sax_parser_new(VALUE class) {
61
+ ruby_xml_sax_parser *nodesp;
62
+
63
+ nodesp = ALLOC(ruby_xml_sax_parser);
64
+ nodesp->xsh = &rubySAXHandlerStruct;
65
+
66
+ nodesp->callbackHandler = Qnil;
67
+ nodesp->xpc = NULL;
68
+ nodesp->filename = Qnil;
69
+ nodesp->str = Qnil;
70
+
71
+ return(Data_Wrap_Struct(class, ruby_xml_sax_parser_mark,
72
+ ruby_xml_sax_parser_free, nodesp));
73
+ }
74
+
75
+
76
+ /*
77
+ * call-seq:
78
+ * sax_parser.callbacks -> #<XML::SaxParser::Callbacks subclass>
79
+ *
80
+ * Obtain the callbacks used by this parser.
81
+ */
82
+ VALUE
83
+ ruby_xml_sax_parser_callbacks_get(VALUE self) {
84
+ ruby_xml_sax_parser *nodesp;
85
+ Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
86
+ return(nodesp->callbackHandler);
87
+ }
88
+
89
+
90
+ /*
91
+ * call-seq:
92
+ * sax_parser.callbacks = #<XML::SaxParser::Callbacks subclass>
93
+ *
94
+ * Set the callbacks used by this parser. The value assigned to
95
+ * this attributesibute will usually be an object that extends the the
96
+ * XML::SaxParser::Callbacks module, overriding the callbacks it
97
+ * wishes to process.
98
+ */
99
+ VALUE
100
+ ruby_xml_sax_parser_callbacks_set(VALUE self, VALUE callbacks) {
101
+ ruby_xml_sax_parser *nodesp;
102
+ Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
103
+ nodesp->callbackHandler = callbacks;
104
+ return(nodesp->callbackHandler);
105
+ }
106
+
107
+
108
+ /*
109
+ * call-seq:
110
+ * sax_parser.filename -> "filename"
111
+ *
112
+ * Obtain the filename this parser reads from.
113
+ */
114
+ VALUE
115
+ ruby_xml_sax_parser_filename_get(VALUE self) {
116
+ ruby_xml_sax_parser *nodesp;
117
+ Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
118
+ return(nodesp->filename);
119
+ }
120
+
121
+
122
+ /*
123
+ * call-seq:
124
+ * sax_parser.filename = "filename"
125
+ *
126
+ * Set the filename this parser reads from.
127
+ */
128
+ VALUE
129
+ ruby_xml_sax_parser_filename_set(VALUE self, VALUE filename) {
130
+ ruby_xml_sax_parser *nodesp;
131
+ Check_Type(filename, T_STRING);
132
+ Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
133
+ nodesp->filename = filename;
134
+ return(nodesp->filename);
135
+ }
136
+
137
+
138
+ /*
139
+ * call-seq:
140
+ * parser.parse -> (true|false)
141
+ *
142
+ * Parse the input XML, generating callbacks to the object
143
+ * registered via the +callbacks+ attributesibute.
144
+ */
145
+ VALUE
146
+ ruby_xml_sax_parser_parse(VALUE self) {
147
+ char *str;
148
+ int status = 1;
149
+ ruby_xml_sax_parser *nodesp;
150
+
151
+ Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
152
+
153
+ if (nodesp->filename != Qnil) {
154
+ status = xmlSAXUserParseFile(nodesp->xsh, nodesp, StringValuePtr(nodesp->filename));
155
+ } else if (nodesp->str != Qnil) {
156
+ str = StringValuePtr(nodesp->str);
157
+ status = //ruby_xml_document_new(cXMLDocument,
158
+ xmlSAXUserParseMemory(nodesp->xsh, nodesp,
159
+ str, strlen(str)); //);
160
+ }
161
+
162
+ /* XXX This should return an exception for the various error codes
163
+ * that can come back in status, but I'm too lazy to do that right
164
+ * now. */
165
+ if (status)
166
+ return(Qfalse);
167
+ else
168
+ return(Qtrue);
169
+ }
170
+
171
+
172
+ /*
173
+ * call-seq:
174
+ * parser.string -> "xml"
175
+ *
176
+ * Obtain the parser's input string.
177
+ */
178
+ VALUE
179
+ ruby_xml_sax_parser_str_get(VALUE self) {
180
+ ruby_xml_sax_parser *nodesp;
181
+ Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
182
+ return(nodesp->str);
183
+ }
184
+
185
+
186
+ /*
187
+ * call-seq:
188
+ * parser.string = "xml"
189
+ *
190
+ * Set the parser's input string.
191
+ */
192
+ VALUE
193
+ ruby_xml_sax_parser_str_set(VALUE self, VALUE str) {
194
+ ruby_xml_sax_parser *nodesp;
195
+ Check_Type(str, T_STRING);
196
+ Data_Get_Struct(self, ruby_xml_sax_parser, nodesp);
197
+ nodesp->str = str;
198
+ return(nodesp->str);
199
+ }
200
+
201
+
202
+ /****** SaxCallbacks ******/
203
+ /* These are all the same. Bloody Rdoc... */
204
+
205
+ /*
206
+ * call-seq:
207
+ * callbacks.on_internal_subset(name, external_id, system_id)
208
+ *
209
+ * Called for an internal subset event.
210
+ */
211
+ VALUE
212
+ ruby_xml_sax_callbacks_on_internal_subset(int argc, VALUE *argv, VALUE self) {
213
+ return Qnil;
214
+ }
215
+
216
+
217
+ /*
218
+ * call-seq:
219
+ * callbacks.on_is_standalone()
220
+ *
221
+ * Called for 'is standalone' event.
222
+ */
223
+ VALUE
224
+ ruby_xml_sax_callbacks_on_is_standalone(int argc, VALUE *argv, VALUE self) {
225
+ return Qnil;
226
+ }
227
+
228
+
229
+ /*
230
+ * call-seq:
231
+ * callbacks.on_has_internal_subset()
232
+ *
233
+ * Called for an internal subset notification event.
234
+ */
235
+ VALUE
236
+ ruby_xml_sax_callbacks_on_has_internal_subset(int argc, VALUE *argv, VALUE self) {
237
+ return Qnil;
238
+ }
239
+
240
+
241
+ /*
242
+ * call-seq:
243
+ * callbacks.on_has_external_subset()
244
+ *
245
+ * Called for an external subset notification event.
246
+ */
247
+ VALUE
248
+ ruby_xml_sax_callbacks_on_has_external_subset(int argc, VALUE *argv, VALUE self) {
249
+ return Qnil;
250
+ }
251
+
252
+
253
+ /*
254
+ * call-seq:
255
+ * callbacks.on_start_document()
256
+ *
257
+ * Called for a start document event.
258
+ */
259
+ VALUE
260
+ ruby_xml_sax_callbacks_on_start_document(int argc, VALUE *argv, VALUE self) {
261
+ return Qnil;
262
+ }
263
+
264
+
265
+ /*
266
+ * call-seq:
267
+ * callbacks.on_end_document()
268
+ *
269
+ * Called for an end document event.
270
+ */
271
+ VALUE
272
+ ruby_xml_sax_callbacks_on_end_document(int argc, VALUE *argv, VALUE self) {
273
+ return Qnil;
274
+ }
275
+
276
+
277
+ /*
278
+ * call-seq:
279
+ * callbacks.on_start_element(name, attributes_hash)
280
+ *
281
+ * Called for an element start event.
282
+ */
283
+ VALUE
284
+ ruby_xml_sax_callbacks_on_start_element(int argc, VALUE *argv, VALUE self) {
285
+ return Qnil;
286
+ }
287
+
288
+
289
+ /*
290
+ * call-seq:
291
+ * callbacks.on_end_element(name)
292
+ *
293
+ * Called for an element end event.
294
+ */
295
+ VALUE
296
+ ruby_xml_sax_callbacks_on_end_element(int argc, VALUE *argv, VALUE self) {
297
+ return Qnil;
298
+ }
299
+
300
+
301
+ /*
302
+ * call-seq:
303
+ * callbacks.on_reference(name)
304
+ *
305
+ * Called for a reference event.
306
+ */
307
+ VALUE
308
+ ruby_xml_sax_callbacks_on_reference(int argc, VALUE *argv, VALUE self) {
309
+ return Qnil;
310
+ }
311
+
312
+
313
+ /*
314
+ * call-seq:
315
+ * callbacks.on_characters(chars)
316
+ *
317
+ * Called for a characters event.
318
+ */
319
+ VALUE
320
+ ruby_xml_sax_callbacks_on_characters(int argc, VALUE *argv, VALUE self) {
321
+ return Qnil;
322
+ }
323
+
324
+
325
+ /*
326
+ * call-seq:
327
+ * callbacks.on_processing_instruction(target, data)
328
+ *
329
+ * Called for an processing instruction event.
330
+ */
331
+ VALUE
332
+ ruby_xml_sax_callbacks_on_processing_instruction(int argc, VALUE *argv, VALUE self) {
333
+ return Qnil;
334
+ }
335
+
336
+
337
+ /*
338
+ * call-seq:
339
+ * callbacks.on_comment(msg)
340
+ *
341
+ * Called for a comment event.
342
+ */
343
+ VALUE
344
+ ruby_xml_sax_callbacks_on_comment(int argc, VALUE *argv, VALUE self) {
345
+ return Qnil;
346
+ }
347
+
348
+
349
+ /*
350
+ * call-seq:
351
+ * callbacks.on_parser_warning(msg)
352
+ *
353
+ * Called for parser warnings.
354
+ */
355
+ VALUE
356
+ ruby_xml_sax_callbacks_on_parser_warning(int argc, VALUE *argv, VALUE self) {
357
+ return Qnil;
358
+ }
359
+
360
+
361
+ /*
362
+ * call-seq:
363
+ * callbacks.on_parser_error(msg)
364
+ *
365
+ * Called for parser errors.
366
+ */
367
+ VALUE
368
+ ruby_xml_sax_callbacks_on_parser_error(int argc, VALUE *argv, VALUE self) {
369
+ return Qnil;
370
+ }
371
+
372
+
373
+ /*
374
+ * call-seq:
375
+ * callbacks.on_parser_fatal_error(msg)
376
+ *
377
+ * Called for fatal parser errors.
378
+ */
379
+ VALUE
380
+ ruby_xml_sax_callbacks_on_parser_fatal_error(int argc, VALUE *argv, VALUE self) {
381
+ return Qnil;
382
+ }
383
+
384
+ /*
385
+ * call-seq:
386
+ * callbacks.on_cdata_block(cdata)
387
+ *
388
+ * Called for a CDATA block event.
389
+ */
390
+ VALUE
391
+ ruby_xml_sax_callbacks_on_cdata_block(int argc, VALUE *argv, VALUE self) {
392
+ return Qnil;
393
+ }
394
+
395
+ /*
396
+ * call-seq:
397
+ * callbacks.on_external_subset(name, external_id, system_id)
398
+ *
399
+ * Called for an external subset event.
400
+ */
401
+ VALUE
402
+ ruby_xml_sax_callbacks_on_external_subset(int argc, VALUE *argv, VALUE self) {
403
+ return Qnil;
404
+ }
405
+
406
+
407
+ // Rdoc needs to know
408
+ #ifdef RDOC_NEVER_DEFINED
409
+ mLibXML = rb_define_module("LibXML");
410
+ mXML = rb_define_module_under(mLibXML, "XML");
411
+ #endif
412
+
413
+ void
414
+ ruby_init_xml_sax_parser(void) {
415
+ cXMLSaxParser = rb_define_class_under(mXML, "SaxParser", rb_cObject);
416
+ mXMLSaxParserCallbacks = rb_define_module_under(cXMLSaxParser, "Callbacks");
417
+
418
+ /* SaxParser */
419
+ rb_define_singleton_method(cXMLSaxParser, "new", ruby_xml_sax_parser_new, 0);
420
+
421
+ rb_define_method(cXMLSaxParser, "filename",
422
+ ruby_xml_sax_parser_filename_get, 0);
423
+ rb_define_method(cXMLSaxParser, "filename=",
424
+ ruby_xml_sax_parser_filename_set, 1);
425
+ rb_define_method(cXMLSaxParser, "callbacks",
426
+ ruby_xml_sax_parser_callbacks_get, 0);
427
+ rb_define_method(cXMLSaxParser, "callbacks=",
428
+ ruby_xml_sax_parser_callbacks_set, 1);
429
+ rb_define_method(cXMLSaxParser, "parse", ruby_xml_sax_parser_parse, 0);
430
+ rb_define_method(cXMLSaxParser, "string", ruby_xml_sax_parser_str_get, 0);
431
+ rb_define_method(cXMLSaxParser, "string=", ruby_xml_sax_parser_str_set, 1);
432
+
433
+ /* SaxCallbacks */
434
+ cbidOnInternalSubset = rb_intern("on_internal_subset");
435
+ cbidOnIsStandalone = rb_intern("on_is_standalone");
436
+ cbidOnHasInternalSubset = rb_intern("on_has_internal_subset");
437
+ cbidOnHasExternalSubset = rb_intern("on_has_external_subset");
438
+ cbidOnStartDocument = rb_intern("on_start_document");
439
+ cbidOnEndDocument = rb_intern("on_end_document");
440
+ cbidOnStartElement = rb_intern("on_start_element");
441
+ cbidOnEndElement = rb_intern("on_end_element");
442
+ cbidOnReference = rb_intern("on_reference");
443
+ cbidOnCharacters = rb_intern("on_characters");
444
+ cbidOnProcessingInstruction = rb_intern("on_processing_instruction");
445
+ cbidOnComment = rb_intern("on_comment");
446
+ cbidOnXmlParserWarning = rb_intern("on_parser_warning");
447
+ cbidOnXmlParserError = rb_intern("on_parser_error");
448
+ cbidOnXmlParserFatalError = rb_intern("on_parser_fatal_error");
449
+ cbidOnCdataBlock = rb_intern("on_cdata_block");
450
+ cbidOnExternalSubset = rb_intern("on_external_subset");
451
+
452
+ rb_define_method(mXMLSaxParserCallbacks, "on_internal_subset",
453
+ ruby_xml_sax_callbacks_on_internal_subset, -1);
454
+ rb_define_method(mXMLSaxParserCallbacks, "on_is_standalone",
455
+ ruby_xml_sax_callbacks_on_is_standalone, -1);
456
+ rb_define_method(mXMLSaxParserCallbacks, "on_has_internal_subset",
457
+ ruby_xml_sax_callbacks_on_has_internal_subset, -1);
458
+ rb_define_method(mXMLSaxParserCallbacks, "on_has_external_subset",
459
+ ruby_xml_sax_callbacks_on_has_external_subset, -1);
460
+ rb_define_method(mXMLSaxParserCallbacks, "on_start_document",
461
+ ruby_xml_sax_callbacks_on_start_document, -1);
462
+ rb_define_method(mXMLSaxParserCallbacks, "on_end_document",
463
+ ruby_xml_sax_callbacks_on_end_document, -1);
464
+ rb_define_method(mXMLSaxParserCallbacks, "on_start_element",
465
+ ruby_xml_sax_callbacks_on_start_element, -1);
466
+ rb_define_method(mXMLSaxParserCallbacks, "on_end_element",
467
+ ruby_xml_sax_callbacks_on_end_element, -1);
468
+ rb_define_method(mXMLSaxParserCallbacks, "on_reference",
469
+ ruby_xml_sax_callbacks_on_reference, -1);
470
+ rb_define_method(mXMLSaxParserCallbacks, "on_characters",
471
+ ruby_xml_sax_callbacks_on_characters, -1);
472
+ rb_define_method(mXMLSaxParserCallbacks, "on_processing_instruction",
473
+ ruby_xml_sax_callbacks_on_processing_instruction, -1);
474
+ rb_define_method(mXMLSaxParserCallbacks, "on_comment",
475
+ ruby_xml_sax_callbacks_on_comment, -1);
476
+ rb_define_method(mXMLSaxParserCallbacks, "on_parser_warning",
477
+ ruby_xml_sax_callbacks_on_parser_warning, -1);
478
+ rb_define_method(mXMLSaxParserCallbacks, "on_parser_error",
479
+ ruby_xml_sax_callbacks_on_parser_error, -1);
480
+ rb_define_method(mXMLSaxParserCallbacks, "on_parser_fatal_error",
481
+ ruby_xml_sax_callbacks_on_parser_fatal_error, -1);
482
+ rb_define_method(mXMLSaxParserCallbacks, "on_cdata_block",
483
+ ruby_xml_sax_callbacks_on_cdata_block, -1);
484
+ rb_define_method(mXMLSaxParserCallbacks, "on_external_subset",
485
+ ruby_xml_sax_callbacks_on_external_subset, -1);
486
+ }