libxml-ruby 0.7.0-x86-mswin32-60 → 0.8.0-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 +24 -1
- data/README +48 -3
- data/benchmark/depixelate.rb +632 -0
- data/benchmark/hamlet.xml +9055 -0
- data/benchmark/sock_entries.xml +507 -0
- data/benchmark/throughput.rb +39 -0
- data/benchmark/xml_benchmarks.rb +222 -0
- data/doc/classes/LibXML.html +237 -0
- data/doc/classes/LibXML/XML.html +178 -0
- data/doc/classes/{XML → LibXML/XML}/Attr.html +213 -182
- data/doc/classes/{XML → LibXML/XML}/Attributes.html +126 -54
- data/doc/classes/{XML → LibXML/XML}/Document.html +299 -297
- data/doc/classes/{XML → LibXML/XML}/Dtd.html +10 -10
- data/doc/classes/{XML/XInclude → LibXML/XML}/Error.html +4 -4
- data/doc/classes/{XML → LibXML/XML}/HTMLParser.html +40 -40
- data/doc/classes/{XML → LibXML/XML}/InputCallbacks.html +10 -10
- data/doc/classes/{XML → LibXML/XML}/NS.html +46 -46
- data/doc/classes/{XML → LibXML/XML}/Node.html +935 -788
- data/doc/classes/LibXML/XML/Node/FailedModify.html +111 -0
- data/doc/classes/{XML → LibXML/XML}/Node/Set.html +69 -68
- data/doc/classes/{XML → LibXML/XML}/Node/SetNamespace.html +4 -4
- data/doc/classes/{XML/Node/FailedModify.html → LibXML/XML/Node/UnknownType.html} +4 -4
- data/doc/classes/{XML → LibXML/XML}/Parser.html +426 -389
- data/doc/classes/{XML → LibXML/XML}/Parser/Context.html +208 -208
- data/doc/classes/{XML → LibXML/XML}/Parser/ParseError.html +4 -4
- data/doc/classes/{XML → LibXML/XML}/Reader.html +288 -287
- data/doc/classes/{XML → LibXML/XML}/SaxParser.html +52 -52
- data/doc/classes/{XML/XPath/Context.html → LibXML/XML/Schema.html} +60 -32
- data/doc/classes/{XML → LibXML/XML}/State.html +4 -4
- data/doc/classes/{XML/Node/UnknownType.html → LibXML/XML/Tree.html} +5 -5
- data/doc/classes/{XML → LibXML/XML}/XInclude.html +5 -5
- data/doc/classes/{XML → LibXML/XML/XInclude}/Error.html +5 -5
- data/doc/classes/{XML → LibXML/XML}/XMLParserOptions.html +5 -5
- data/doc/classes/{XML → LibXML/XML}/XPath.html +23 -64
- data/doc/classes/LibXML/XML/XPath/Context.html +403 -0
- data/doc/classes/{XML/XPointer/Context → LibXML/XML/XPath}/InvalidPath.html +4 -4
- data/doc/classes/LibXML/XML/XPath/Object.html +623 -0
- data/doc/classes/{XML → LibXML/XML}/XPointer.html +12 -12
- data/doc/classes/{XML → LibXML/XML}/XPointer/Context.html +5 -5
- data/doc/classes/{XML/XPath → LibXML/XML/XPointer/Context}/InvalidPath.html +5 -5
- data/doc/classes/{XML → LibXML/XML}/XPointer/InvalidExpression.html +4 -4
- data/doc/classes/XML.html +17 -123
- data/doc/created.rid +1 -1
- data/doc/files/CHANGES.html +49 -25
- data/doc/files/LICENSE.html +1 -1
- data/doc/files/README.html +79 -4
- data/doc/files/VERSION.html +2 -2
- data/doc/files/ext/libxml/cbg_c.html +1 -1
- data/doc/files/ext/libxml/libxml_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_attr_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_attributes_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_document_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_dtd_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_html_parser_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_input_cbg_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_node_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_node_set_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_ns_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_parser_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_parser_context_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_reader_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_sax_parser_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_schema_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_state_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xinclude_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpath_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpath_context_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpath_object_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpointer_c.html +1 -1
- data/doc/files/ext/libxml/ruby_xml_xpointer_context_c.html +1 -1
- data/doc/files/lib/libxml/attr_rb.html +108 -0
- data/doc/files/lib/libxml/attributes_rb.html +108 -0
- data/doc/files/lib/libxml/document_rb.html +108 -0
- data/doc/files/lib/libxml/node_rb.html +108 -0
- data/doc/files/lib/libxml/node_set_rb.html +108 -0
- data/doc/files/lib/libxml/parser_options_rb.html +107 -0
- data/doc/files/{ext/libxml/ruby_xml_tree_c.html → lib/libxml/parser_rb.html} +4 -4
- data/doc/files/lib/libxml/properties_rb.html +108 -0
- data/doc/files/lib/libxml/tree_rb.html +107 -0
- data/doc/files/lib/libxml_rb.html +12 -3
- data/doc/fr_class_index.html +34 -32
- data/doc/fr_file_index.html +9 -1
- data/doc/fr_method_index.html +362 -347
- data/ext/libxml/cbg.c +76 -76
- data/ext/libxml/libxml.c +4 -3
- data/ext/libxml/ruby_libxml.h +1 -1
- data/ext/libxml/ruby_xml_attr.c +4 -3
- data/ext/libxml/ruby_xml_attr.h +16 -16
- data/ext/libxml/ruby_xml_attributes.c +267 -266
- data/ext/libxml/ruby_xml_attributes.h +17 -17
- data/ext/libxml/ruby_xml_document.c +30 -59
- data/ext/libxml/ruby_xml_document.h +27 -27
- data/ext/libxml/ruby_xml_dtd.c +2 -1
- data/ext/libxml/ruby_xml_dtd.h +17 -17
- data/ext/libxml/ruby_xml_html_parser.c +3 -2
- data/ext/libxml/ruby_xml_html_parser.h +29 -29
- data/ext/libxml/ruby_xml_input_cbg.c +2 -1
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_node.c +127 -470
- data/ext/libxml/ruby_xml_node.h +17 -17
- data/ext/libxml/ruby_xml_node_set.c +5 -4
- data/ext/libxml/ruby_xml_node_set.h +20 -20
- data/ext/libxml/ruby_xml_ns.c +3 -2
- data/ext/libxml/ruby_xml_ns.h +12 -12
- data/ext/libxml/ruby_xml_parser.c +20 -48
- data/ext/libxml/ruby_xml_parser.h +31 -31
- data/ext/libxml/ruby_xml_parser_context.c +3 -2
- data/ext/libxml/ruby_xml_parser_context.h +20 -20
- data/ext/libxml/ruby_xml_reader.c +2 -1
- data/ext/libxml/ruby_xml_sax_parser.c +3 -2
- data/ext/libxml/ruby_xml_sax_parser.h +56 -56
- data/ext/libxml/ruby_xml_schema.c +6 -0
- data/ext/libxml/ruby_xml_schema.h +16 -16
- data/ext/libxml/ruby_xml_state.c +13 -12
- data/ext/libxml/ruby_xml_state.h +1 -1
- data/ext/libxml/ruby_xml_xinclude.c +3 -2
- data/ext/libxml/ruby_xml_xinclude.h +13 -13
- data/ext/libxml/ruby_xml_xpath.c +35 -228
- data/ext/libxml/ruby_xml_xpath.h +22 -23
- data/ext/libxml/ruby_xml_xpath_context.c +223 -62
- data/ext/libxml/ruby_xml_xpath_context.h +15 -20
- data/ext/libxml/ruby_xml_xpath_object.c +63 -19
- data/ext/libxml/ruby_xml_xpointer.c +19 -15
- data/ext/libxml/ruby_xml_xpointer.h +27 -27
- data/ext/libxml/ruby_xml_xpointer_context.c +3 -2
- data/ext/libxml/ruby_xml_xpointer_context.h +18 -18
- data/ext/libxml/version.h +9 -9
- data/lib/libxml.rb +16 -128
- data/lib/libxml/attr.rb +45 -0
- data/lib/libxml/attributes.rb +15 -0
- data/lib/libxml/document.rb +54 -0
- data/lib/libxml/node.rb +132 -0
- data/lib/libxml/node_set.rb +27 -0
- data/lib/libxml/parser.rb +42 -0
- data/lib/libxml/parser_options.rb +25 -0
- data/lib/libxml/properties.rb +19 -0
- data/lib/libxml/tree.rb +29 -0
- data/lib/libxml_ruby.so +0 -0
- data/mingw/libxml_ruby.so +0 -0
- data/{work/task/setup → setup.rb} +1585 -1616
- data/test/gc.log +0 -0
- data/test/model/books.xml +147 -0
- data/{work/test/runner.rb → test/model/default_validation_bug.rb} +0 -0
- data/test/model/merge_bug_data.xml +58 -0
- data/test/model/rubynet.xml +78 -0
- data/test/model/rubynet_project +1 -0
- data/test/model/saxtest.xml +5 -0
- data/test/model/shiporder.xml +23 -0
- data/test/model/shiporder.xsd +31 -0
- data/test/model/simple.xml +7 -0
- data/test/model/soap.xml +27 -0
- data/test/model/xinclude.xml +5 -0
- data/test/tc_deprecated_require.rb +13 -0
- data/test/tc_xml_document.rb +57 -16
- data/test/tc_xml_document_write.rb +125 -10
- data/test/tc_xml_dtd.rb +22 -1
- data/test/tc_xml_node.rb +13 -0
- data/test/tc_xml_node_edit.rb +1 -1
- data/test/tc_xml_node_xlink.rb +1 -1
- data/test/tc_xml_parser.rb +64 -7
- data/test/tc_xml_properties.rb +42 -0
- data/test/tc_xml_reader.rb +4 -4
- data/test/tc_xml_sax_parser.rb +50 -50
- data/test/tc_xml_schema.rb +2 -2
- data/test/tc_xml_traversal.rb +220 -0
- data/test/tc_xml_xinclude.rb +12 -15
- data/test/tc_xml_xpath.rb +74 -6
- data/test/tc_xml_xpath_context.rb +72 -0
- data/test/test_suite.rb +6 -4
- data/vc/libxml_ruby.vcproj +1 -9
- metadata +92 -65
- data/doc/classes/XML/SiblingEnum.html +0 -142
- data/doc/classes/XML/Tree.html +0 -224
- data/doc/classes/XML/XPath/Object.html +0 -439
- data/ext/libxml/ruby_xml_tree.c +0 -43
- data/ext/libxml/ruby_xml_tree.h +0 -12
- data/test/ets_copy_bug2.rb +0 -21
- data/test/tc_xml_document_write2.rb +0 -54
- data/test/tc_xml_document_write3.rb +0 -96
- data/test/tc_xml_sax_parser2.rb +0 -51
- data/work/Rakefile +0 -247
- data/work/task/make +0 -26
- data/work/task/memory +0 -37
- data/work/task/rdoc +0 -39
- data/work/task/test +0 -29
- data/work/test/ets_runner.rb +0 -33
- data/work/test/libxml_test.rb +0 -3
- data/work/test/runner_ets.rb +0 -33
data/ext/libxml/cbg.c
CHANGED
@@ -1,76 +1,76 @@
|
|
1
|
-
#include <string.h>
|
2
|
-
#include <libxml/xmlIO.h>
|
3
|
-
#include "ruby.h"
|
4
|
-
|
5
|
-
/*
|
6
|
-
int xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
|
7
|
-
xmlInputOpenCallback openFunc,
|
8
|
-
xmlInputReadCallback readFunc,
|
9
|
-
xmlInputCloseCallback closeFunc);
|
10
|
-
|
11
|
-
|
12
|
-
int (*xmlInputMatchCallback) (char const *filename);
|
13
|
-
void* (*xmlInputOpenCallback) (char const *filename);
|
14
|
-
int (*xmlInputReadCallback) (void *context,
|
15
|
-
char *buffer,
|
16
|
-
int len);
|
17
|
-
int (*xmlInputCloseCallback) (void *context);
|
18
|
-
*/
|
19
|
-
|
20
|
-
typedef struct deb_doc_context {
|
21
|
-
char *buffer;
|
22
|
-
char *bpos;
|
23
|
-
int remaining;
|
24
|
-
} deb_doc_context;
|
25
|
-
|
26
|
-
int deb_Match (char const *filename) {
|
27
|
-
fprintf( stderr, "deb_Match: %s\n", filename );
|
28
|
-
if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "deb://", 6)) {
|
29
|
-
return(1);
|
30
|
-
}
|
31
|
-
return(0);
|
32
|
-
}
|
33
|
-
|
34
|
-
void* deb_Open (char const *filename) {
|
35
|
-
deb_doc_context *deb_doc;
|
36
|
-
VALUE res;
|
37
|
-
|
38
|
-
deb_doc = (deb_doc_context*)malloc( sizeof(deb_doc_context) );
|
39
|
-
|
40
|
-
res = rb_funcall( rb_funcall( rb_mKernel, rb_intern("const_get"), 1, rb_str_new2("DEBSystem") ),
|
41
|
-
rb_intern("document_query"), 1, rb_str_new2(filename));
|
42
|
-
deb_doc->buffer = strdup( StringValuePtr(res) );
|
43
|
-
//deb_doc->buffer = strdup("<serepes>serepes</serepes>");
|
44
|
-
|
45
|
-
deb_doc->bpos = deb_doc->buffer;
|
46
|
-
deb_doc->remaining = strlen(deb_doc->buffer);
|
47
|
-
return deb_doc;
|
48
|
-
}
|
49
|
-
|
50
|
-
int deb_Read (void *context, char *buffer, int len) {
|
51
|
-
deb_doc_context *deb_doc;
|
52
|
-
int ret_len;
|
53
|
-
deb_doc = (deb_doc_context*)context;
|
54
|
-
|
55
|
-
if (len >= deb_doc->remaining) {
|
56
|
-
ret_len = deb_doc->remaining;
|
57
|
-
} else {
|
58
|
-
ret_len = len;
|
59
|
-
}
|
60
|
-
deb_doc->remaining -= ret_len;
|
61
|
-
strncpy( buffer, deb_doc->bpos, ret_len );
|
62
|
-
deb_doc->bpos += ret_len;
|
63
|
-
|
64
|
-
return ret_len;
|
65
|
-
}
|
66
|
-
|
67
|
-
int deb_Close (void *context) {
|
68
|
-
free( ((deb_doc_context*)context)->buffer );
|
69
|
-
free( context );
|
70
|
-
return 1;
|
71
|
-
}
|
72
|
-
|
73
|
-
|
74
|
-
void deb_register_cbg() {
|
75
|
-
xmlRegisterInputCallbacks( deb_Match, deb_Open, deb_Read, deb_Close );
|
76
|
-
}
|
1
|
+
#include <string.h>
|
2
|
+
#include <libxml/xmlIO.h>
|
3
|
+
#include "ruby.h"
|
4
|
+
|
5
|
+
/*
|
6
|
+
int xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
|
7
|
+
xmlInputOpenCallback openFunc,
|
8
|
+
xmlInputReadCallback readFunc,
|
9
|
+
xmlInputCloseCallback closeFunc);
|
10
|
+
|
11
|
+
|
12
|
+
int (*xmlInputMatchCallback) (char const *filename);
|
13
|
+
void* (*xmlInputOpenCallback) (char const *filename);
|
14
|
+
int (*xmlInputReadCallback) (void *context,
|
15
|
+
char *buffer,
|
16
|
+
int len);
|
17
|
+
int (*xmlInputCloseCallback) (void *context);
|
18
|
+
*/
|
19
|
+
|
20
|
+
typedef struct deb_doc_context {
|
21
|
+
char *buffer;
|
22
|
+
char *bpos;
|
23
|
+
int remaining;
|
24
|
+
} deb_doc_context;
|
25
|
+
|
26
|
+
int deb_Match (char const *filename) {
|
27
|
+
fprintf( stderr, "deb_Match: %s\n", filename );
|
28
|
+
if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "deb://", 6)) {
|
29
|
+
return(1);
|
30
|
+
}
|
31
|
+
return(0);
|
32
|
+
}
|
33
|
+
|
34
|
+
void* deb_Open (char const *filename) {
|
35
|
+
deb_doc_context *deb_doc;
|
36
|
+
VALUE res;
|
37
|
+
|
38
|
+
deb_doc = (deb_doc_context*)malloc( sizeof(deb_doc_context) );
|
39
|
+
|
40
|
+
res = rb_funcall( rb_funcall( rb_mKernel, rb_intern("const_get"), 1, rb_str_new2("DEBSystem") ),
|
41
|
+
rb_intern("document_query"), 1, rb_str_new2(filename));
|
42
|
+
deb_doc->buffer = strdup( StringValuePtr(res) );
|
43
|
+
//deb_doc->buffer = strdup("<serepes>serepes</serepes>");
|
44
|
+
|
45
|
+
deb_doc->bpos = deb_doc->buffer;
|
46
|
+
deb_doc->remaining = strlen(deb_doc->buffer);
|
47
|
+
return deb_doc;
|
48
|
+
}
|
49
|
+
|
50
|
+
int deb_Read (void *context, char *buffer, int len) {
|
51
|
+
deb_doc_context *deb_doc;
|
52
|
+
int ret_len;
|
53
|
+
deb_doc = (deb_doc_context*)context;
|
54
|
+
|
55
|
+
if (len >= deb_doc->remaining) {
|
56
|
+
ret_len = deb_doc->remaining;
|
57
|
+
} else {
|
58
|
+
ret_len = len;
|
59
|
+
}
|
60
|
+
deb_doc->remaining -= ret_len;
|
61
|
+
strncpy( buffer, deb_doc->bpos, ret_len );
|
62
|
+
deb_doc->bpos += ret_len;
|
63
|
+
|
64
|
+
return ret_len;
|
65
|
+
}
|
66
|
+
|
67
|
+
int deb_Close (void *context) {
|
68
|
+
free( ((deb_doc_context*)context)->buffer );
|
69
|
+
free( context );
|
70
|
+
return 1;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
void deb_register_cbg() {
|
75
|
+
xmlRegisterInputCallbacks( deb_Match, deb_Open, deb_Read, deb_Close );
|
76
|
+
}
|
data/ext/libxml/libxml.c
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
/* $Id: libxml.c
|
1
|
+
/* $Id: libxml.c 462 2008-07-15 21:52:47Z cfis $ */
|
2
2
|
|
3
3
|
/* Please see the LICENSE file for copyright and distribution information */
|
4
4
|
|
5
5
|
#include "ruby_libxml.h"
|
6
6
|
|
7
|
+
VALUE mLibXML;
|
7
8
|
VALUE mXML;
|
8
9
|
VALUE eXMLError;
|
9
10
|
|
@@ -26,7 +27,8 @@ Init_libxml_ruby(void) {
|
|
26
27
|
rb_fatal("could not install the memory handlers for libxml");
|
27
28
|
#endif
|
28
29
|
|
29
|
-
|
30
|
+
mLibXML = rb_define_module("LibXML");
|
31
|
+
mXML = rb_define_module_under(mLibXML, "XML");
|
30
32
|
eXMLError = rb_define_class_under(mXML, "Error", rb_eRuntimeError);
|
31
33
|
|
32
34
|
rb_define_const(mXML, "XML_NAMESPACE", rb_str_new2((const char*)XML_XML_NAMESPACE));
|
@@ -41,7 +43,6 @@ Init_libxml_ruby(void) {
|
|
41
43
|
ruby_init_xml_node_set();
|
42
44
|
ruby_init_xml_ns();
|
43
45
|
ruby_init_xml_sax_parser();
|
44
|
-
ruby_init_xml_tree();
|
45
46
|
ruby_init_xml_xinclude();
|
46
47
|
ruby_init_xml_xpath();
|
47
48
|
ruby_init_xml_xpath_context();
|
data/ext/libxml/ruby_libxml.h
CHANGED
@@ -72,7 +72,6 @@ typedef struct rx_xpath_data {
|
|
72
72
|
#include "ruby_xml_parser.h"
|
73
73
|
#include "ruby_xml_parser_context.h"
|
74
74
|
#include "ruby_xml_sax_parser.h"
|
75
|
-
#include "ruby_xml_tree.h"
|
76
75
|
#include "ruby_xml_xinclude.h"
|
77
76
|
#include "ruby_xml_xpath.h"
|
78
77
|
#include "ruby_xml_xpath_context.h"
|
@@ -85,6 +84,7 @@ typedef struct rx_xpath_data {
|
|
85
84
|
#include "ruby_xml_html_parser.h"
|
86
85
|
#include "ruby_xml_reader.h"
|
87
86
|
|
87
|
+
extern VALUE mLibXML;
|
88
88
|
extern VALUE mXML;
|
89
89
|
extern VALUE eXMLError;
|
90
90
|
|
data/ext/libxml/ruby_xml_attr.c
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
/* $Id: ruby_xml_attr.c
|
1
|
+
/* $Id: ruby_xml_attr.c 461 2008-07-15 21:35:56Z cfis $ */
|
2
2
|
|
3
3
|
/* Please see the LICENSE file for copyright and distribution information */
|
4
4
|
|
5
5
|
/*
|
6
|
-
* Document-class: XML::Attr
|
6
|
+
* Document-class: LibXML::XML::Attr
|
7
7
|
*
|
8
8
|
* Provides access to an single element attribute. Accessed by
|
9
9
|
* calling XML::Node#attributes method.
|
@@ -463,7 +463,8 @@ ruby_xml_attr_value_set(VALUE self, VALUE val) {
|
|
463
463
|
|
464
464
|
// Rdoc needs to know
|
465
465
|
#ifdef RDOC_NEVER_DEFINED
|
466
|
-
|
466
|
+
mLibXML = rb_define_module("LibXML");
|
467
|
+
mXML = rb_define_module_under(mLibXML, "XML");
|
467
468
|
#endif
|
468
469
|
|
469
470
|
void
|
data/ext/libxml/ruby_xml_attr.h
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
/* $Id: ruby_xml_attr.h 351 2008-07-09 19:55:21Z cfis $ */
|
2
|
-
|
3
|
-
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
-
|
5
|
-
#ifndef __RUBY_XML_ATTR__
|
6
|
-
#define __RUBY_XML_ATTR__
|
7
|
-
|
8
|
-
extern VALUE cXMLAttr;
|
9
|
-
|
10
|
-
void ruby_init_xml_attr(void);
|
11
|
-
VALUE ruby_xml_attr_new(xmlAttrPtr xattr);
|
12
|
-
VALUE ruby_xml_attr_value_get(VALUE self);
|
13
|
-
VALUE ruby_xml_attr_value_set(VALUE self, VALUE val);
|
14
|
-
void ruby_xml_attr_free(xmlAttrPtr xattr);
|
15
|
-
VALUE ruby_xml_attr_wrap(xmlAttrPtr xattr);
|
16
|
-
#endif
|
1
|
+
/* $Id: ruby_xml_attr.h 351 2008-07-09 19:55:21Z cfis $ */
|
2
|
+
|
3
|
+
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
+
|
5
|
+
#ifndef __RUBY_XML_ATTR__
|
6
|
+
#define __RUBY_XML_ATTR__
|
7
|
+
|
8
|
+
extern VALUE cXMLAttr;
|
9
|
+
|
10
|
+
void ruby_init_xml_attr(void);
|
11
|
+
VALUE ruby_xml_attr_new(xmlAttrPtr xattr);
|
12
|
+
VALUE ruby_xml_attr_value_get(VALUE self);
|
13
|
+
VALUE ruby_xml_attr_value_set(VALUE self, VALUE val);
|
14
|
+
void ruby_xml_attr_free(xmlAttrPtr xattr);
|
15
|
+
VALUE ruby_xml_attr_wrap(xmlAttrPtr xattr);
|
16
|
+
#endif
|
@@ -1,268 +1,269 @@
|
|
1
|
-
/* $Id: ruby_xml_attributes.c 300 2008-07-01 19:14:15Z cfis $ */
|
2
|
-
|
3
|
-
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
-
|
5
|
-
/*
|
6
|
-
* Document-class: XML::Attributes
|
7
|
-
*
|
8
|
-
* Provides access to an elements attributes (XML::Attr).
|
9
|
-
*
|
10
|
-
* Basic Usage:
|
11
|
-
* require 'libxml'
|
12
|
-
*
|
13
|
-
* doc = XML::Document.new(<some_file>)
|
14
|
-
* attributes = doc.root.attributes
|
15
|
-
*
|
16
|
-
* attributes.each do |attribute|
|
17
|
-
* ..
|
18
|
-
* end
|
19
|
-
*
|
20
|
-
* attributes['foo'] = 'bar'
|
21
|
-
* attribute = attributes.get_attribute['foo']
|
22
|
-
* attribute.value == 'foo'
|
23
|
-
*
|
24
|
-
* To access a namespaced attribute:
|
25
|
-
*
|
26
|
-
* XLINK_URI = 'http://www.w3.org/1999/xlink'
|
27
|
-
*
|
28
|
-
* attribute = attributes.get_attribute_ns(XLINK_URI, 'title')
|
29
|
-
* attribute.value = 'My title'
|
30
|
-
*/
|
31
|
-
|
32
|
-
#include "ruby_libxml.h"
|
33
|
-
#include "ruby_xml_attributes.h"
|
34
|
-
|
35
|
-
VALUE cXMLAttributes;
|
36
|
-
|
37
|
-
void
|
38
|
-
ruby_xml_attributes_mark(xmlNodePtr xnode) {
|
39
|
-
ruby_xml_node_mark_common(xnode);
|
40
|
-
}
|
41
|
-
|
42
|
-
/*
|
43
|
-
* Creates a new attributes instance. Not exposed to ruby.
|
44
|
-
*/
|
45
|
-
VALUE
|
46
|
-
ruby_xml_attributes_new(xmlNodePtr xnode)
|
47
|
-
{
|
48
|
-
return Data_Wrap_Struct(cXMLAttributes,
|
49
|
-
ruby_xml_attributes_mark, NULL,
|
50
|
-
xnode);
|
51
|
-
}
|
52
|
-
|
53
|
-
/*
|
54
|
-
* call-seq:
|
55
|
-
* attributes.node -> XML::Node
|
56
|
-
*
|
57
|
-
* Return the node that owns this attributes list.
|
58
|
-
*
|
59
|
-
* doc.root.attributes.node == doc.root
|
60
|
-
*/
|
61
|
-
VALUE
|
62
|
-
ruby_xml_attributes_node_get(VALUE self) {
|
63
|
-
xmlNodePtr xnode;
|
64
|
-
Data_Get_Struct(self, xmlNode, xnode);
|
65
|
-
return(ruby_xml_node2_wrap(cXMLNode, xnode));
|
66
|
-
}
|
67
|
-
|
68
|
-
|
69
|
-
/*
|
70
|
-
* call-seq:
|
71
|
-
* attributes.get_attribute("name") -> XML::Attr
|
72
|
-
*
|
73
|
-
* Returns the specified attribute.
|
74
|
-
*
|
75
|
-
* name: The name of the attribute, not including a namespace.
|
76
|
-
*
|
77
|
-
* doc.root.attributes.get_attribute("foo")
|
78
|
-
*/
|
79
|
-
VALUE
|
80
|
-
ruby_xml_attributes_get_attribute(VALUE self, VALUE name) {
|
81
|
-
xmlNodePtr xnode;
|
82
|
-
xmlAttrPtr xattr;
|
83
|
-
|
84
|
-
name = check_string_or_symbol(name);
|
85
|
-
|
86
|
-
Data_Get_Struct(self, xmlNode, xnode);
|
87
|
-
|
88
|
-
xattr = xmlHasProp(xnode, (xmlChar*)StringValuePtr(name));
|
89
|
-
|
90
|
-
if (xattr)
|
91
|
-
return(ruby_xml_attr_wrap(xattr));
|
92
|
-
else
|
93
|
-
return(Qnil);
|
94
|
-
}
|
95
|
-
|
96
|
-
/*
|
97
|
-
* call-seq:
|
98
|
-
* attributes.get_attribute_ns("namespace", "name") -> XML::Attr
|
99
|
-
*
|
100
|
-
* Returns the specified attribute.
|
101
|
-
*
|
102
|
-
* namespace: The URI of the attribute's namespace.
|
103
|
-
* name: The name of the attribute, not including a namespace.
|
104
|
-
*
|
105
|
-
* doc.root.attributes.get_attribute_ns('http://www.w3.org/1999/xlink', 'href')
|
106
|
-
*/
|
107
|
-
VALUE
|
108
|
-
ruby_xml_attributes_get_attribute_ns(VALUE self, VALUE namespace, VALUE name) {
|
109
|
-
xmlNodePtr xnode;
|
110
|
-
xmlAttrPtr xattr;
|
111
|
-
|
112
|
-
name = check_string_or_symbol(name);
|
113
|
-
|
114
|
-
Data_Get_Struct(self, xmlNode, xnode);
|
115
|
-
|
116
|
-
xattr = xmlHasNsProp(xnode, (xmlChar*)StringValuePtr(name), (xmlChar*)StringValuePtr(namespace));
|
117
|
-
|
118
|
-
if (xattr)
|
119
|
-
return(ruby_xml_attr_wrap(xattr));
|
120
|
-
else
|
121
|
-
return(Qnil);
|
122
|
-
}
|
123
|
-
|
124
|
-
/*
|
125
|
-
* call-seq:
|
126
|
-
* attributes["name"] -> String
|
127
|
-
*
|
128
|
-
* Fetches an attribute value. If you want to access the underlying
|
129
|
-
* Attribute itself use get_attribute.
|
130
|
-
*
|
131
|
-
* name: The name of the attribute, not including any namespaces.
|
132
|
-
*
|
133
|
-
* doc.root.attributes['att'] -> 'some value'
|
134
|
-
*/
|
135
|
-
VALUE
|
136
|
-
ruby_xml_attributes_attribute_get(VALUE self, VALUE name) {
|
137
|
-
VALUE xattr = ruby_xml_attributes_get_attribute(self, name);
|
138
|
-
if NIL_P(xattr)
|
139
|
-
return(Qnil);
|
140
|
-
else
|
141
|
-
return ruby_xml_attr_value_get(xattr);
|
142
|
-
}
|
143
|
-
|
144
|
-
/*
|
145
|
-
* call-seq:
|
146
|
-
* attributes["name"] = "value"
|
147
|
-
*
|
148
|
-
* Sets an attribute value. If you want to get the Attribute itself,
|
149
|
-
* use get_attribute.
|
150
|
-
*
|
151
|
-
* name: The name of the attribute, not including any namespaces.
|
152
|
-
* value: The new value of the namespace.
|
153
|
-
*
|
154
|
-
* doc.root.attributes['att'] = 'some value'
|
155
|
-
*/
|
156
|
-
VALUE
|
157
|
-
ruby_xml_attributes_attribute_set(VALUE self, VALUE name, VALUE value) {
|
158
|
-
VALUE xattr = ruby_xml_attributes_get_attribute(self, name);
|
159
|
-
if NIL_P(xattr)
|
160
|
-
{
|
161
|
-
VALUE args[3];
|
162
|
-
|
163
|
-
args[0] = ruby_xml_attributes_node_get(self);
|
164
|
-
args[1] = name;
|
165
|
-
args[2] = value;
|
166
|
-
|
167
|
-
return rb_class_new_instance(sizeof(args)/sizeof(VALUE), args, cXMLAttr);
|
168
|
-
}
|
169
|
-
else
|
170
|
-
{
|
171
|
-
return ruby_xml_attr_value_set(xattr, value);
|
172
|
-
}
|
173
|
-
}
|
174
|
-
|
175
|
-
|
176
|
-
/*
|
177
|
-
* call-seq:
|
178
|
-
* attributes.each {block} -> XML::Attr
|
179
|
-
*
|
180
|
-
* Iterates over each attribute.
|
181
|
-
*
|
182
|
-
* doc.root.attributes.each {|attribute| puts attribute.name}
|
183
|
-
*/
|
184
|
-
VALUE
|
185
|
-
ruby_xml_attributes_each(VALUE self) {
|
186
|
-
xmlNodePtr xnode;
|
187
|
-
xmlAttrPtr xattr;
|
188
|
-
Data_Get_Struct(self, xmlNode, xnode);
|
189
|
-
|
190
|
-
xattr = xnode->properties;
|
191
|
-
|
192
|
-
while (xattr)
|
193
|
-
{
|
194
|
-
VALUE attr = ruby_xml_attr_wrap(xattr);
|
195
|
-
rb_yield(attr);
|
196
|
-
xattr = xattr->next;
|
197
|
-
}
|
198
|
-
|
199
|
-
return self;
|
200
|
-
}
|
201
|
-
|
202
|
-
/*
|
203
|
-
* call-seq:
|
204
|
-
* attributes.length -> Integer
|
205
|
-
*
|
206
|
-
* Returns the number of attributes.
|
207
|
-
*
|
208
|
-
* doc.root.attributes.length
|
209
|
-
*/
|
210
|
-
VALUE
|
211
|
-
ruby_xml_attributes_length(VALUE self) {
|
212
|
-
int length = 0;
|
213
|
-
xmlNodePtr xnode;
|
214
|
-
xmlAttrPtr xattr;
|
215
|
-
Data_Get_Struct(self, xmlNode, xnode);
|
216
|
-
|
217
|
-
xattr = xnode->properties;
|
218
|
-
|
219
|
-
while (xattr)
|
220
|
-
{
|
221
|
-
length++;
|
222
|
-
xattr = xattr->next;
|
223
|
-
}
|
224
|
-
|
225
|
-
return INT2NUM(length);
|
226
|
-
}
|
227
|
-
|
228
|
-
/*
|
229
|
-
* call-seq:
|
230
|
-
* attributes.first -> XML::Attr
|
231
|
-
*
|
232
|
-
* Returns the first attribute.
|
233
|
-
*
|
234
|
-
* doc.root.attributes.first
|
235
|
-
*/
|
236
|
-
VALUE
|
237
|
-
ruby_xml_attributes_first(VALUE self) {
|
238
|
-
xmlNodePtr xnode;
|
239
|
-
Data_Get_Struct(self, xmlNode, xnode);
|
240
|
-
|
241
|
-
if (xnode->type == XML_ELEMENT_NODE) {
|
242
|
-
xmlAttrPtr xattr = xnode->properties;
|
243
|
-
|
244
|
-
if (xattr) {
|
245
|
-
return(ruby_xml_attr_wrap(xattr));
|
246
|
-
}
|
247
|
-
}
|
248
|
-
return(Qnil);
|
249
|
-
}
|
250
|
-
|
251
|
-
// Rdoc needs to know
|
1
|
+
/* $Id: ruby_xml_attributes.c 300 2008-07-01 19:14:15Z cfis $ */
|
2
|
+
|
3
|
+
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
+
|
5
|
+
/*
|
6
|
+
* Document-class: LibXML::XML::Attributes
|
7
|
+
*
|
8
|
+
* Provides access to an elements attributes (XML::Attr).
|
9
|
+
*
|
10
|
+
* Basic Usage:
|
11
|
+
* require 'libxml'
|
12
|
+
*
|
13
|
+
* doc = XML::Document.new(<some_file>)
|
14
|
+
* attributes = doc.root.attributes
|
15
|
+
*
|
16
|
+
* attributes.each do |attribute|
|
17
|
+
* ..
|
18
|
+
* end
|
19
|
+
*
|
20
|
+
* attributes['foo'] = 'bar'
|
21
|
+
* attribute = attributes.get_attribute['foo']
|
22
|
+
* attribute.value == 'foo'
|
23
|
+
*
|
24
|
+
* To access a namespaced attribute:
|
25
|
+
*
|
26
|
+
* XLINK_URI = 'http://www.w3.org/1999/xlink'
|
27
|
+
*
|
28
|
+
* attribute = attributes.get_attribute_ns(XLINK_URI, 'title')
|
29
|
+
* attribute.value = 'My title'
|
30
|
+
*/
|
31
|
+
|
32
|
+
#include "ruby_libxml.h"
|
33
|
+
#include "ruby_xml_attributes.h"
|
34
|
+
|
35
|
+
VALUE cXMLAttributes;
|
36
|
+
|
37
|
+
void
|
38
|
+
ruby_xml_attributes_mark(xmlNodePtr xnode) {
|
39
|
+
ruby_xml_node_mark_common(xnode);
|
40
|
+
}
|
41
|
+
|
42
|
+
/*
|
43
|
+
* Creates a new attributes instance. Not exposed to ruby.
|
44
|
+
*/
|
45
|
+
VALUE
|
46
|
+
ruby_xml_attributes_new(xmlNodePtr xnode)
|
47
|
+
{
|
48
|
+
return Data_Wrap_Struct(cXMLAttributes,
|
49
|
+
ruby_xml_attributes_mark, NULL,
|
50
|
+
xnode);
|
51
|
+
}
|
52
|
+
|
53
|
+
/*
|
54
|
+
* call-seq:
|
55
|
+
* attributes.node -> XML::Node
|
56
|
+
*
|
57
|
+
* Return the node that owns this attributes list.
|
58
|
+
*
|
59
|
+
* doc.root.attributes.node == doc.root
|
60
|
+
*/
|
61
|
+
VALUE
|
62
|
+
ruby_xml_attributes_node_get(VALUE self) {
|
63
|
+
xmlNodePtr xnode;
|
64
|
+
Data_Get_Struct(self, xmlNode, xnode);
|
65
|
+
return(ruby_xml_node2_wrap(cXMLNode, xnode));
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
/*
|
70
|
+
* call-seq:
|
71
|
+
* attributes.get_attribute("name") -> XML::Attr
|
72
|
+
*
|
73
|
+
* Returns the specified attribute.
|
74
|
+
*
|
75
|
+
* name: The name of the attribute, not including a namespace.
|
76
|
+
*
|
77
|
+
* doc.root.attributes.get_attribute("foo")
|
78
|
+
*/
|
79
|
+
VALUE
|
80
|
+
ruby_xml_attributes_get_attribute(VALUE self, VALUE name) {
|
81
|
+
xmlNodePtr xnode;
|
82
|
+
xmlAttrPtr xattr;
|
83
|
+
|
84
|
+
name = check_string_or_symbol(name);
|
85
|
+
|
86
|
+
Data_Get_Struct(self, xmlNode, xnode);
|
87
|
+
|
88
|
+
xattr = xmlHasProp(xnode, (xmlChar*)StringValuePtr(name));
|
89
|
+
|
90
|
+
if (xattr)
|
91
|
+
return(ruby_xml_attr_wrap(xattr));
|
92
|
+
else
|
93
|
+
return(Qnil);
|
94
|
+
}
|
95
|
+
|
96
|
+
/*
|
97
|
+
* call-seq:
|
98
|
+
* attributes.get_attribute_ns("namespace", "name") -> XML::Attr
|
99
|
+
*
|
100
|
+
* Returns the specified attribute.
|
101
|
+
*
|
102
|
+
* namespace: The URI of the attribute's namespace.
|
103
|
+
* name: The name of the attribute, not including a namespace.
|
104
|
+
*
|
105
|
+
* doc.root.attributes.get_attribute_ns('http://www.w3.org/1999/xlink', 'href')
|
106
|
+
*/
|
107
|
+
VALUE
|
108
|
+
ruby_xml_attributes_get_attribute_ns(VALUE self, VALUE namespace, VALUE name) {
|
109
|
+
xmlNodePtr xnode;
|
110
|
+
xmlAttrPtr xattr;
|
111
|
+
|
112
|
+
name = check_string_or_symbol(name);
|
113
|
+
|
114
|
+
Data_Get_Struct(self, xmlNode, xnode);
|
115
|
+
|
116
|
+
xattr = xmlHasNsProp(xnode, (xmlChar*)StringValuePtr(name), (xmlChar*)StringValuePtr(namespace));
|
117
|
+
|
118
|
+
if (xattr)
|
119
|
+
return(ruby_xml_attr_wrap(xattr));
|
120
|
+
else
|
121
|
+
return(Qnil);
|
122
|
+
}
|
123
|
+
|
124
|
+
/*
|
125
|
+
* call-seq:
|
126
|
+
* attributes["name"] -> String
|
127
|
+
*
|
128
|
+
* Fetches an attribute value. If you want to access the underlying
|
129
|
+
* Attribute itself use get_attribute.
|
130
|
+
*
|
131
|
+
* name: The name of the attribute, not including any namespaces.
|
132
|
+
*
|
133
|
+
* doc.root.attributes['att'] -> 'some value'
|
134
|
+
*/
|
135
|
+
VALUE
|
136
|
+
ruby_xml_attributes_attribute_get(VALUE self, VALUE name) {
|
137
|
+
VALUE xattr = ruby_xml_attributes_get_attribute(self, name);
|
138
|
+
if NIL_P(xattr)
|
139
|
+
return(Qnil);
|
140
|
+
else
|
141
|
+
return ruby_xml_attr_value_get(xattr);
|
142
|
+
}
|
143
|
+
|
144
|
+
/*
|
145
|
+
* call-seq:
|
146
|
+
* attributes["name"] = "value"
|
147
|
+
*
|
148
|
+
* Sets an attribute value. If you want to get the Attribute itself,
|
149
|
+
* use get_attribute.
|
150
|
+
*
|
151
|
+
* name: The name of the attribute, not including any namespaces.
|
152
|
+
* value: The new value of the namespace.
|
153
|
+
*
|
154
|
+
* doc.root.attributes['att'] = 'some value'
|
155
|
+
*/
|
156
|
+
VALUE
|
157
|
+
ruby_xml_attributes_attribute_set(VALUE self, VALUE name, VALUE value) {
|
158
|
+
VALUE xattr = ruby_xml_attributes_get_attribute(self, name);
|
159
|
+
if NIL_P(xattr)
|
160
|
+
{
|
161
|
+
VALUE args[3];
|
162
|
+
|
163
|
+
args[0] = ruby_xml_attributes_node_get(self);
|
164
|
+
args[1] = name;
|
165
|
+
args[2] = value;
|
166
|
+
|
167
|
+
return rb_class_new_instance(sizeof(args)/sizeof(VALUE), args, cXMLAttr);
|
168
|
+
}
|
169
|
+
else
|
170
|
+
{
|
171
|
+
return ruby_xml_attr_value_set(xattr, value);
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
175
|
+
|
176
|
+
/*
|
177
|
+
* call-seq:
|
178
|
+
* attributes.each {block} -> XML::Attr
|
179
|
+
*
|
180
|
+
* Iterates over each attribute.
|
181
|
+
*
|
182
|
+
* doc.root.attributes.each {|attribute| puts attribute.name}
|
183
|
+
*/
|
184
|
+
VALUE
|
185
|
+
ruby_xml_attributes_each(VALUE self) {
|
186
|
+
xmlNodePtr xnode;
|
187
|
+
xmlAttrPtr xattr;
|
188
|
+
Data_Get_Struct(self, xmlNode, xnode);
|
189
|
+
|
190
|
+
xattr = xnode->properties;
|
191
|
+
|
192
|
+
while (xattr)
|
193
|
+
{
|
194
|
+
VALUE attr = ruby_xml_attr_wrap(xattr);
|
195
|
+
rb_yield(attr);
|
196
|
+
xattr = xattr->next;
|
197
|
+
}
|
198
|
+
|
199
|
+
return self;
|
200
|
+
}
|
201
|
+
|
202
|
+
/*
|
203
|
+
* call-seq:
|
204
|
+
* attributes.length -> Integer
|
205
|
+
*
|
206
|
+
* Returns the number of attributes.
|
207
|
+
*
|
208
|
+
* doc.root.attributes.length
|
209
|
+
*/
|
210
|
+
VALUE
|
211
|
+
ruby_xml_attributes_length(VALUE self) {
|
212
|
+
int length = 0;
|
213
|
+
xmlNodePtr xnode;
|
214
|
+
xmlAttrPtr xattr;
|
215
|
+
Data_Get_Struct(self, xmlNode, xnode);
|
216
|
+
|
217
|
+
xattr = xnode->properties;
|
218
|
+
|
219
|
+
while (xattr)
|
220
|
+
{
|
221
|
+
length++;
|
222
|
+
xattr = xattr->next;
|
223
|
+
}
|
224
|
+
|
225
|
+
return INT2NUM(length);
|
226
|
+
}
|
227
|
+
|
228
|
+
/*
|
229
|
+
* call-seq:
|
230
|
+
* attributes.first -> XML::Attr
|
231
|
+
*
|
232
|
+
* Returns the first attribute.
|
233
|
+
*
|
234
|
+
* doc.root.attributes.first
|
235
|
+
*/
|
236
|
+
VALUE
|
237
|
+
ruby_xml_attributes_first(VALUE self) {
|
238
|
+
xmlNodePtr xnode;
|
239
|
+
Data_Get_Struct(self, xmlNode, xnode);
|
240
|
+
|
241
|
+
if (xnode->type == XML_ELEMENT_NODE) {
|
242
|
+
xmlAttrPtr xattr = xnode->properties;
|
243
|
+
|
244
|
+
if (xattr) {
|
245
|
+
return(ruby_xml_attr_wrap(xattr));
|
246
|
+
}
|
247
|
+
}
|
248
|
+
return(Qnil);
|
249
|
+
}
|
250
|
+
|
251
|
+
// Rdoc needs to know
|
252
252
|
#ifdef RDOC_NEVER_DEFINED
|
253
|
-
|
253
|
+
mLibXML = rb_define_module("LibXML");
|
254
|
+
mXML = rb_define_module_under(mLibXML, "XML");
|
254
255
|
#endif
|
255
|
-
|
256
|
-
void
|
257
|
-
ruby_init_xml_attributes(void) {
|
258
|
-
cXMLAttributes = rb_define_class_under(mXML, "Attributes", rb_cObject);
|
259
|
-
rb_include_module(cXMLAttributes,
|
260
|
-
rb_define_method(cXMLAttributes, "node", ruby_xml_attributes_node_get, 0);
|
261
|
-
rb_define_method(cXMLAttributes, "get_attribute", ruby_xml_attributes_get_attribute, 1);
|
262
|
-
rb_define_method(cXMLAttributes, "get_attribute_ns", ruby_xml_attributes_get_attribute_ns, 2);
|
263
|
-
rb_define_method(cXMLAttributes, "[]", ruby_xml_attributes_attribute_get, 1);
|
264
|
-
rb_define_method(cXMLAttributes, "[]=", ruby_xml_attributes_attribute_set, 2);
|
265
|
-
rb_define_method(cXMLAttributes, "each", ruby_xml_attributes_each, 0);
|
266
|
-
rb_define_method(cXMLAttributes, "length", ruby_xml_attributes_length, 0);
|
267
|
-
rb_define_method(cXMLAttributes, "first", ruby_xml_attributes_first, 0);
|
268
|
-
}
|
256
|
+
|
257
|
+
void
|
258
|
+
ruby_init_xml_attributes(void) {
|
259
|
+
cXMLAttributes = rb_define_class_under(mXML, "Attributes", rb_cObject);
|
260
|
+
rb_include_module(cXMLAttributes, rb_mEnumerable);
|
261
|
+
rb_define_method(cXMLAttributes, "node", ruby_xml_attributes_node_get, 0);
|
262
|
+
rb_define_method(cXMLAttributes, "get_attribute", ruby_xml_attributes_get_attribute, 1);
|
263
|
+
rb_define_method(cXMLAttributes, "get_attribute_ns", ruby_xml_attributes_get_attribute_ns, 2);
|
264
|
+
rb_define_method(cXMLAttributes, "[]", ruby_xml_attributes_attribute_get, 1);
|
265
|
+
rb_define_method(cXMLAttributes, "[]=", ruby_xml_attributes_attribute_set, 2);
|
266
|
+
rb_define_method(cXMLAttributes, "each", ruby_xml_attributes_each, 0);
|
267
|
+
rb_define_method(cXMLAttributes, "length", ruby_xml_attributes_length, 0);
|
268
|
+
rb_define_method(cXMLAttributes, "first", ruby_xml_attributes_first, 0);
|
269
|
+
}
|