libxml-ruby 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. data/LICENSE +23 -23
  2. data/README +144 -144
  3. data/ext/libxml/extconf.rb +26 -27
  4. data/ext/libxml/libxml.c +7 -37
  5. data/ext/libxml/{libxml.h → ruby_libxml.h} +93 -98
  6. data/ext/libxml/ruby_xml_attr.c +405 -387
  7. data/ext/libxml/ruby_xml_attr.h +19 -18
  8. data/ext/libxml/ruby_xml_document.c +1111 -1115
  9. data/ext/libxml/ruby_xml_document.h +27 -24
  10. data/ext/libxml/ruby_xml_dtd.c +168 -168
  11. data/ext/libxml/ruby_xml_html_parser.c +449 -450
  12. data/ext/libxml/ruby_xml_html_parser.h +1 -1
  13. data/ext/libxml/ruby_xml_input_cbg.c +158 -158
  14. data/ext/libxml/ruby_xml_node.c +2410 -2395
  15. data/ext/libxml/ruby_xml_node.h +1 -1
  16. data/ext/libxml/ruby_xml_node_set.c +170 -170
  17. data/ext/libxml/ruby_xml_node_set.h +1 -1
  18. data/ext/libxml/ruby_xml_ns.c +153 -153
  19. data/ext/libxml/ruby_xml_ns.h +1 -1
  20. data/ext/libxml/ruby_xml_parser.c +1425 -1422
  21. data/ext/libxml/ruby_xml_parser.h +1 -1
  22. data/ext/libxml/ruby_xml_parser_context.c +750 -716
  23. data/ext/libxml/ruby_xml_parser_context.h +1 -1
  24. data/ext/libxml/ruby_xml_reader.c +900 -896
  25. data/ext/libxml/ruby_xml_sax_parser.c +485 -485
  26. data/ext/libxml/ruby_xml_sax_parser.h +1 -1
  27. data/ext/libxml/ruby_xml_schema.c +146 -142
  28. data/ext/libxml/ruby_xml_state.c +5 -6
  29. data/ext/libxml/ruby_xml_state.h +1 -0
  30. data/ext/libxml/ruby_xml_tree.c +43 -43
  31. data/ext/libxml/ruby_xml_tree.h +1 -1
  32. data/ext/libxml/ruby_xml_xinclude.c +20 -20
  33. data/ext/libxml/ruby_xml_xinclude.h +1 -1
  34. data/ext/libxml/ruby_xml_xpath.c +243 -252
  35. data/ext/libxml/ruby_xml_xpath.h +1 -1
  36. data/ext/libxml/ruby_xml_xpath_context.c +118 -118
  37. data/ext/libxml/ruby_xml_xpath_context.h +1 -1
  38. data/ext/libxml/ruby_xml_xpath_object.c +43 -29
  39. data/ext/libxml/ruby_xml_xpath_object.h +0 -1
  40. data/ext/libxml/ruby_xml_xpointer.c +100 -100
  41. data/ext/libxml/ruby_xml_xpointer.h +1 -1
  42. data/ext/libxml/ruby_xml_xpointer_context.c +21 -21
  43. data/ext/libxml/ruby_xml_xpointer_context.h +1 -1
  44. data/ext/libxml/sax_parser_callbacks.inc +213 -213
  45. data/ext/libxml/version.h +9 -9
  46. data/lib/libxml.rb +24 -3
  47. data/mingw/libiconv-2.dll +0 -0
  48. data/mingw/libxml2-2.dll +0 -0
  49. data/mingw/libxml_ruby.so +0 -0
  50. data/mingw/mingw.rake +36 -0
  51. data/test/dtd-test.rb +24 -24
  52. data/test/etc_doc_to_s.rb +1 -3
  53. data/test/ets_copy_bug.rb +21 -21
  54. data/test/ets_copy_bug2.rb +32 -32
  55. data/test/ets_copy_bug3.rb +38 -0
  56. data/test/ets_doc_file.rb +1 -0
  57. data/test/{model/default_validation_bug.rb → gc.log} +0 -0
  58. data/test/merge_bug.rb +55 -55
  59. data/test/schema-test.rb +74 -74
  60. data/test/tc_well_formed.rb +11 -0
  61. data/test/tc_xml_document.rb +52 -52
  62. data/test/tc_xml_document_write.rb +24 -24
  63. data/test/tc_xml_document_write2.rb +54 -54
  64. data/test/tc_xml_document_write3.rb +96 -96
  65. data/test/tc_xml_html_parser.rb +63 -63
  66. data/test/tc_xml_node.rb +59 -59
  67. data/test/tc_xml_node2.rb +25 -25
  68. data/test/tc_xml_node3.rb +27 -27
  69. data/test/tc_xml_node4.rb +86 -86
  70. data/test/tc_xml_node5.rb +52 -52
  71. data/test/tc_xml_node6.rb +27 -27
  72. data/test/tc_xml_node7.rb +35 -35
  73. data/test/tc_xml_node8.rb +32 -32
  74. data/test/tc_xml_node9.rb +32 -32
  75. data/test/tc_xml_node_set.rb +24 -24
  76. data/test/tc_xml_node_set2.rb +37 -37
  77. data/test/tc_xml_node_xlink.rb +28 -28
  78. data/test/tc_xml_parser.rb +190 -178
  79. data/test/tc_xml_parser2.rb +16 -17
  80. data/test/tc_xml_parser3.rb +23 -23
  81. data/test/tc_xml_parser4.rb +33 -33
  82. data/test/tc_xml_parser5.rb +27 -27
  83. data/test/tc_xml_parser6.rb +23 -23
  84. data/test/tc_xml_parser7.rb +28 -28
  85. data/test/tc_xml_parser8.rb +32 -32
  86. data/test/tc_xml_parser9.rb +11 -0
  87. data/test/tc_xml_parser_context.rb +88 -88
  88. data/test/tc_xml_reader.rb +112 -109
  89. data/test/tc_xml_sax_parser.rb +104 -94
  90. data/test/tc_xml_sax_parser2.rb +51 -0
  91. data/test/tc_xml_xinclude.rb +30 -30
  92. data/test/tc_xml_xpath.rb +38 -38
  93. data/test/tc_xml_xpath2.rb +14 -0
  94. data/test/tc_xml_xpointer.rb +78 -78
  95. data/vc/libxml.sln +20 -0
  96. data/vc/libxml.vcproj +389 -0
  97. data/work/Rakefile +247 -0
  98. data/work/task/make +26 -0
  99. data/work/task/memory +37 -0
  100. data/work/task/rdoc +39 -0
  101. data/work/task/setup +1616 -0
  102. data/work/task/test +29 -0
  103. data/work/test/ets_runner.rb +33 -0
  104. data/work/test/libxml_test.rb +3 -0
  105. data/work/test/runner.rb +0 -0
  106. data/work/test/runner_ets.rb +33 -0
  107. data/work/vc/debug/libxml.exp +0 -0
  108. data/work/vc/debug/libxml.ilk +0 -0
  109. data/work/vc/debug/libxml.lib +0 -0
  110. data/work/vc/debug/libxml.pdb +0 -0
  111. data/work/vc/debug/libxml.so +0 -0
  112. metadata +158 -189
  113. data/MANIFEST +0 -138
  114. data/NOTES +0 -9
  115. data/Rakefile +0 -38
  116. data/TODO +0 -75
  117. data/VERSION +0 -1
  118. data/log/Changelog-0.txt +0 -426
  119. data/log/Changelog.txt +0 -435
  120. data/meta/project.yaml +0 -27
  121. data/meta/unixname +0 -1
  122. data/setup.rb +0 -1472
  123. data/site/css/normal.css +0 -182
  124. data/site/img/raze-tiny.png +0 -0
  125. data/site/img/red-cube.jpg +0 -0
  126. data/site/img/xml-ruby.png +0 -0
  127. data/site/index.xml +0 -43
  128. data/site/install.xml +0 -77
  129. data/site/layout.rhtml +0 -38
  130. data/site/layout.xsl +0 -67
  131. data/site/license.xml +0 -32
  132. data/site/log/changelog.xml +0 -1324
  133. data/site/log/changelog.xsl +0 -42
  134. data/test/model/merge_bug_data.xml +0 -58
  135. data/test/model/rubynet.xml +0 -78
  136. data/test/model/rubynet_project +0 -13
  137. data/test/model/saxtest.xml +0 -5
  138. data/test/model/simple.xml +0 -7
  139. data/test/model/xinclude.xml +0 -5
@@ -1,118 +1,118 @@
1
- /* $Id: ruby_xml_xpath_context.c 225 2007-12-07 04:58:09Z transami $ */
2
-
3
- /* Please see the LICENSE file for copyright and distribution information */
4
-
5
- #include "libxml.h"
6
- #include "ruby_xml_xpath_context.h"
7
-
8
- VALUE cXMLXPathContext;
9
-
10
- /*
11
- * call-seq:
12
- * context.doc => document
13
- *
14
- * Obtain the XML::Document associated with this XPath.
15
- */
16
- VALUE
17
- ruby_xml_xpath_context_doc_get(VALUE self) {
18
- xmlXPathContextPtr ctxt;
19
- Data_Get_Struct(self, xmlXPathContext, ctxt);
20
-
21
- return ruby_xml_document_wrap2(ctxt->doc);
22
- }
23
-
24
-
25
- void
26
- ruby_xml_xpath_context_free(xmlXPathContextPtr ctxt) {
27
- if (ctxt != NULL) {
28
- xmlXPathFreeContext(ctxt);
29
- ctxt = NULL;
30
- }
31
- }
32
-
33
-
34
- void
35
- ruby_xml_xpath_context_mark(xmlXPathContextPtr ctxt) {
36
- if (ctxt == NULL ) return;
37
- if (ctxt->doc != NULL && ctxt->doc->_private != NULL)
38
- rb_gc_mark((VALUE)ctxt->doc->_private);
39
- }
40
-
41
-
42
- VALUE
43
- ruby_xml_xpath_context_wrap(xmlXPathContextPtr ctxt) {
44
- return Data_Wrap_Struct(cXMLXPathContext,
45
- ruby_xml_xpath_context_mark,
46
- ruby_xml_xpath_context_free,
47
- ctxt);
48
- }
49
-
50
-
51
- VALUE
52
- ruby_xml_xpath_context_new(VALUE anode) {
53
- ruby_xml_document_t *rxd;
54
- ruby_xml_node *node;
55
- xmlXPathContextPtr ctxt;
56
-
57
- if (rb_obj_is_kind_of(anode,cXMLDocument) == Qtrue ) {
58
- Data_Get_Struct(anode,ruby_xml_document_t,rxd);
59
- if (rxd->doc == NULL) return(Qnil);
60
-
61
- ctxt = xmlXPathNewContext(rxd->doc);
62
- if (ctxt == NULL) return(Qnil);
63
-
64
- } else if (rb_obj_is_kind_of(anode,cXMLNode) == Qtrue ) {
65
- Data_Get_Struct(anode, ruby_xml_node, node);
66
- if (node->node->doc == NULL)
67
- rb_raise(rb_eTypeError,"Supplied node must be part of a document");
68
-
69
- ctxt = xmlXPathNewContext(node->node->doc);
70
- if (ctxt == NULL) return(Qnil);
71
-
72
- } else {
73
- rb_raise(rb_eTypeError,"create context requires a document or node. Supplied a %s?",
74
- rb_obj_as_string(anode));
75
- }
76
-
77
- return ruby_xml_xpath_context_wrap(ctxt);
78
- }
79
-
80
- /*
81
- * call-seq:
82
- * context.register_namespace(prefix, uri) => (true|false)
83
- *
84
- * Register the specified namespace URI with the specified prefix
85
- * in this context.
86
- */
87
- VALUE
88
- ruby_xml_xpath_context_register_namespace(VALUE self, VALUE prefix, VALUE uri) {
89
- xmlXPathContextPtr ctxt;
90
-
91
- Data_Get_Struct(self, xmlXPathContext, ctxt);
92
- if (xmlXPathRegisterNs(ctxt,
93
- (xmlChar*)StringValuePtr(prefix),
94
- (xmlChar*)StringValuePtr(uri))
95
- == 0) {
96
- return(Qtrue);
97
- } else {
98
- /* Should raise an exception, IMHO (whose?, why shouldnt it? -danj)*/
99
- rb_warning("register namespace failed");
100
- return(Qfalse);
101
- }
102
- }
103
-
104
- // Rdoc needs to know
105
- #ifdef RDOC_NEVER_DEFINED
106
- mXML = rb_define_module("XML");
107
- cXMLXPath = rb_define_class_under(mXML, "XPath", rb_cObject);
108
- #endif
109
-
110
- void
111
- ruby_init_xml_xpath_context(void) {
112
- cXMLXPathContext = rb_define_class_under(cXMLXPath, "Context", rb_cObject);
113
-
114
- rb_define_method(cXMLXPathContext, "register_namespace",
115
- ruby_xml_xpath_context_register_namespace, 2);
116
- rb_define_method(cXMLXPathContext, "doc",
117
- ruby_xml_xpath_context_doc_get, 0);
118
- }
1
+ /* $Id: ruby_xml_xpath_context.c 300 2008-07-01 19:14:15Z cfis $ */
2
+
3
+ /* Please see the LICENSE file for copyright and distribution information */
4
+
5
+ #include "ruby_libxml.h"
6
+ #include "ruby_xml_xpath_context.h"
7
+
8
+ VALUE cXMLXPathContext;
9
+
10
+ /*
11
+ * call-seq:
12
+ * context.doc => document
13
+ *
14
+ * Obtain the XML::Document associated with this XPath.
15
+ */
16
+ VALUE
17
+ ruby_xml_xpath_context_doc_get(VALUE self) {
18
+ xmlXPathContextPtr ctxt;
19
+ Data_Get_Struct(self, xmlXPathContext, ctxt);
20
+
21
+ return ruby_xml_document_wrap(ctxt->doc);
22
+ }
23
+
24
+
25
+ void
26
+ ruby_xml_xpath_context_free(xmlXPathContextPtr ctxt) {
27
+ if (ctxt != NULL) {
28
+ xmlXPathFreeContext(ctxt);
29
+ ctxt = NULL;
30
+ }
31
+ }
32
+
33
+
34
+ void
35
+ ruby_xml_xpath_context_mark(xmlXPathContextPtr ctxt) {
36
+ if (ctxt == NULL ) return;
37
+ if (ctxt->doc != NULL && ctxt->doc->_private != NULL)
38
+ rb_gc_mark((VALUE)ctxt->doc->_private);
39
+ }
40
+
41
+
42
+ VALUE
43
+ ruby_xml_xpath_context_wrap(xmlXPathContextPtr ctxt) {
44
+ return Data_Wrap_Struct(cXMLXPathContext,
45
+ ruby_xml_xpath_context_mark,
46
+ ruby_xml_xpath_context_free,
47
+ ctxt);
48
+ }
49
+
50
+
51
+ VALUE
52
+ ruby_xml_xpath_context_new(VALUE anode) {
53
+ ruby_xml_document_t *rxd;
54
+ ruby_xml_node *node;
55
+ xmlXPathContextPtr ctxt;
56
+
57
+ if (rb_obj_is_kind_of(anode,cXMLDocument) == Qtrue ) {
58
+ Data_Get_Struct(anode,ruby_xml_document_t,rxd);
59
+ if (rxd->doc == NULL) return(Qnil);
60
+
61
+ ctxt = xmlXPathNewContext(rxd->doc);
62
+ if (ctxt == NULL) return(Qnil);
63
+
64
+ } else if (rb_obj_is_kind_of(anode,cXMLNode) == Qtrue ) {
65
+ Data_Get_Struct(anode, ruby_xml_node, node);
66
+ if (node->node->doc == NULL)
67
+ rb_raise(rb_eTypeError,"Supplied node must be part of a document");
68
+
69
+ ctxt = xmlXPathNewContext(node->node->doc);
70
+ if (ctxt == NULL) return(Qnil);
71
+
72
+ } else {
73
+ rb_raise(rb_eTypeError,"create context requires a document or node. Supplied a %s?",
74
+ rb_obj_as_string(anode));
75
+ }
76
+
77
+ return ruby_xml_xpath_context_wrap(ctxt);
78
+ }
79
+
80
+ /*
81
+ * call-seq:
82
+ * context.register_namespace(prefix, uri) => (true|false)
83
+ *
84
+ * Register the specified namespace URI with the specified prefix
85
+ * in this context.
86
+ */
87
+ VALUE
88
+ ruby_xml_xpath_context_register_namespace(VALUE self, VALUE prefix, VALUE uri) {
89
+ xmlXPathContextPtr ctxt;
90
+
91
+ Data_Get_Struct(self, xmlXPathContext, ctxt);
92
+ if (xmlXPathRegisterNs(ctxt,
93
+ (xmlChar*)StringValuePtr(prefix),
94
+ (xmlChar*)StringValuePtr(uri))
95
+ == 0) {
96
+ return(Qtrue);
97
+ } else {
98
+ /* Should raise an exception, IMHO (whose?, why shouldnt it? -danj)*/
99
+ rb_warning("register namespace failed");
100
+ return(Qfalse);
101
+ }
102
+ }
103
+
104
+ // Rdoc needs to know
105
+ #ifdef RDOC_NEVER_DEFINED
106
+ mXML = rb_define_module("XML");
107
+ cXMLXPath = rb_define_class_under(mXML, "XPath", rb_cObject);
108
+ #endif
109
+
110
+ void
111
+ ruby_init_xml_xpath_context(void) {
112
+ cXMLXPathContext = rb_define_class_under(cXMLXPath, "Context", rb_cObject);
113
+
114
+ rb_define_method(cXMLXPathContext, "register_namespace",
115
+ ruby_xml_xpath_context_register_namespace, 2);
116
+ rb_define_method(cXMLXPathContext, "doc",
117
+ ruby_xml_xpath_context_doc_get, 0);
118
+ }
@@ -1,4 +1,4 @@
1
- /* $Id: ruby_xml_xpath_context.h 225 2007-12-07 04:58:09Z transami $ */
1
+ /* $Id: ruby_xml_xpath_context.h 207 2007-11-14 07:51:46Z danj $ */
2
2
 
3
3
  /* Please see the LICENSE file for copyright and distribution information */
4
4
 
@@ -1,6 +1,6 @@
1
1
  /* $Id: $ */
2
2
 
3
- #include "libxml.h"
3
+ #include "ruby_libxml.h"
4
4
 
5
5
  /*
6
6
  * Document-class: XML::XPath::Object
@@ -12,6 +12,27 @@
12
12
  */
13
13
  VALUE cXMLXPathObject;
14
14
 
15
+
16
+ static VALUE
17
+ ruby_xml_xpath_object_tabref(xmlXPathObjectPtr xpop, int apos) {
18
+
19
+ if (apos < 0 )
20
+ apos=xpop->nodesetval->nodeNr+apos;
21
+
22
+ if (apos < 0 || apos+1 > xpop->nodesetval->nodeNr )
23
+ return Qnil;
24
+
25
+ switch(xpop->nodesetval->nodeTab[apos]->type) {
26
+ case XML_ATTRIBUTE_NODE:
27
+ return ruby_xml_attr_wrap(cXMLAttr,
28
+ (xmlAttrPtr)xpop->nodesetval->nodeTab[apos]);
29
+ break;
30
+ default:
31
+ return ruby_xml_node2_wrap(cXMLNode,
32
+ xpop->nodesetval->nodeTab[apos]);
33
+ }
34
+ }
35
+
15
36
  void
16
37
  ruby_xml_xpath_object_mark(xmlXPathObjectPtr xpop)
17
38
  {
@@ -43,30 +64,44 @@ ruby_xml_xpath_object_wrap(xmlXPathObjectPtr xpop)
43
64
 
44
65
  switch(xpop->type) {
45
66
  case XPATH_NODESET:
46
- return Data_Wrap_Struct(cXMLXPathObject,
47
- ruby_xml_xpath_object_mark,
48
- ruby_xml_xpath_object_free,
49
- xpop);
67
+ rval = Data_Wrap_Struct(cXMLXPathObject,
68
+ ruby_xml_xpath_object_mark,
69
+ ruby_xml_xpath_object_free,
70
+ xpop);
71
+
72
+ if (xpop->type == XPATH_NODESET && !((xpop->nodesetval == NULL) || (xpop->nodesetval->nodeNr == 0))) {
73
+ int i;
74
+ for (i = 0; i < xpop->nodesetval->nodeNr; i++) {
75
+ ruby_xml_xpath_object_tabref(xpop, i);
76
+ }
77
+ }
50
78
  break;
51
79
  case XPATH_BOOLEAN:
52
80
  if (xpop->boolval != 0)
53
81
  rval=Qtrue;
54
82
  else
55
83
  rval=Qfalse;
84
+
85
+ xmlXPathFreeObject(xpop);
56
86
  break;
57
87
  case XPATH_NUMBER:
58
88
  rval=rb_float_new(xpop->floatval);
89
+
90
+ xmlXPathFreeObject(xpop);
59
91
  break;
60
92
  case XPATH_STRING:
61
93
  rval=rb_str_new2(xpop->stringval);
94
+
95
+ xmlXPathFreeObject(xpop);
62
96
  break;
63
97
  default:
98
+ xmlXPathFreeObject(xpop);
64
99
  rval=Qnil;
65
100
  }
66
- xmlXPathFreeObject(xpop);
67
101
  return rval;
68
102
  }
69
103
 
104
+
70
105
  /*
71
106
  * call-seq:
72
107
  * xpath_object.to_a => [node, ..., node]
@@ -85,7 +120,7 @@ ruby_xml_xpath_object_to_a(VALUE self)
85
120
  set_ary = rb_ary_new();
86
121
  if (!((xpop->nodesetval == NULL) || (xpop->nodesetval->nodeNr == 0))) {
87
122
  for (i = 0; i < xpop->nodesetval->nodeNr; i++) {
88
- nodeobj = ruby_xml_node2_wrap(cXMLNode, xpop->nodesetval->nodeTab[i]);
123
+ nodeobj = ruby_xml_xpath_object_tabref(xpop, i);
89
124
  rb_ary_push(set_ary, nodeobj);
90
125
  }
91
126
  }
@@ -134,26 +169,6 @@ ruby_xml_xpath_object_empty_q(VALUE self) {
134
169
  return ( xpop->nodesetval == NULL || xpop->nodesetval->nodeNr <= 0 ) ? Qtrue : Qfalse;
135
170
  }
136
171
 
137
- static VALUE
138
- ruby_xml_xpath_object_tabref(xmlXPathObjectPtr xpop, int apos) {
139
-
140
- if (apos < 0 )
141
- apos=xpop->nodesetval->nodeNr+apos;
142
-
143
- if (apos < 0 || apos+1 > xpop->nodesetval->nodeNr )
144
- return Qnil;
145
-
146
- switch(xpop->nodesetval->nodeTab[apos]->type) {
147
- case XML_ATTRIBUTE_NODE:
148
- return ruby_xml_attr_wrap(cXMLAttr,
149
- (xmlAttrPtr)xpop->nodesetval->nodeTab[apos]);
150
- break;
151
- default:
152
- return ruby_xml_node2_wrap(cXMLNode,
153
- xpop->nodesetval->nodeTab[apos]);
154
- }
155
- }
156
-
157
172
  /*
158
173
  * call-seq:
159
174
  * xpath_object.each { |node| ... } => self
@@ -202,8 +217,7 @@ ruby_xml_xpath_object_aref(VALUE self, VALUE aref) {
202
217
  if ( ruby_xml_xpath_object_empty_q(self) == Qtrue )
203
218
  return Qnil;
204
219
 
205
- return ruby_xml_xpath_object_tabref(
206
- (xmlXPathObjectPtr)DATA_PTR(self),
220
+ return ruby_xml_xpath_object_tabref((xmlXPathObjectPtr)DATA_PTR(self),
207
221
  NUM2INT(aref));
208
222
  }
209
223
 
@@ -10,7 +10,6 @@ typedef struct ruby_xml_xpath_object_s {
10
10
  } ruby_xml_xpath_object;
11
11
 
12
12
  VALUE ruby_xml_xpath_object_wrap(xmlXPathObjectPtr xpop);
13
-
14
13
  VALUE ruby_xml_xpath_object_to_a(VALUE self);
15
14
  VALUE ruby_xml_xpath_object_first(VALUE self);
16
15
  VALUE ruby_xml_xpath_object_set(VALUE self);
@@ -1,100 +1,100 @@
1
- /* $Id: ruby_xml_xpointer.c 225 2007-12-07 04:58:09Z transami $ */
2
-
3
- /* Please see the LICENSE file for copyright and distribution information */
4
-
5
- #include "libxml.h"
6
- #include "ruby_xml_xpointer.h"
7
-
8
- VALUE cXMLXPointer;
9
- VALUE eXMLXPointerInvalidExpression;
10
-
11
- VALUE
12
- ruby_xml_xpointer_point(VALUE class, VALUE rnode, VALUE xptr_str) {
13
- #ifdef LIBXML_XPTR_ENABLED
14
- ruby_xml_node *node;
15
- xmlXPathContextPtr ctxt;
16
- VALUE rxptr_xpth_ctxt, rxxp;
17
- xmlXPathObjectPtr xpath;
18
-
19
- Check_Type(xptr_str, T_STRING);
20
- if (rb_obj_is_kind_of(rnode, cXMLNode) == Qfalse)
21
- rb_raise(rb_eTypeError, "require an XML::Node object");
22
-
23
- Data_Get_Struct(rnode, ruby_xml_node, node);
24
-
25
- rxptr_xpth_ctxt =
26
- ruby_xml_xpath_context_wrap(ctxt=xmlXPtrNewContext(node->node->doc, node->node, NULL));
27
-
28
- if (NIL_P(rxptr_xpth_ctxt))
29
- return(Qnil);
30
-
31
- xpath = xmlXPtrEval((xmlChar*)StringValuePtr(xptr_str), ctxt);
32
- if (xpath == NULL)
33
- rb_raise(eXMLXPointerInvalidExpression, "invalid xpointer expression");
34
-
35
- rxxp = ruby_xml_xpath_object_wrap(xpath);
36
- return(rxxp);
37
- #else
38
- rb_warn("libxml was compiled without XPointer support");
39
- return(Qfalse);
40
- #endif
41
- }
42
-
43
-
44
- VALUE
45
- ruby_xml_xpointer_point2(VALUE node, VALUE xptr_str) {
46
- return(ruby_xml_xpointer_point(cXMLXPointer, node, xptr_str));
47
- }
48
-
49
-
50
- /*
51
- * call-seq:
52
- * XML::XPointer.range(start_node, end_node) => xpath
53
- *
54
- * Create an xpath representing the range between the supplied
55
- * start and end node.
56
- */
57
- VALUE
58
- ruby_xml_xpointer_range(VALUE class, VALUE rstart, VALUE rend) {
59
- #ifdef LIBXML_XPTR_ENABLED
60
- ruby_xml_node *start, *end;
61
- VALUE rxxp;
62
- xmlXPathObjectPtr xpath;
63
-
64
- if (rb_obj_is_kind_of(rstart, cXMLNode) == Qfalse)
65
- rb_raise(rb_eTypeError, "require an XML::Node object as a starting point");
66
- if (rb_obj_is_kind_of(rend, cXMLNode) == Qfalse)
67
- rb_raise(rb_eTypeError, "require an XML::Node object as an ending point");
68
-
69
- Data_Get_Struct(rstart, ruby_xml_node, start);
70
- if (start->node == NULL)
71
- return(Qnil);
72
-
73
- Data_Get_Struct(rend, ruby_xml_node, end);
74
- if (end->node == NULL)
75
- return(Qnil);
76
-
77
- xpath = xmlXPtrNewRangeNodes(start->node, end->node);
78
- if (xpath == NULL)
79
- rb_fatal("You shouldn't be able to have this happen");
80
-
81
- rxxp = ruby_xml_xpath_object_wrap(xpath);
82
- return(rxxp);
83
- #else
84
- rb_warn("libxml was compiled without XPointer support");
85
- return(Qfalse);
86
- #endif
87
- }
88
-
89
- // Rdoc needs to know
90
- #ifdef RDOC_NEVER_DEFINED
91
- mXML = rb_define_module("XML");
92
- #endif
93
-
94
- void
95
- ruby_init_xml_xpointer(void) {
96
- cXMLXPointer = rb_define_class_under(mXML, "XPointer", rb_cObject);
97
- eXMLXPointerInvalidExpression = rb_define_class_under(cXMLXPointer, "InvalidExpression", eXMLError);
98
-
99
- rb_define_singleton_method(cXMLXPointer, "range", ruby_xml_xpointer_range, 2);
100
- }
1
+ /* $Id: ruby_xml_xpointer.c 300 2008-07-01 19:14:15Z cfis $ */
2
+
3
+ /* Please see the LICENSE file for copyright and distribution information */
4
+
5
+ #include "ruby_libxml.h"
6
+ #include "ruby_xml_xpointer.h"
7
+
8
+ VALUE cXMLXPointer;
9
+ VALUE eXMLXPointerInvalidExpression;
10
+
11
+ VALUE
12
+ ruby_xml_xpointer_point(VALUE class, VALUE rnode, VALUE xptr_str) {
13
+ #ifdef LIBXML_XPTR_ENABLED
14
+ ruby_xml_node *node;
15
+ xmlXPathContextPtr ctxt;
16
+ VALUE rxptr_xpth_ctxt, rxxp;
17
+ xmlXPathObjectPtr xpath;
18
+
19
+ Check_Type(xptr_str, T_STRING);
20
+ if (rb_obj_is_kind_of(rnode, cXMLNode) == Qfalse)
21
+ rb_raise(rb_eTypeError, "require an XML::Node object");
22
+
23
+ Data_Get_Struct(rnode, ruby_xml_node, node);
24
+
25
+ rxptr_xpth_ctxt =
26
+ ruby_xml_xpath_context_wrap(ctxt=xmlXPtrNewContext(node->node->doc, node->node, NULL));
27
+
28
+ if (NIL_P(rxptr_xpth_ctxt))
29
+ return(Qnil);
30
+
31
+ xpath = xmlXPtrEval((xmlChar*)StringValuePtr(xptr_str), ctxt);
32
+ if (xpath == NULL)
33
+ rb_raise(eXMLXPointerInvalidExpression, "invalid xpointer expression");
34
+
35
+ rxxp = ruby_xml_xpath_object_wrap(xpath);
36
+ return(rxxp);
37
+ #else
38
+ rb_warn("libxml was compiled without XPointer support");
39
+ return(Qfalse);
40
+ #endif
41
+ }
42
+
43
+
44
+ VALUE
45
+ ruby_xml_xpointer_point2(VALUE node, VALUE xptr_str) {
46
+ return(ruby_xml_xpointer_point(cXMLXPointer, node, xptr_str));
47
+ }
48
+
49
+
50
+ /*
51
+ * call-seq:
52
+ * XML::XPointer.range(start_node, end_node) => xpath
53
+ *
54
+ * Create an xpath representing the range between the supplied
55
+ * start and end node.
56
+ */
57
+ VALUE
58
+ ruby_xml_xpointer_range(VALUE class, VALUE rstart, VALUE rend) {
59
+ #ifdef LIBXML_XPTR_ENABLED
60
+ ruby_xml_node *start, *end;
61
+ VALUE rxxp;
62
+ xmlXPathObjectPtr xpath;
63
+
64
+ if (rb_obj_is_kind_of(rstart, cXMLNode) == Qfalse)
65
+ rb_raise(rb_eTypeError, "require an XML::Node object as a starting point");
66
+ if (rb_obj_is_kind_of(rend, cXMLNode) == Qfalse)
67
+ rb_raise(rb_eTypeError, "require an XML::Node object as an ending point");
68
+
69
+ Data_Get_Struct(rstart, ruby_xml_node, start);
70
+ if (start->node == NULL)
71
+ return(Qnil);
72
+
73
+ Data_Get_Struct(rend, ruby_xml_node, end);
74
+ if (end->node == NULL)
75
+ return(Qnil);
76
+
77
+ xpath = xmlXPtrNewRangeNodes(start->node, end->node);
78
+ if (xpath == NULL)
79
+ rb_fatal("You shouldn't be able to have this happen");
80
+
81
+ rxxp = ruby_xml_xpath_object_wrap(xpath);
82
+ return(rxxp);
83
+ #else
84
+ rb_warn("libxml was compiled without XPointer support");
85
+ return(Qfalse);
86
+ #endif
87
+ }
88
+
89
+ // Rdoc needs to know
90
+ #ifdef RDOC_NEVER_DEFINED
91
+ mXML = rb_define_module("XML");
92
+ #endif
93
+
94
+ void
95
+ ruby_init_xml_xpointer(void) {
96
+ cXMLXPointer = rb_define_class_under(mXML, "XPointer", rb_cObject);
97
+ eXMLXPointerInvalidExpression = rb_define_class_under(cXMLXPointer, "InvalidExpression", eXMLError);
98
+
99
+ rb_define_singleton_method(cXMLXPointer, "range", ruby_xml_xpointer_range, 2);
100
+ }
@@ -1,4 +1,4 @@
1
- /* $Id: ruby_xml_xpointer.h 225 2007-12-07 04:58:09Z transami $ */
1
+ /* $Id: ruby_xml_xpointer.h 39 2006-02-21 20:40:16Z roscopeco $ */
2
2
 
3
3
  /* Please see the LICENSE file for copyright and distribution information */
4
4
 
@@ -1,21 +1,21 @@
1
- /* $Id: ruby_xml_xpointer_context.c 225 2007-12-07 04:58:09Z transami $ */
2
-
3
- /* Please see the LICENSE file for copyright and distribution information */
4
-
5
- #include "libxml.h"
6
- #include "ruby_xml_xpointer_context.h"
7
-
8
- VALUE cXMLXPointerContext;
9
- VALUE eXMLXPointerContextInvalidPath;
10
-
11
- // Rdoc needs to know
12
- #ifdef RDOC_NEVER_DEFINED
13
- mXML = rb_define_module("XML");
14
- cXMLXPointer = rb_define_class_under(mXML, "XPointer", rb_cObject);
15
- #endif
16
-
17
- void
18
- ruby_init_xml_xpointer_context(void) {
19
- cXMLXPointerContext = rb_define_class_under(cXMLXPointer, "Context", cXMLXPathContext);
20
- eXMLXPointerContextInvalidPath = rb_define_class_under(cXMLXPointerContext, "InvalidPath", eXMLError);
21
- }
1
+ /* $Id: ruby_xml_xpointer_context.c 300 2008-07-01 19:14:15Z cfis $ */
2
+
3
+ /* Please see the LICENSE file for copyright and distribution information */
4
+
5
+ #include "ruby_libxml.h"
6
+ #include "ruby_xml_xpointer_context.h"
7
+
8
+ VALUE cXMLXPointerContext;
9
+ VALUE eXMLXPointerContextInvalidPath;
10
+
11
+ // Rdoc needs to know
12
+ #ifdef RDOC_NEVER_DEFINED
13
+ mXML = rb_define_module("XML");
14
+ cXMLXPointer = rb_define_class_under(mXML, "XPointer", rb_cObject);
15
+ #endif
16
+
17
+ void
18
+ ruby_init_xml_xpointer_context(void) {
19
+ cXMLXPointerContext = rb_define_class_under(cXMLXPointer, "Context", cXMLXPathContext);
20
+ eXMLXPointerContextInvalidPath = rb_define_class_under(cXMLXPointerContext, "InvalidPath", eXMLError);
21
+ }
@@ -1,4 +1,4 @@
1
- /* $Id: ruby_xml_xpointer_context.h 225 2007-12-07 04:58:09Z transami $ */
1
+ /* $Id: ruby_xml_xpointer_context.h 39 2006-02-21 20:40:16Z roscopeco $ */
2
2
 
3
3
  /* Please see the LICENSE file for copyright and distribution information */
4
4