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.
- data/CHANGES +21 -0
- data/RAKEFILE +213 -0
- data/README +32 -11
- data/doc/rdoc/classes/LibXML.html +4 -0
- data/doc/rdoc/classes/LibXML/XML.html +7 -0
- data/doc/rdoc/classes/LibXML/XML/Attr.html +187 -177
- data/doc/rdoc/classes/LibXML/XML/Attributes.html +62 -61
- data/doc/rdoc/classes/LibXML/XML/Document.html +318 -254
- data/doc/rdoc/classes/LibXML/XML/Dtd.html +62 -8
- data/doc/rdoc/classes/LibXML/XML/Error.html +6 -0
- data/doc/rdoc/classes/LibXML/XML/HTMLParser.html +59 -41
- data/doc/rdoc/classes/LibXML/XML/InputCallbacks.html +12 -6
- data/doc/rdoc/classes/LibXML/XML/NS.html +65 -50
- data/doc/rdoc/classes/LibXML/XML/Node.html +671 -630
- data/doc/rdoc/classes/LibXML/XML/Node/FailedModify.html +12 -0
- data/doc/rdoc/classes/LibXML/XML/Node/Set.html +64 -60
- data/doc/rdoc/classes/LibXML/XML/Node/SetNamespace.html +12 -0
- data/doc/rdoc/classes/LibXML/XML/Node/UnknownType.html +12 -0
- data/doc/rdoc/classes/LibXML/XML/Parser.html +407 -383
- data/doc/rdoc/classes/LibXML/XML/Parser/Context.html +241 -219
- data/doc/rdoc/classes/LibXML/XML/Parser/ParseError.html +12 -0
- data/doc/rdoc/classes/LibXML/XML/Reader.html +421 -331
- data/doc/rdoc/classes/LibXML/XML/RelaxNG.html +237 -0
- data/doc/rdoc/classes/LibXML/XML/SaxParser.html +79 -60
- data/doc/rdoc/classes/LibXML/XML/Schema.html +109 -22
- data/doc/rdoc/classes/LibXML/XML/State.html +6 -0
- data/doc/rdoc/classes/LibXML/XML/XInclude.html +6 -0
- data/doc/rdoc/classes/LibXML/XML/XInclude/Error.html +6 -0
- data/doc/rdoc/classes/LibXML/XML/XPath.html +4 -48
- data/doc/rdoc/classes/LibXML/XML/XPath/Context.html +6 -5
- data/doc/rdoc/classes/LibXML/XML/XPath/InvalidPath.html +61 -0
- data/doc/rdoc/classes/LibXML/XML/XPath/Object.html +12 -8
- data/doc/rdoc/classes/LibXML/XML/XPointer.html +14 -8
- data/doc/rdoc/classes/LibXML/XML/XPointer/Context.html +6 -0
- data/doc/rdoc/classes/LibXML/XML/XPointer/Context/InvalidPath.html +6 -0
- data/doc/rdoc/classes/LibXML/XML/XPointer/InvalidExpression.html +13 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/CHANGES.html +38 -10
- data/doc/rdoc/files/LICENSE.html +1 -1
- data/doc/rdoc/files/README.html +57 -23
- data/doc/rdoc/files/VERSION.html +1 -1
- data/doc/rdoc/files/ext/libxml/cbg_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/libxml_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_attr_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_attributes_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_document_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_dtd_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_html_parser_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_input_cbg_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_node_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_node_set_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_ns_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_parser_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_parser_context_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_reader_c.html +1 -1
- data/doc/rdoc/{classes/XML.html → files/ext/libxml/ruby_xml_relaxng_c.html} +16 -35
- data/doc/rdoc/files/ext/libxml/ruby_xml_sax_parser_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_schema_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_state_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_xinclude_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_context_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_xpath_object_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_xpointer_c.html +1 -1
- data/doc/rdoc/files/ext/libxml/ruby_xml_xpointer_context_c.html +1 -1
- data/doc/rdoc/files/lib/libxml/attr_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/attributes_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/document_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/node_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/node_set_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/parser_options_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/parser_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/properties_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml/tree_rb.html +1 -1
- data/doc/rdoc/files/lib/libxml_rb.html +2 -2
- data/doc/rdoc/files/lib/xml/libxml_rb.html +12 -2
- data/doc/rdoc/files/lib/xml_rb.html +134 -0
- data/doc/rdoc/fr_class_index.html +1 -1
- data/doc/rdoc/fr_file_index.html +2 -0
- data/doc/rdoc/fr_method_index.html +349 -344
- data/ext/libxml/libxml.c +2 -1
- data/ext/libxml/ruby_libxml.h +1 -0
- data/ext/libxml/ruby_xml_attr.c +8 -2
- data/ext/libxml/ruby_xml_attributes.c +5 -5
- data/ext/libxml/ruby_xml_document.c +41 -2
- data/ext/libxml/ruby_xml_dtd.c +169 -169
- data/ext/libxml/ruby_xml_html_parser.c +449 -449
- data/ext/libxml/ruby_xml_input_cbg.c +165 -165
- data/ext/libxml/ruby_xml_node.c +1 -1
- data/ext/libxml/ruby_xml_node_set.c +172 -172
- data/ext/libxml/ruby_xml_ns.c +145 -145
- data/ext/libxml/ruby_xml_parser.c +1398 -1398
- data/ext/libxml/ruby_xml_parser_context.c +697 -697
- data/ext/libxml/ruby_xml_reader.c +44 -0
- data/ext/libxml/ruby_xml_reader.h +14 -14
- data/ext/libxml/ruby_xml_relaxng.c +97 -0
- data/ext/libxml/ruby_xml_relaxng.h +15 -0
- data/ext/libxml/ruby_xml_sax_parser.c +486 -486
- data/ext/libxml/ruby_xml_schema.c +1 -1
- data/ext/libxml/ruby_xml_state.c +4 -4
- data/ext/libxml/ruby_xml_xinclude.c +21 -21
- data/ext/libxml/ruby_xml_xpath.c +89 -89
- data/ext/libxml/ruby_xml_xpath_context.c +283 -283
- data/ext/libxml/ruby_xml_xpath_object.c +5 -5
- data/ext/libxml/ruby_xml_xpointer.c +104 -104
- data/ext/libxml/ruby_xml_xpointer_context.c +22 -22
- data/ext/libxml/version.h +2 -2
- data/ext/libxml/version.h.rej +17 -0
- data/ext/mingw/Rakefile +41 -0
- data/{mingw → lib}/libiconv-2.dll +0 -0
- data/lib/libxml.rb +15 -4
- data/lib/libxml2-2.dll +0 -0
- data/lib/libxml_ruby.dll.a +0 -0
- data/lib/libxml_ruby.so +0 -0
- data/lib/xml.rb +14 -0
- data/lib/xml/libxml.rb +4 -1
- data/test/etc_doc_to_s.rb +1 -1
- data/test/ets_copy_bug.rb +1 -1
- data/test/ets_copy_bug3.rb +1 -1
- data/test/ets_doc_file.rb +1 -1
- data/test/ets_doc_to_s.rb +1 -1
- data/test/ets_node_gc.rb +1 -1
- data/test/ets_tsr.rb +1 -1
- data/test/model/shiporder.rnc +28 -0
- data/test/model/shiporder.rng +86 -0
- data/test/{tc_xml_attributes.rb → tc_attributes.rb} +1 -10
- data/test/{tc_xml_document.rb → tc_document.rb} +1 -1
- data/test/{tc_xml_document_write.rb → tc_document_write.rb} +1 -1
- data/test/{tc_xml_dtd.rb → tc_dtd.rb} +1 -1
- data/test/{tc_xml_html_parser.rb → tc_html_parser.rb} +1 -1
- data/test/{tc_xml_node.rb → tc_node.rb} +1 -1
- data/test/{tc_xml_node_attr.rb → tc_node_attr.rb} +1 -1
- data/test/{tc_xml_node_cdata.rb → tc_node_cdata.rb} +24 -5
- data/test/{tc_xml_node_comment.rb → tc_node_comment.rb} +1 -1
- data/test/{tc_xml_node_copy.rb → tc_node_copy.rb} +1 -1
- data/test/{tc_xml_node_edit.rb → tc_node_edit.rb} +1 -1
- data/test/{tc_xml_node_set.rb → tc_node_set.rb} +1 -1
- data/test/{tc_xml_node_set2.rb → tc_node_set2.rb} +1 -1
- data/test/{tc_xml_node_text.rb → tc_node_text.rb} +1 -1
- data/test/{tc_xml_node_xlink.rb → tc_node_xlink.rb} +2 -2
- data/test/{tc_xml_parser.rb → tc_parser.rb} +1 -1
- data/test/{tc_xml_parser_context.rb → tc_parser_context.rb} +1 -1
- data/test/{tc_xml_properties.rb → tc_properties.rb} +1 -7
- data/test/{tc_xml_reader.rb → tc_reader.rb} +1 -1
- data/test/tc_relaxng.rb +39 -0
- data/test/{tc_xml_sax_parser.rb → tc_sax_parser.rb} +1 -1
- data/test/{tc_xml_schema.rb → tc_schema.rb} +1 -1
- data/test/{tc_xml_traversal.rb → tc_traversal.rb} +1 -1
- data/test/{tc_xml_xinclude.rb → tc_xinclude.rb} +1 -1
- data/test/{tc_xml_xpath.rb → tc_xpath.rb} +1 -1
- data/test/{tc_xml_xpath_context.rb → tc_xpath_context.rb} +1 -1
- data/test/{tc_xml_xpointer.rb → tc_xpointer.rb} +1 -1
- data/test/test_suite.rb +26 -25
- metadata +103 -100
- data/benchmark/depixelate.rb +0 -632
- data/benchmark/hamlet.xml +0 -9055
- data/benchmark/sock_entries.xml +0 -507
- data/benchmark/throughput.rb +0 -39
- data/benchmark/xml_benchmarks.rb +0 -227
- data/mingw/libxml2-2.dll +0 -0
- data/mingw/libxml_ruby.so +0 -0
- data/test/gc.log +0 -0
- data/vc/libxml_ruby.sln +0 -20
- data/vc/libxml_ruby.vcproj +0 -389
@@ -1,165 +1,165 @@
|
|
1
|
-
|
2
|
-
/* ruby support for custom scheme handlers */
|
3
|
-
/* Author: Martin Povolny (xpovolny@fi.muni.cz) */
|
4
|
-
|
5
|
-
#include "ruby_libxml.h"
|
6
|
-
#include "ruby_xml_input_cbg.h"
|
7
|
-
|
8
|
-
static ic_scheme *first_scheme = 0;
|
9
|
-
|
10
|
-
int ic_match (char const *filename) {
|
11
|
-
ic_scheme *scheme;
|
12
|
-
|
13
|
-
//fprintf( stderr, "ic_match: %s\n", filename );
|
14
|
-
|
15
|
-
scheme = first_scheme;
|
16
|
-
while (0 != scheme) {
|
17
|
-
if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST scheme->scheme_name, scheme->name_len)) {
|
18
|
-
return 1;
|
19
|
-
}
|
20
|
-
scheme = scheme->next_scheme;
|
21
|
-
}
|
22
|
-
return 0;
|
23
|
-
}
|
24
|
-
|
25
|
-
void* ic_open (char const *filename) {
|
26
|
-
ic_doc_context *ic_doc;
|
27
|
-
ic_scheme *scheme;
|
28
|
-
VALUE res;
|
29
|
-
|
30
|
-
scheme = first_scheme;
|
31
|
-
while (0 != scheme) {
|
32
|
-
if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST scheme->scheme_name, scheme->name_len)) {
|
33
|
-
ic_doc = (ic_doc_context*)malloc( sizeof(ic_doc_context) );
|
34
|
-
|
35
|
-
res = rb_funcall( scheme->class,
|
36
|
-
rb_intern("document_query"),
|
37
|
-
1,
|
38
|
-
rb_str_new2(filename) );
|
39
|
-
|
40
|
-
ic_doc->buffer = strdup( StringValuePtr(res) );
|
41
|
-
|
42
|
-
ic_doc->bpos = ic_doc->buffer;
|
43
|
-
ic_doc->remaining = strlen(ic_doc->buffer);
|
44
|
-
return ic_doc;
|
45
|
-
}
|
46
|
-
scheme = scheme->next_scheme;
|
47
|
-
}
|
48
|
-
return 0;
|
49
|
-
}
|
50
|
-
|
51
|
-
int ic_read (void *context, char *buffer, int len) {
|
52
|
-
ic_doc_context *ic_doc;
|
53
|
-
int ret_len;
|
54
|
-
ic_doc = (ic_doc_context*)context;
|
55
|
-
|
56
|
-
if (len >= ic_doc->remaining) {
|
57
|
-
ret_len = ic_doc->remaining;
|
58
|
-
} else {
|
59
|
-
ret_len = len;
|
60
|
-
}
|
61
|
-
ic_doc->remaining -= ret_len;
|
62
|
-
strncpy( buffer, ic_doc->bpos, ret_len );
|
63
|
-
ic_doc->bpos += ret_len;
|
64
|
-
|
65
|
-
return ret_len;
|
66
|
-
}
|
67
|
-
|
68
|
-
int ic_close (void *context) {
|
69
|
-
ruby_xfree( ((ic_doc_context*)context)->buffer );
|
70
|
-
ruby_xfree( context );
|
71
|
-
return 1;
|
72
|
-
}
|
73
|
-
|
74
|
-
/*
|
75
|
-
* call-seq:
|
76
|
-
* register
|
77
|
-
*
|
78
|
-
* Register a new set of I/O callback for handling parser input.
|
79
|
-
*/
|
80
|
-
VALUE input_callbacks_register_input_callbacks() {
|
81
|
-
xmlRegisterInputCallbacks( ic_match, ic_open, ic_read, ic_close );
|
82
|
-
return(Qtrue);
|
83
|
-
}
|
84
|
-
|
85
|
-
VALUE
|
86
|
-
input_callbacks_add_scheme (VALUE self, VALUE scheme_name, VALUE class) {
|
87
|
-
ic_scheme *scheme;
|
88
|
-
|
89
|
-
Check_Type(scheme_name, T_STRING);
|
90
|
-
|
91
|
-
scheme = (ic_scheme*)malloc(sizeof(ic_scheme));
|
92
|
-
scheme->next_scheme = 0;
|
93
|
-
scheme->scheme_name = strdup(StringValuePtr(scheme_name)); /* TODO alloc, dealloc */
|
94
|
-
scheme->name_len = strlen(scheme->scheme_name);
|
95
|
-
scheme->class = class; /* TODO alloc, dealloc */
|
96
|
-
|
97
|
-
//fprintf( stderr, "registered: %s, %d, %s\n", scheme->scheme_name, scheme->name_len, scheme->class );
|
98
|
-
|
99
|
-
if (0 == first_scheme)
|
100
|
-
first_scheme = scheme;
|
101
|
-
else {
|
102
|
-
ic_scheme *pos;
|
103
|
-
pos = first_scheme;
|
104
|
-
while (0 != pos->next_scheme)
|
105
|
-
pos = pos->next_scheme;
|
106
|
-
pos->next_scheme = scheme;
|
107
|
-
}
|
108
|
-
|
109
|
-
return(Qtrue);
|
110
|
-
}
|
111
|
-
|
112
|
-
VALUE
|
113
|
-
input_callbacks_remove_scheme (VALUE self, VALUE scheme_name) {
|
114
|
-
char *name;
|
115
|
-
ic_scheme *save_scheme, *scheme;
|
116
|
-
|
117
|
-
Check_Type(scheme_name, T_STRING);
|
118
|
-
name = StringValuePtr(scheme_name);
|
119
|
-
|
120
|
-
if (0 == first_scheme)
|
121
|
-
return Qfalse;
|
122
|
-
|
123
|
-
/* check the first one */
|
124
|
-
if (!strncmp(name, first_scheme->scheme_name, first_scheme->name_len)) {
|
125
|
-
save_scheme = first_scheme->next_scheme;
|
126
|
-
|
127
|
-
ruby_xfree(first_scheme->scheme_name);
|
128
|
-
ruby_xfree(first_scheme);
|
129
|
-
|
130
|
-
first_scheme = save_scheme;
|
131
|
-
return Qtrue;
|
132
|
-
}
|
133
|
-
|
134
|
-
scheme = first_scheme;
|
135
|
-
while (0 != scheme->next_scheme) {
|
136
|
-
if ( !strncmp( name, scheme->next_scheme->scheme_name, scheme->next_scheme->name_len ) ) {
|
137
|
-
save_scheme = scheme->next_scheme->next_scheme;
|
138
|
-
|
139
|
-
ruby_xfree(scheme->next_scheme->scheme_name);
|
140
|
-
ruby_xfree(scheme->next_scheme);
|
141
|
-
|
142
|
-
scheme->next_scheme = save_scheme;
|
143
|
-
return Qtrue;
|
144
|
-
}
|
145
|
-
scheme = scheme->next_scheme;
|
146
|
-
}
|
147
|
-
return Qfalse;
|
148
|
-
}
|
149
|
-
|
150
|
-
// Rdoc needs to know
|
151
|
-
#ifdef RDOC_NEVER_DEFINED
|
152
|
-
mLibXML = rb_define_module("LibXML");
|
153
|
-
mXML = rb_define_module_under(mLibXML, "XML");
|
154
|
-
#endif
|
155
|
-
|
156
|
-
void
|
157
|
-
ruby_init_input_callbacks(void) {
|
158
|
-
VALUE cInputCallbacks;
|
159
|
-
cInputCallbacks = rb_define_class_under(mXML, "InputCallbacks", rb_cObject);
|
160
|
-
|
161
|
-
/* Class Methods */
|
162
|
-
rb_define_singleton_method(cInputCallbacks, "register", input_callbacks_register_input_callbacks, 0);
|
163
|
-
rb_define_singleton_method(cInputCallbacks, "add_scheme", input_callbacks_add_scheme, 2);
|
164
|
-
rb_define_singleton_method(cInputCallbacks, "remove_scheme", input_callbacks_remove_scheme, 1);
|
165
|
-
}
|
1
|
+
|
2
|
+
/* ruby support for custom scheme handlers */
|
3
|
+
/* Author: Martin Povolny (xpovolny@fi.muni.cz) */
|
4
|
+
|
5
|
+
#include "ruby_libxml.h"
|
6
|
+
#include "ruby_xml_input_cbg.h"
|
7
|
+
|
8
|
+
static ic_scheme *first_scheme = 0;
|
9
|
+
|
10
|
+
int ic_match (char const *filename) {
|
11
|
+
ic_scheme *scheme;
|
12
|
+
|
13
|
+
//fprintf( stderr, "ic_match: %s\n", filename );
|
14
|
+
|
15
|
+
scheme = first_scheme;
|
16
|
+
while (0 != scheme) {
|
17
|
+
if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST scheme->scheme_name, scheme->name_len)) {
|
18
|
+
return 1;
|
19
|
+
}
|
20
|
+
scheme = scheme->next_scheme;
|
21
|
+
}
|
22
|
+
return 0;
|
23
|
+
}
|
24
|
+
|
25
|
+
void* ic_open (char const *filename) {
|
26
|
+
ic_doc_context *ic_doc;
|
27
|
+
ic_scheme *scheme;
|
28
|
+
VALUE res;
|
29
|
+
|
30
|
+
scheme = first_scheme;
|
31
|
+
while (0 != scheme) {
|
32
|
+
if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST scheme->scheme_name, scheme->name_len)) {
|
33
|
+
ic_doc = (ic_doc_context*)malloc( sizeof(ic_doc_context) );
|
34
|
+
|
35
|
+
res = rb_funcall( scheme->class,
|
36
|
+
rb_intern("document_query"),
|
37
|
+
1,
|
38
|
+
rb_str_new2(filename) );
|
39
|
+
|
40
|
+
ic_doc->buffer = strdup( StringValuePtr(res) );
|
41
|
+
|
42
|
+
ic_doc->bpos = ic_doc->buffer;
|
43
|
+
ic_doc->remaining = strlen(ic_doc->buffer);
|
44
|
+
return ic_doc;
|
45
|
+
}
|
46
|
+
scheme = scheme->next_scheme;
|
47
|
+
}
|
48
|
+
return 0;
|
49
|
+
}
|
50
|
+
|
51
|
+
int ic_read (void *context, char *buffer, int len) {
|
52
|
+
ic_doc_context *ic_doc;
|
53
|
+
int ret_len;
|
54
|
+
ic_doc = (ic_doc_context*)context;
|
55
|
+
|
56
|
+
if (len >= ic_doc->remaining) {
|
57
|
+
ret_len = ic_doc->remaining;
|
58
|
+
} else {
|
59
|
+
ret_len = len;
|
60
|
+
}
|
61
|
+
ic_doc->remaining -= ret_len;
|
62
|
+
strncpy( buffer, ic_doc->bpos, ret_len );
|
63
|
+
ic_doc->bpos += ret_len;
|
64
|
+
|
65
|
+
return ret_len;
|
66
|
+
}
|
67
|
+
|
68
|
+
int ic_close (void *context) {
|
69
|
+
ruby_xfree( ((ic_doc_context*)context)->buffer );
|
70
|
+
ruby_xfree( context );
|
71
|
+
return 1;
|
72
|
+
}
|
73
|
+
|
74
|
+
/*
|
75
|
+
* call-seq:
|
76
|
+
* register
|
77
|
+
*
|
78
|
+
* Register a new set of I/O callback for handling parser input.
|
79
|
+
*/
|
80
|
+
VALUE input_callbacks_register_input_callbacks() {
|
81
|
+
xmlRegisterInputCallbacks( ic_match, ic_open, ic_read, ic_close );
|
82
|
+
return(Qtrue);
|
83
|
+
}
|
84
|
+
|
85
|
+
VALUE
|
86
|
+
input_callbacks_add_scheme (VALUE self, VALUE scheme_name, VALUE class) {
|
87
|
+
ic_scheme *scheme;
|
88
|
+
|
89
|
+
Check_Type(scheme_name, T_STRING);
|
90
|
+
|
91
|
+
scheme = (ic_scheme*)malloc(sizeof(ic_scheme));
|
92
|
+
scheme->next_scheme = 0;
|
93
|
+
scheme->scheme_name = strdup(StringValuePtr(scheme_name)); /* TODO alloc, dealloc */
|
94
|
+
scheme->name_len = strlen(scheme->scheme_name);
|
95
|
+
scheme->class = class; /* TODO alloc, dealloc */
|
96
|
+
|
97
|
+
//fprintf( stderr, "registered: %s, %d, %s\n", scheme->scheme_name, scheme->name_len, scheme->class );
|
98
|
+
|
99
|
+
if (0 == first_scheme)
|
100
|
+
first_scheme = scheme;
|
101
|
+
else {
|
102
|
+
ic_scheme *pos;
|
103
|
+
pos = first_scheme;
|
104
|
+
while (0 != pos->next_scheme)
|
105
|
+
pos = pos->next_scheme;
|
106
|
+
pos->next_scheme = scheme;
|
107
|
+
}
|
108
|
+
|
109
|
+
return(Qtrue);
|
110
|
+
}
|
111
|
+
|
112
|
+
VALUE
|
113
|
+
input_callbacks_remove_scheme (VALUE self, VALUE scheme_name) {
|
114
|
+
char *name;
|
115
|
+
ic_scheme *save_scheme, *scheme;
|
116
|
+
|
117
|
+
Check_Type(scheme_name, T_STRING);
|
118
|
+
name = StringValuePtr(scheme_name);
|
119
|
+
|
120
|
+
if (0 == first_scheme)
|
121
|
+
return Qfalse;
|
122
|
+
|
123
|
+
/* check the first one */
|
124
|
+
if (!strncmp(name, first_scheme->scheme_name, first_scheme->name_len)) {
|
125
|
+
save_scheme = first_scheme->next_scheme;
|
126
|
+
|
127
|
+
ruby_xfree(first_scheme->scheme_name);
|
128
|
+
ruby_xfree(first_scheme);
|
129
|
+
|
130
|
+
first_scheme = save_scheme;
|
131
|
+
return Qtrue;
|
132
|
+
}
|
133
|
+
|
134
|
+
scheme = first_scheme;
|
135
|
+
while (0 != scheme->next_scheme) {
|
136
|
+
if ( !strncmp( name, scheme->next_scheme->scheme_name, scheme->next_scheme->name_len ) ) {
|
137
|
+
save_scheme = scheme->next_scheme->next_scheme;
|
138
|
+
|
139
|
+
ruby_xfree(scheme->next_scheme->scheme_name);
|
140
|
+
ruby_xfree(scheme->next_scheme);
|
141
|
+
|
142
|
+
scheme->next_scheme = save_scheme;
|
143
|
+
return Qtrue;
|
144
|
+
}
|
145
|
+
scheme = scheme->next_scheme;
|
146
|
+
}
|
147
|
+
return Qfalse;
|
148
|
+
}
|
149
|
+
|
150
|
+
// Rdoc needs to know
|
151
|
+
#ifdef RDOC_NEVER_DEFINED
|
152
|
+
mLibXML = rb_define_module("LibXML");
|
153
|
+
mXML = rb_define_module_under(mLibXML, "XML");
|
154
|
+
#endif
|
155
|
+
|
156
|
+
void
|
157
|
+
ruby_init_input_callbacks(void) {
|
158
|
+
VALUE cInputCallbacks;
|
159
|
+
cInputCallbacks = rb_define_class_under(mXML, "InputCallbacks", rb_cObject);
|
160
|
+
|
161
|
+
/* Class Methods */
|
162
|
+
rb_define_singleton_method(cInputCallbacks, "register", input_callbacks_register_input_callbacks, 0);
|
163
|
+
rb_define_singleton_method(cInputCallbacks, "add_scheme", input_callbacks_add_scheme, 2);
|
164
|
+
rb_define_singleton_method(cInputCallbacks, "remove_scheme", input_callbacks_remove_scheme, 1);
|
165
|
+
}
|
data/ext/libxml/ruby_xml_node.c
CHANGED
@@ -1,172 +1,172 @@
|
|
1
|
-
/* $Id: ruby_xml_node_set.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_node_set.h"
|
7
|
-
|
8
|
-
/*
|
9
|
-
* Document-class: LibXML::XML::Node::Set
|
10
|
-
*
|
11
|
-
* Includes Enumerable.
|
12
|
-
*/
|
13
|
-
VALUE cXMLNodeSet;
|
14
|
-
|
15
|
-
// TODO maybe we should support [] on nodeset?
|
16
|
-
// Would also give us on xpath too...
|
17
|
-
|
18
|
-
/*
|
19
|
-
* call-seq:
|
20
|
-
* nodeset.to_a -> [node, ..., node]
|
21
|
-
*
|
22
|
-
* Obtain an array of the nodes in this set.
|
23
|
-
*/
|
24
|
-
VALUE
|
25
|
-
ruby_xml_node_set_to_a(VALUE self) {
|
26
|
-
ruby_xml_node_set *rxnset;
|
27
|
-
VALUE r;
|
28
|
-
|
29
|
-
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
30
|
-
r=ruby_xml_xpath_object_to_a(rxnset->rxpop);
|
31
|
-
#ifdef NODE_DEBUG
|
32
|
-
fprintf(stderr,"node_set_to_a %s\n",rb_str2cstr(rb_ary_to_s(r),0));
|
33
|
-
#endif
|
34
|
-
return r;
|
35
|
-
}
|
36
|
-
|
37
|
-
|
38
|
-
/*
|
39
|
-
* call-seq:
|
40
|
-
* nodeset.each { |node| ... } -> self
|
41
|
-
*
|
42
|
-
* Call the supplied block for each node in this set.
|
43
|
-
*/
|
44
|
-
VALUE
|
45
|
-
ruby_xml_node_set_each(VALUE self) {
|
46
|
-
ruby_xml_node_set *rxnset;
|
47
|
-
|
48
|
-
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
49
|
-
return ruby_xml_xpath_object_each(rxnset->rxpop);
|
50
|
-
}
|
51
|
-
|
52
|
-
|
53
|
-
/*
|
54
|
-
* call-seq:
|
55
|
-
* nodeset.empty? -> (true|false)
|
56
|
-
*
|
57
|
-
* Determine whether this nodeset is empty (contains no nodes).
|
58
|
-
*/
|
59
|
-
VALUE
|
60
|
-
ruby_xml_node_set_empty_q(VALUE self) {
|
61
|
-
ruby_xml_node_set *rxnset;
|
62
|
-
|
63
|
-
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
64
|
-
return ruby_xml_xpath_object_empty_q(rxnset->rxpop);
|
65
|
-
}
|
66
|
-
|
67
|
-
|
68
|
-
/*
|
69
|
-
* call-seq:
|
70
|
-
* nodeset.first -> node
|
71
|
-
*
|
72
|
-
* Returns the first node in this node set, or nil if none exist.
|
73
|
-
*/
|
74
|
-
VALUE
|
75
|
-
ruby_xml_node_set_first(VALUE self) {
|
76
|
-
ruby_xml_node_set *rxnset;
|
77
|
-
|
78
|
-
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
79
|
-
return ruby_xml_xpath_object_first(rxnset->rxpop);
|
80
|
-
}
|
81
|
-
|
82
|
-
/*
|
83
|
-
* call-seq:
|
84
|
-
* nodeset.length -> num
|
85
|
-
*
|
86
|
-
* Obtain the length of this nodeset.
|
87
|
-
*/
|
88
|
-
VALUE
|
89
|
-
ruby_xml_node_set_length(VALUE self) {
|
90
|
-
ruby_xml_node_set *rxnset;
|
91
|
-
|
92
|
-
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
93
|
-
return ruby_xml_xpath_object_length(rxnset->rxpop);
|
94
|
-
}
|
95
|
-
|
96
|
-
|
97
|
-
static void
|
98
|
-
ruby_xml_node_set_mark(ruby_xml_node_set *rxnset) {
|
99
|
-
if (!NIL_P(rxnset->rxpop))
|
100
|
-
rb_gc_mark(rxnset->rxpop);
|
101
|
-
}
|
102
|
-
|
103
|
-
static void
|
104
|
-
ruby_xml_node_set_free(ruby_xml_node_set *rxnset) {
|
105
|
-
ruby_xfree(rxnset);
|
106
|
-
}
|
107
|
-
|
108
|
-
VALUE
|
109
|
-
ruby_xml_node_set_new(VALUE class, VALUE rxpop)
|
110
|
-
{
|
111
|
-
ruby_xml_node_set *rxnset;
|
112
|
-
rxnset = ALLOC(ruby_xml_node_set);
|
113
|
-
rxnset->rxpop=rxpop;
|
114
|
-
return Data_Wrap_Struct(class,
|
115
|
-
ruby_xml_node_set_mark,
|
116
|
-
ruby_xml_node_set_free,
|
117
|
-
rxnset);
|
118
|
-
}
|
119
|
-
|
120
|
-
VALUE
|
121
|
-
ruby_xml_node_set_new2(VALUE rxpop)
|
122
|
-
{
|
123
|
-
return ruby_xml_node_set_new(cXMLNodeSet,rxpop);
|
124
|
-
}
|
125
|
-
|
126
|
-
/*
|
127
|
-
* call-seq:
|
128
|
-
* nodeset.xpath -> xpath
|
129
|
-
*
|
130
|
-
* Obtain the xpath corresponding to this nodeset, if any.
|
131
|
-
*/
|
132
|
-
VALUE
|
133
|
-
ruby_xml_node_set_xpath_get(VALUE self) {
|
134
|
-
rb_raise(rb_eRuntimeError,"xpath retrival is no longer supported");
|
135
|
-
}
|
136
|
-
|
137
|
-
|
138
|
-
/*
|
139
|
-
* call-seq:
|
140
|
-
* nodeset.xpath_ctxt -> context
|
141
|
-
*
|
142
|
-
* Return the xpath context corresponding to this nodeset,
|
143
|
-
* if any.
|
144
|
-
*/
|
145
|
-
VALUE
|
146
|
-
ruby_xml_node_set_xpath_data_get(VALUE self) {
|
147
|
-
rb_raise(rb_eRuntimeError,"xpath data retrival is no longer supported");
|
148
|
-
}
|
149
|
-
|
150
|
-
// Rdoc needs to know
|
151
|
-
#ifdef RDOC_NEVER_DEFINED
|
152
|
-
mLibXML = rb_define_module("LibXML");
|
153
|
-
mXML = rb_define_module_under(mLibXML, "XML");
|
154
|
-
cXMLNode = rb_define_class_under(mXML, "Node", rb_cObject);
|
155
|
-
#endif
|
156
|
-
|
157
|
-
void
|
158
|
-
ruby_init_xml_node_set(void) {
|
159
|
-
cXMLNodeSet = rb_define_class_under(cXMLNode, "Set", rb_cObject);
|
160
|
-
rb_include_module(cXMLNodeSet, rb_mEnumerable);
|
161
|
-
|
162
|
-
rb_define_method(cXMLNodeSet, "each", ruby_xml_node_set_each, 0);
|
163
|
-
rb_define_method(cXMLNodeSet, "empty?", ruby_xml_node_set_empty_q, 0);
|
164
|
-
rb_define_method(cXMLNodeSet, "first", ruby_xml_node_set_first, 0);
|
165
|
-
rb_define_method(cXMLNodeSet, "length", ruby_xml_node_set_length, 0);
|
166
|
-
rb_define_method(cXMLNodeSet, "size", ruby_xml_node_set_length, 0);
|
167
|
-
rb_define_method(cXMLNodeSet, "to_a", ruby_xml_node_set_to_a, 0);
|
168
|
-
rb_define_method(cXMLNodeSet, "xpath", ruby_xml_node_set_xpath_get, 0);
|
169
|
-
rb_define_method(cXMLNodeSet, "xpath_ctxt",
|
170
|
-
ruby_xml_node_set_xpath_data_get, 0);
|
171
|
-
|
172
|
-
}
|
1
|
+
/* $Id: ruby_xml_node_set.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_node_set.h"
|
7
|
+
|
8
|
+
/*
|
9
|
+
* Document-class: LibXML::XML::Node::Set
|
10
|
+
*
|
11
|
+
* Includes Enumerable.
|
12
|
+
*/
|
13
|
+
VALUE cXMLNodeSet;
|
14
|
+
|
15
|
+
// TODO maybe we should support [] on nodeset?
|
16
|
+
// Would also give us on xpath too...
|
17
|
+
|
18
|
+
/*
|
19
|
+
* call-seq:
|
20
|
+
* nodeset.to_a -> [node, ..., node]
|
21
|
+
*
|
22
|
+
* Obtain an array of the nodes in this set.
|
23
|
+
*/
|
24
|
+
VALUE
|
25
|
+
ruby_xml_node_set_to_a(VALUE self) {
|
26
|
+
ruby_xml_node_set *rxnset;
|
27
|
+
VALUE r;
|
28
|
+
|
29
|
+
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
30
|
+
r=ruby_xml_xpath_object_to_a(rxnset->rxpop);
|
31
|
+
#ifdef NODE_DEBUG
|
32
|
+
fprintf(stderr,"node_set_to_a %s\n",rb_str2cstr(rb_ary_to_s(r),0));
|
33
|
+
#endif
|
34
|
+
return r;
|
35
|
+
}
|
36
|
+
|
37
|
+
|
38
|
+
/*
|
39
|
+
* call-seq:
|
40
|
+
* nodeset.each { |node| ... } -> self
|
41
|
+
*
|
42
|
+
* Call the supplied block for each node in this set.
|
43
|
+
*/
|
44
|
+
VALUE
|
45
|
+
ruby_xml_node_set_each(VALUE self) {
|
46
|
+
ruby_xml_node_set *rxnset;
|
47
|
+
|
48
|
+
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
49
|
+
return ruby_xml_xpath_object_each(rxnset->rxpop);
|
50
|
+
}
|
51
|
+
|
52
|
+
|
53
|
+
/*
|
54
|
+
* call-seq:
|
55
|
+
* nodeset.empty? -> (true|false)
|
56
|
+
*
|
57
|
+
* Determine whether this nodeset is empty (contains no nodes).
|
58
|
+
*/
|
59
|
+
VALUE
|
60
|
+
ruby_xml_node_set_empty_q(VALUE self) {
|
61
|
+
ruby_xml_node_set *rxnset;
|
62
|
+
|
63
|
+
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
64
|
+
return ruby_xml_xpath_object_empty_q(rxnset->rxpop);
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
/*
|
69
|
+
* call-seq:
|
70
|
+
* nodeset.first -> node
|
71
|
+
*
|
72
|
+
* Returns the first node in this node set, or nil if none exist.
|
73
|
+
*/
|
74
|
+
VALUE
|
75
|
+
ruby_xml_node_set_first(VALUE self) {
|
76
|
+
ruby_xml_node_set *rxnset;
|
77
|
+
|
78
|
+
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
79
|
+
return ruby_xml_xpath_object_first(rxnset->rxpop);
|
80
|
+
}
|
81
|
+
|
82
|
+
/*
|
83
|
+
* call-seq:
|
84
|
+
* nodeset.length -> num
|
85
|
+
*
|
86
|
+
* Obtain the length of this nodeset.
|
87
|
+
*/
|
88
|
+
VALUE
|
89
|
+
ruby_xml_node_set_length(VALUE self) {
|
90
|
+
ruby_xml_node_set *rxnset;
|
91
|
+
|
92
|
+
Data_Get_Struct(self, ruby_xml_node_set, rxnset);
|
93
|
+
return ruby_xml_xpath_object_length(rxnset->rxpop);
|
94
|
+
}
|
95
|
+
|
96
|
+
|
97
|
+
static void
|
98
|
+
ruby_xml_node_set_mark(ruby_xml_node_set *rxnset) {
|
99
|
+
if (!NIL_P(rxnset->rxpop))
|
100
|
+
rb_gc_mark(rxnset->rxpop);
|
101
|
+
}
|
102
|
+
|
103
|
+
static void
|
104
|
+
ruby_xml_node_set_free(ruby_xml_node_set *rxnset) {
|
105
|
+
ruby_xfree(rxnset);
|
106
|
+
}
|
107
|
+
|
108
|
+
VALUE
|
109
|
+
ruby_xml_node_set_new(VALUE class, VALUE rxpop)
|
110
|
+
{
|
111
|
+
ruby_xml_node_set *rxnset;
|
112
|
+
rxnset = ALLOC(ruby_xml_node_set);
|
113
|
+
rxnset->rxpop=rxpop;
|
114
|
+
return Data_Wrap_Struct(class,
|
115
|
+
ruby_xml_node_set_mark,
|
116
|
+
ruby_xml_node_set_free,
|
117
|
+
rxnset);
|
118
|
+
}
|
119
|
+
|
120
|
+
VALUE
|
121
|
+
ruby_xml_node_set_new2(VALUE rxpop)
|
122
|
+
{
|
123
|
+
return ruby_xml_node_set_new(cXMLNodeSet,rxpop);
|
124
|
+
}
|
125
|
+
|
126
|
+
/*
|
127
|
+
* call-seq:
|
128
|
+
* nodeset.xpath -> xpath
|
129
|
+
*
|
130
|
+
* Obtain the xpath corresponding to this nodeset, if any.
|
131
|
+
*/
|
132
|
+
VALUE
|
133
|
+
ruby_xml_node_set_xpath_get(VALUE self) {
|
134
|
+
rb_raise(rb_eRuntimeError,"xpath retrival is no longer supported");
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
/*
|
139
|
+
* call-seq:
|
140
|
+
* nodeset.xpath_ctxt -> context
|
141
|
+
*
|
142
|
+
* Return the xpath context corresponding to this nodeset,
|
143
|
+
* if any.
|
144
|
+
*/
|
145
|
+
VALUE
|
146
|
+
ruby_xml_node_set_xpath_data_get(VALUE self) {
|
147
|
+
rb_raise(rb_eRuntimeError,"xpath data retrival is no longer supported");
|
148
|
+
}
|
149
|
+
|
150
|
+
// Rdoc needs to know
|
151
|
+
#ifdef RDOC_NEVER_DEFINED
|
152
|
+
mLibXML = rb_define_module("LibXML");
|
153
|
+
mXML = rb_define_module_under(mLibXML, "XML");
|
154
|
+
cXMLNode = rb_define_class_under(mXML, "Node", rb_cObject);
|
155
|
+
#endif
|
156
|
+
|
157
|
+
void
|
158
|
+
ruby_init_xml_node_set(void) {
|
159
|
+
cXMLNodeSet = rb_define_class_under(cXMLNode, "Set", rb_cObject);
|
160
|
+
rb_include_module(cXMLNodeSet, rb_mEnumerable);
|
161
|
+
|
162
|
+
rb_define_method(cXMLNodeSet, "each", ruby_xml_node_set_each, 0);
|
163
|
+
rb_define_method(cXMLNodeSet, "empty?", ruby_xml_node_set_empty_q, 0);
|
164
|
+
rb_define_method(cXMLNodeSet, "first", ruby_xml_node_set_first, 0);
|
165
|
+
rb_define_method(cXMLNodeSet, "length", ruby_xml_node_set_length, 0);
|
166
|
+
rb_define_method(cXMLNodeSet, "size", ruby_xml_node_set_length, 0);
|
167
|
+
rb_define_method(cXMLNodeSet, "to_a", ruby_xml_node_set_to_a, 0);
|
168
|
+
rb_define_method(cXMLNodeSet, "xpath", ruby_xml_node_set_xpath_get, 0);
|
169
|
+
rb_define_method(cXMLNodeSet, "xpath_ctxt",
|
170
|
+
ruby_xml_node_set_xpath_data_get, 0);
|
171
|
+
|
172
|
+
}
|