libxml-ruby 3.2.2-x64-mingw-ucrt

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 (205) hide show
  1. checksums.yaml +7 -0
  2. data/HISTORY +848 -0
  3. data/LICENSE +21 -0
  4. data/MANIFEST +166 -0
  5. data/README.rdoc +217 -0
  6. data/Rakefile +99 -0
  7. data/ext/libxml/extconf.rb +61 -0
  8. data/ext/libxml/libxml.c +80 -0
  9. data/ext/libxml/libxml_ruby.def +35 -0
  10. data/ext/libxml/ruby_libxml.h +67 -0
  11. data/ext/libxml/ruby_xml.c +933 -0
  12. data/ext/libxml/ruby_xml.h +10 -0
  13. data/ext/libxml/ruby_xml_attr.c +333 -0
  14. data/ext/libxml/ruby_xml_attr.h +12 -0
  15. data/ext/libxml/ruby_xml_attr_decl.c +153 -0
  16. data/ext/libxml/ruby_xml_attr_decl.h +11 -0
  17. data/ext/libxml/ruby_xml_attributes.c +275 -0
  18. data/ext/libxml/ruby_xml_attributes.h +15 -0
  19. data/ext/libxml/ruby_xml_cbg.c +85 -0
  20. data/ext/libxml/ruby_xml_document.c +1123 -0
  21. data/ext/libxml/ruby_xml_document.h +11 -0
  22. data/ext/libxml/ruby_xml_dtd.c +248 -0
  23. data/ext/libxml/ruby_xml_dtd.h +9 -0
  24. data/ext/libxml/ruby_xml_encoding.c +250 -0
  25. data/ext/libxml/ruby_xml_encoding.h +16 -0
  26. data/ext/libxml/ruby_xml_error.c +996 -0
  27. data/ext/libxml/ruby_xml_error.h +12 -0
  28. data/ext/libxml/ruby_xml_html_parser.c +89 -0
  29. data/ext/libxml/ruby_xml_html_parser.h +10 -0
  30. data/ext/libxml/ruby_xml_html_parser_context.c +337 -0
  31. data/ext/libxml/ruby_xml_html_parser_context.h +10 -0
  32. data/ext/libxml/ruby_xml_html_parser_options.c +46 -0
  33. data/ext/libxml/ruby_xml_html_parser_options.h +10 -0
  34. data/ext/libxml/ruby_xml_input_cbg.c +191 -0
  35. data/ext/libxml/ruby_xml_input_cbg.h +20 -0
  36. data/ext/libxml/ruby_xml_io.c +47 -0
  37. data/ext/libxml/ruby_xml_io.h +10 -0
  38. data/ext/libxml/ruby_xml_namespace.c +153 -0
  39. data/ext/libxml/ruby_xml_namespace.h +10 -0
  40. data/ext/libxml/ruby_xml_namespaces.c +293 -0
  41. data/ext/libxml/ruby_xml_namespaces.h +9 -0
  42. data/ext/libxml/ruby_xml_node.c +1402 -0
  43. data/ext/libxml/ruby_xml_node.h +13 -0
  44. data/ext/libxml/ruby_xml_parser.c +91 -0
  45. data/ext/libxml/ruby_xml_parser.h +12 -0
  46. data/ext/libxml/ruby_xml_parser_context.c +999 -0
  47. data/ext/libxml/ruby_xml_parser_context.h +10 -0
  48. data/ext/libxml/ruby_xml_parser_options.c +66 -0
  49. data/ext/libxml/ruby_xml_parser_options.h +12 -0
  50. data/ext/libxml/ruby_xml_reader.c +1239 -0
  51. data/ext/libxml/ruby_xml_reader.h +17 -0
  52. data/ext/libxml/ruby_xml_relaxng.c +110 -0
  53. data/ext/libxml/ruby_xml_relaxng.h +10 -0
  54. data/ext/libxml/ruby_xml_sax2_handler.c +326 -0
  55. data/ext/libxml/ruby_xml_sax2_handler.h +10 -0
  56. data/ext/libxml/ruby_xml_sax_parser.c +116 -0
  57. data/ext/libxml/ruby_xml_sax_parser.h +10 -0
  58. data/ext/libxml/ruby_xml_schema.c +278 -0
  59. data/ext/libxml/ruby_xml_schema.h +809 -0
  60. data/ext/libxml/ruby_xml_schema_attribute.c +109 -0
  61. data/ext/libxml/ruby_xml_schema_attribute.h +15 -0
  62. data/ext/libxml/ruby_xml_schema_element.c +95 -0
  63. data/ext/libxml/ruby_xml_schema_element.h +14 -0
  64. data/ext/libxml/ruby_xml_schema_facet.c +52 -0
  65. data/ext/libxml/ruby_xml_schema_facet.h +13 -0
  66. data/ext/libxml/ruby_xml_schema_type.c +232 -0
  67. data/ext/libxml/ruby_xml_schema_type.h +9 -0
  68. data/ext/libxml/ruby_xml_version.h +9 -0
  69. data/ext/libxml/ruby_xml_writer.c +1133 -0
  70. data/ext/libxml/ruby_xml_writer.h +10 -0
  71. data/ext/libxml/ruby_xml_xinclude.c +16 -0
  72. data/ext/libxml/ruby_xml_xinclude.h +11 -0
  73. data/ext/libxml/ruby_xml_xpath.c +194 -0
  74. data/ext/libxml/ruby_xml_xpath.h +13 -0
  75. data/ext/libxml/ruby_xml_xpath_context.c +360 -0
  76. data/ext/libxml/ruby_xml_xpath_context.h +9 -0
  77. data/ext/libxml/ruby_xml_xpath_expression.c +81 -0
  78. data/ext/libxml/ruby_xml_xpath_expression.h +10 -0
  79. data/ext/libxml/ruby_xml_xpath_object.c +338 -0
  80. data/ext/libxml/ruby_xml_xpath_object.h +17 -0
  81. data/ext/libxml/ruby_xml_xpointer.c +99 -0
  82. data/ext/libxml/ruby_xml_xpointer.h +11 -0
  83. data/ext/vc/libxml_ruby.sln +28 -0
  84. data/lib/3.1/libxml_ruby.so +0 -0
  85. data/lib/libxml/attr.rb +123 -0
  86. data/lib/libxml/attr_decl.rb +80 -0
  87. data/lib/libxml/attributes.rb +14 -0
  88. data/lib/libxml/document.rb +194 -0
  89. data/lib/libxml/error.rb +95 -0
  90. data/lib/libxml/hpricot.rb +78 -0
  91. data/lib/libxml/html_parser.rb +96 -0
  92. data/lib/libxml/namespace.rb +62 -0
  93. data/lib/libxml/namespaces.rb +38 -0
  94. data/lib/libxml/node.rb +323 -0
  95. data/lib/libxml/parser.rb +101 -0
  96. data/lib/libxml/sax_callbacks.rb +180 -0
  97. data/lib/libxml/sax_parser.rb +41 -0
  98. data/lib/libxml/schema/attribute.rb +19 -0
  99. data/lib/libxml/schema/element.rb +19 -0
  100. data/lib/libxml/schema/type.rb +21 -0
  101. data/lib/libxml/schema.rb +48 -0
  102. data/lib/libxml/tree.rb +29 -0
  103. data/lib/libxml-ruby.rb +30 -0
  104. data/lib/libxml.rb +5 -0
  105. data/lib/xml/libxml.rb +10 -0
  106. data/lib/xml.rb +14 -0
  107. data/libxml-ruby.gemspec +48 -0
  108. data/script/benchmark/depixelate +634 -0
  109. data/script/benchmark/hamlet.xml +9055 -0
  110. data/script/benchmark/parsecount +170 -0
  111. data/script/benchmark/sock_entries.xml +507 -0
  112. data/script/benchmark/throughput +41 -0
  113. data/script/test +6 -0
  114. data/setup.rb +1584 -0
  115. data/test/c14n/given/doc.dtd +1 -0
  116. data/test/c14n/given/example-1.xml +14 -0
  117. data/test/c14n/given/example-2.xml +11 -0
  118. data/test/c14n/given/example-3.xml +18 -0
  119. data/test/c14n/given/example-4.xml +9 -0
  120. data/test/c14n/given/example-5.xml +12 -0
  121. data/test/c14n/given/example-6.xml +2 -0
  122. data/test/c14n/given/example-7.xml +11 -0
  123. data/test/c14n/given/example-8.xml +11 -0
  124. data/test/c14n/given/example-8.xpath +10 -0
  125. data/test/c14n/given/world.txt +1 -0
  126. data/test/c14n/result/1-1-without-comments/example-1 +4 -0
  127. data/test/c14n/result/1-1-without-comments/example-2 +11 -0
  128. data/test/c14n/result/1-1-without-comments/example-3 +14 -0
  129. data/test/c14n/result/1-1-without-comments/example-4 +9 -0
  130. data/test/c14n/result/1-1-without-comments/example-5 +3 -0
  131. data/test/c14n/result/1-1-without-comments/example-6 +1 -0
  132. data/test/c14n/result/1-1-without-comments/example-7 +1 -0
  133. data/test/c14n/result/1-1-without-comments/example-8 +1 -0
  134. data/test/c14n/result/with-comments/example-1 +6 -0
  135. data/test/c14n/result/with-comments/example-2 +11 -0
  136. data/test/c14n/result/with-comments/example-3 +14 -0
  137. data/test/c14n/result/with-comments/example-4 +9 -0
  138. data/test/c14n/result/with-comments/example-5 +4 -0
  139. data/test/c14n/result/with-comments/example-6 +1 -0
  140. data/test/c14n/result/with-comments/example-7 +1 -0
  141. data/test/c14n/result/without-comments/example-1 +4 -0
  142. data/test/c14n/result/without-comments/example-2 +11 -0
  143. data/test/c14n/result/without-comments/example-3 +14 -0
  144. data/test/c14n/result/without-comments/example-4 +9 -0
  145. data/test/c14n/result/without-comments/example-5 +3 -0
  146. data/test/c14n/result/without-comments/example-6 +1 -0
  147. data/test/c14n/result/without-comments/example-7 +1 -0
  148. data/test/model/atom.xml +13 -0
  149. data/test/model/bands.iso-8859-1.xml +5 -0
  150. data/test/model/bands.utf-8.xml +5 -0
  151. data/test/model/bands.xml +5 -0
  152. data/test/model/books.xml +154 -0
  153. data/test/model/cwm_1_0.xml +11336 -0
  154. data/test/model/merge_bug_data.xml +58 -0
  155. data/test/model/ruby-lang.html +238 -0
  156. data/test/model/rubynet.xml +79 -0
  157. data/test/model/rubynet_project +1 -0
  158. data/test/model/shiporder.rnc +28 -0
  159. data/test/model/shiporder.rng +86 -0
  160. data/test/model/shiporder.xml +23 -0
  161. data/test/model/shiporder.xsd +40 -0
  162. data/test/model/soap.xml +27 -0
  163. data/test/model/xinclude.xml +5 -0
  164. data/test/test_attr.rb +181 -0
  165. data/test/test_attr_decl.rb +132 -0
  166. data/test/test_attributes.rb +136 -0
  167. data/test/test_canonicalize.rb +120 -0
  168. data/test/test_deprecated_require.rb +12 -0
  169. data/test/test_document.rb +132 -0
  170. data/test/test_document_write.rb +146 -0
  171. data/test/test_dtd.rb +129 -0
  172. data/test/test_encoding.rb +129 -0
  173. data/test/test_encoding_sax.rb +115 -0
  174. data/test/test_error.rb +178 -0
  175. data/test/test_helper.rb +9 -0
  176. data/test/test_html_parser.rb +162 -0
  177. data/test/test_html_parser_context.rb +23 -0
  178. data/test/test_namespace.rb +60 -0
  179. data/test/test_namespaces.rb +200 -0
  180. data/test/test_node.rb +237 -0
  181. data/test/test_node_cdata.rb +50 -0
  182. data/test/test_node_comment.rb +32 -0
  183. data/test/test_node_copy.rb +40 -0
  184. data/test/test_node_edit.rb +158 -0
  185. data/test/test_node_pi.rb +37 -0
  186. data/test/test_node_text.rb +69 -0
  187. data/test/test_node_write.rb +97 -0
  188. data/test/test_node_xlink.rb +28 -0
  189. data/test/test_parser.rb +324 -0
  190. data/test/test_parser_context.rb +198 -0
  191. data/test/test_properties.rb +38 -0
  192. data/test/test_reader.rb +364 -0
  193. data/test/test_relaxng.rb +53 -0
  194. data/test/test_sax_parser.rb +326 -0
  195. data/test/test_schema.rb +168 -0
  196. data/test/test_suite.rb +48 -0
  197. data/test/test_traversal.rb +152 -0
  198. data/test/test_writer.rb +468 -0
  199. data/test/test_xinclude.rb +20 -0
  200. data/test/test_xml.rb +263 -0
  201. data/test/test_xpath.rb +244 -0
  202. data/test/test_xpath_context.rb +88 -0
  203. data/test/test_xpath_expression.rb +37 -0
  204. data/test/test_xpointer.rb +72 -0
  205. metadata +325 -0
@@ -0,0 +1,109 @@
1
+ #include "ruby_libxml.h"
2
+ #include "ruby_xml_schema_attribute.h"
3
+ #include "ruby_xml_schema_type.h"
4
+
5
+ VALUE cXMLSchemaAttribute;
6
+
7
+ static void rxml_schema_attribute_free(xmlSchemaAttributeUsePtr attr)
8
+ {
9
+ attr = NULL;
10
+ xmlFree(attr);
11
+ }
12
+
13
+ VALUE rxml_wrap_schema_attribute(xmlSchemaAttributeUsePtr attr)
14
+ {
15
+ return Data_Wrap_Struct(cXMLSchemaAttribute, NULL, rxml_schema_attribute_free, attr);
16
+ }
17
+
18
+ static VALUE rxml_schema_attribute_namespace(VALUE self)
19
+ {
20
+ xmlSchemaAttributeUsePtr attr;
21
+ const xmlChar *tns;
22
+
23
+ Data_Get_Struct(self, xmlSchemaAttributeUse, attr);
24
+
25
+ if (attr == NULL)
26
+ return Qnil;
27
+
28
+ if (attr->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) {
29
+ tns = ((xmlSchemaAttributeUseProhibPtr) attr)->targetNamespace;
30
+ } else if (attr->type == XML_SCHEMA_EXTRA_QNAMEREF) {
31
+ tns = ((xmlSchemaQNameRefPtr) attr)->targetNamespace;
32
+ } else {
33
+ tns = ((xmlSchemaAttributePtr) ((xmlSchemaAttributeUsePtr) (attr))->attrDecl)->targetNamespace;
34
+ }
35
+
36
+ QNIL_OR_STRING(tns)
37
+ }
38
+
39
+ static VALUE rxml_schema_attribute_name(VALUE self)
40
+ {
41
+ xmlSchemaAttributeUsePtr attr;
42
+ const xmlChar *name;
43
+
44
+ Data_Get_Struct(self, xmlSchemaAttributeUse, attr);
45
+
46
+ if (attr == NULL)
47
+ return Qnil;
48
+
49
+ if (attr->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) {
50
+ name = ((xmlSchemaAttributeUseProhibPtr) attr)->name;
51
+ } else if (attr->type == XML_SCHEMA_EXTRA_QNAMEREF) {
52
+ name = ((xmlSchemaQNameRefPtr) attr)->name;
53
+ } else {
54
+ xmlSchemaAttributePtr attrDecl = ((xmlSchemaAttributeUsePtr) attr)->attrDecl;
55
+ name = attrDecl->name;
56
+ }
57
+
58
+ QNIL_OR_STRING(name)
59
+ }
60
+
61
+ static VALUE rxml_schema_attribute_type(VALUE self)
62
+ {
63
+ xmlSchemaAttributeUsePtr attr;
64
+ xmlSchemaTypePtr xtype;
65
+
66
+ Data_Get_Struct(self, xmlSchemaAttributeUse, attr);
67
+
68
+ xtype = attr->attrDecl->subtypes;
69
+
70
+ return rxml_wrap_schema_type((xmlSchemaTypePtr) xtype);
71
+ }
72
+
73
+ static VALUE rxml_schema_attribute_node(VALUE self)
74
+ {
75
+ xmlSchemaAttributeUsePtr attr;
76
+
77
+ Data_Get_Struct(self, xmlSchemaAttributeUse, attr);
78
+
79
+ return rxml_node_wrap(attr->node);
80
+ }
81
+
82
+ static VALUE rxml_schema_attribute_value(VALUE self)
83
+ {
84
+ xmlSchemaAttributeUsePtr attr;
85
+
86
+ Data_Get_Struct(self, xmlSchemaAttributeUse, attr);
87
+
88
+ QNIL_OR_STRING(attr->defValue)
89
+ }
90
+
91
+ static VALUE rxml_schema_attribute_occurs(VALUE self)
92
+ {
93
+ xmlSchemaAttributeUsePtr attr;
94
+
95
+ Data_Get_Struct(self, xmlSchemaAttributeUse, attr);
96
+
97
+ return INT2NUM(attr->occurs);
98
+ }
99
+
100
+ void rxml_init_schema_attribute(void)
101
+ {
102
+ cXMLSchemaAttribute = rb_define_class_under(cXMLSchema, "Attribute", rb_cObject);
103
+ rb_define_method(cXMLSchemaAttribute, "namespace", rxml_schema_attribute_namespace, 0);
104
+ rb_define_method(cXMLSchemaAttribute, "name", rxml_schema_attribute_name, 0);
105
+ rb_define_method(cXMLSchemaAttribute, "type", rxml_schema_attribute_type, 0);
106
+ rb_define_method(cXMLSchemaAttribute, "node", rxml_schema_attribute_node, 0);
107
+ rb_define_method(cXMLSchemaAttribute, "value", rxml_schema_attribute_value, 0);
108
+ rb_define_method(cXMLSchemaAttribute, "occurs", rxml_schema_attribute_occurs, 0);
109
+ }
@@ -0,0 +1,15 @@
1
+ #ifndef __RXML_SCHEMA_ATTRIBUTE__
2
+ #define __RXML_SCHEMA_ATTRIBUTE__
3
+
4
+ #include "ruby_xml_schema.h"
5
+ #include <libxml/schemasInternals.h>
6
+ #include <libxml/xmlschemas.h>
7
+ #include <libxml/xmlschemastypes.h>
8
+
9
+ extern VALUE cXMLSchemaAttribute;
10
+
11
+
12
+ void rxml_init_schema_attribute(void);
13
+ VALUE rxml_wrap_schema_attribute(xmlSchemaAttributeUsePtr attr);
14
+
15
+ #endif
@@ -0,0 +1,95 @@
1
+ #include "ruby_libxml.h"
2
+ #include "ruby_xml_schema_element.h"
3
+ #include "ruby_xml_schema_type.h"
4
+
5
+ VALUE cXMLSchemaElement;
6
+
7
+ static void rxml_schema_element_free(xmlSchemaElementPtr xschema_element)
8
+ {
9
+ xschema_element = NULL;
10
+ xmlFree(xschema_element);
11
+ }
12
+
13
+ VALUE rxml_wrap_schema_element(xmlSchemaElementPtr xelement)
14
+ {
15
+ return Data_Wrap_Struct(cXMLSchemaElement, NULL, rxml_schema_element_free, xelement);
16
+ }
17
+
18
+ static VALUE rxml_schema_element_namespace(VALUE self)
19
+ {
20
+ xmlSchemaElementPtr xelem;
21
+
22
+ Data_Get_Struct(self, xmlSchemaElement, xelem);
23
+
24
+ QNIL_OR_STRING(xelem->targetNamespace)
25
+ }
26
+
27
+ static VALUE rxml_schema_element_name(VALUE self)
28
+ {
29
+ xmlSchemaElementPtr xelem;
30
+
31
+ Data_Get_Struct(self, xmlSchemaElement, xelem);
32
+
33
+
34
+ QNIL_OR_STRING(xelem->name)
35
+ }
36
+
37
+ static VALUE rxml_schema_element_type(VALUE self)
38
+ {
39
+ xmlSchemaElementPtr xelem;
40
+ xmlSchemaTypePtr xtype;
41
+
42
+ Data_Get_Struct(self, xmlSchemaElement, xelem);
43
+
44
+ xtype = xelem->subtypes;
45
+
46
+ return rxml_wrap_schema_type((xmlSchemaTypePtr) xtype);
47
+ }
48
+
49
+ static VALUE rxml_schema_element_node(VALUE self)
50
+ {
51
+ xmlSchemaElementPtr xelem;
52
+
53
+ Data_Get_Struct(self, xmlSchemaElement, xelem);
54
+
55
+ return rxml_node_wrap(xelem->node);
56
+ }
57
+
58
+ static VALUE rxml_schema_element_value(VALUE self)
59
+ {
60
+ xmlSchemaElementPtr xelem;
61
+
62
+ Data_Get_Struct(self, xmlSchemaElement, xelem);
63
+
64
+ QNIL_OR_STRING(xelem->value)
65
+ }
66
+
67
+ static VALUE rxml_schema_element_annot(VALUE self)
68
+ {
69
+ VALUE result = Qnil;
70
+ xmlSchemaElementPtr xelem;
71
+
72
+ Data_Get_Struct(self, xmlSchemaElement, xelem);
73
+
74
+ if (xelem != NULL && xelem->annot != NULL && xelem->annot->content != NULL)
75
+ {
76
+ xmlChar *content = xmlNodeGetContent(xelem->annot->content);
77
+ if (content)
78
+ {
79
+ result = rxml_new_cstr(content, NULL);
80
+ xmlFree(content);
81
+ }
82
+ }
83
+ return result;
84
+ }
85
+
86
+ void rxml_init_schema_element(void)
87
+ {
88
+ cXMLSchemaElement = rb_define_class_under(cXMLSchema, "Element", rb_cObject);
89
+ rb_define_method(cXMLSchemaElement, "namespace", rxml_schema_element_namespace, 0);
90
+ rb_define_method(cXMLSchemaElement, "name", rxml_schema_element_name, 0);
91
+ rb_define_method(cXMLSchemaElement, "type", rxml_schema_element_type, 0);
92
+ rb_define_method(cXMLSchemaElement, "node", rxml_schema_element_node, 0);
93
+ rb_define_method(cXMLSchemaElement, "value", rxml_schema_element_value, 0);
94
+ rb_define_method(cXMLSchemaElement, "annotation", rxml_schema_element_annot, 0);
95
+ }
@@ -0,0 +1,14 @@
1
+ #ifndef __RXML_SCHEMA_ELEMENT__
2
+ #define __RXML_SCHEMA_ELEMENT__
3
+
4
+ #include "ruby_xml_schema.h"
5
+ #include <libxml/schemasInternals.h>
6
+ #include <libxml/xmlschemas.h>
7
+ #include <libxml/xmlschemastypes.h>
8
+
9
+ extern VALUE cXMLSchemaElement;
10
+
11
+ VALUE rxml_wrap_schema_element(xmlSchemaElementPtr xelement);
12
+ void rxml_init_schema_element(void);
13
+
14
+ #endif
@@ -0,0 +1,52 @@
1
+ #include "ruby_libxml.h"
2
+ #include "ruby_xml_schema_facet.h"
3
+
4
+ VALUE cXMLSchemaFacet;
5
+
6
+ static void rxml_schema_facet_free(xmlSchemaFacetPtr xschema_type)
7
+ {
8
+ xschema_type = NULL;
9
+ xmlFree(xschema_type);
10
+ }
11
+
12
+ /* START FACET*/
13
+
14
+ static VALUE rxml_schema_facet_node(VALUE self)
15
+ {
16
+ xmlSchemaFacetPtr facet;
17
+
18
+ Data_Get_Struct(self, xmlSchemaFacet, facet);
19
+
20
+ return rxml_node_wrap(facet->node);
21
+ }
22
+
23
+ static VALUE rxml_schema_facet_value(VALUE self)
24
+ {
25
+ xmlSchemaFacetPtr facet;
26
+
27
+ Data_Get_Struct(self, xmlSchemaFacet, facet);
28
+
29
+ QNIL_OR_STRING(facet->value)
30
+ }
31
+
32
+ static VALUE rxml_schema_facet_kind(VALUE self)
33
+ {
34
+ xmlSchemaFacetPtr facet;
35
+
36
+ Data_Get_Struct(self, xmlSchemaFacet, facet);
37
+
38
+ return INT2NUM(facet->type);
39
+ }
40
+
41
+ VALUE rxml_wrap_schema_facet(xmlSchemaFacetPtr facet)
42
+ {
43
+ return Data_Wrap_Struct(cXMLSchemaFacet, NULL, rxml_schema_facet_free, facet);
44
+ }
45
+
46
+ void rxml_init_schema_facet(void)
47
+ {
48
+ cXMLSchemaFacet = rb_define_class_under(cXMLSchema, "Facet", rb_cObject);
49
+ rb_define_method(cXMLSchemaFacet, "value", rxml_schema_facet_value, 0);
50
+ rb_define_method(cXMLSchemaFacet, "node", rxml_schema_facet_node, 0);
51
+ rb_define_method(cXMLSchemaFacet, "kind", rxml_schema_facet_kind, 0);
52
+ }
@@ -0,0 +1,13 @@
1
+ #ifndef __RXML_SCHEMA_FACET__
2
+ #define __RXML_SCHEMA_FACET__
3
+
4
+ #include <libxml/schemasInternals.h>
5
+ #include <libxml/xmlschemas.h>
6
+ #include <libxml/xmlschemastypes.h>
7
+
8
+ extern VALUE cXMLSchemaFacet;
9
+
10
+ VALUE rxml_wrap_schema_facet(xmlSchemaFacetPtr facet);
11
+ void rxml_init_schema_facet(void);
12
+
13
+ #endif
@@ -0,0 +1,232 @@
1
+ #include "ruby_libxml.h"
2
+ #include "ruby_xml_schema_type.h"
3
+ #include "ruby_xml_schema_element.h"
4
+ #include "ruby_xml_schema_attribute.h"
5
+ #include "ruby_xml_schema_facet.h"
6
+
7
+ #define UNBOUNDED 1 << 30
8
+ #define FREE_AND_NULL(str) if ((str) != NULL) { xmlFree((xmlChar *) (str)); str = NULL; }
9
+
10
+ VALUE cXMLSchemaType;
11
+
12
+ static void rxml_schema_type_free(xmlSchemaTypePtr xschema_type)
13
+ {
14
+ xschema_type = NULL;
15
+ xmlFree(xschema_type);
16
+ }
17
+
18
+ VALUE rxml_wrap_schema_type(xmlSchemaTypePtr xtype)
19
+ {
20
+ return Data_Wrap_Struct(cXMLSchemaType, NULL, rxml_schema_type_free, xtype);
21
+ }
22
+
23
+ static VALUE rxml_schema_type_namespace(VALUE self)
24
+ {
25
+ xmlSchemaTypePtr xtype;
26
+
27
+ Data_Get_Struct(self, xmlSchemaType, xtype);
28
+
29
+ QNIL_OR_STRING(xtype->targetNamespace)
30
+ }
31
+
32
+ static VALUE rxml_schema_type_name(VALUE self)
33
+ {
34
+ xmlSchemaTypePtr xtype;
35
+
36
+ Data_Get_Struct(self, xmlSchemaType, xtype);
37
+
38
+ QNIL_OR_STRING(xtype->name)
39
+ }
40
+
41
+ static VALUE rxml_schema_type_base(VALUE self)
42
+ {
43
+ xmlSchemaTypePtr xtype;
44
+
45
+ Data_Get_Struct(self, xmlSchemaType, xtype);
46
+
47
+ return Data_Wrap_Struct(cXMLSchemaType, NULL, rxml_schema_type_free, xtype->baseType);
48
+ }
49
+
50
+ static VALUE rxml_schema_type_facets(VALUE self)
51
+ {
52
+ xmlSchemaTypePtr xtype;
53
+ xmlSchemaFacetPtr xfacet;
54
+ VALUE result = rb_ary_new();
55
+ VALUE facet;
56
+
57
+ Data_Get_Struct(self, xmlSchemaType, xtype);
58
+
59
+ xfacet = xtype->facets;
60
+
61
+ while (xfacet != NULL)
62
+ {
63
+ facet = rxml_wrap_schema_facet((xmlSchemaFacetPtr)xfacet);
64
+ rb_ary_push(result, facet);
65
+ xfacet = xfacet->next;
66
+ }
67
+
68
+ return result;
69
+ }
70
+
71
+ static VALUE rxml_schema_type_node(VALUE self)
72
+ {
73
+ xmlSchemaTypePtr xtype;
74
+
75
+ Data_Get_Struct(self, xmlSchemaType, xtype);
76
+
77
+ if(xtype->node != NULL)
78
+ return rxml_node_wrap(xtype->node);
79
+ else
80
+ return Qnil;
81
+ }
82
+
83
+ static VALUE rxml_schema_type_kind(VALUE self)
84
+ {
85
+ xmlSchemaTypePtr xtype;
86
+
87
+ Data_Get_Struct(self, xmlSchemaType, xtype);
88
+
89
+ return INT2NUM(xtype->type);
90
+ }
91
+
92
+ static VALUE rxml_schema_type_annot(VALUE self)
93
+ {
94
+ VALUE result = Qnil;
95
+ xmlSchemaTypePtr xtype;
96
+
97
+ Data_Get_Struct(self, xmlSchemaType, xtype);
98
+
99
+ if(xtype != NULL && xtype->annot != NULL && xtype->annot->content != NULL)
100
+ {
101
+ xmlChar *content = xmlNodeGetContent(xtype->annot->content);
102
+ if (content)
103
+ {
104
+ result = rxml_new_cstr(content, NULL);
105
+ xmlFree(content);
106
+ }
107
+ }
108
+ return result;
109
+ }
110
+
111
+ static void rxmlSchemaCollectElements(xmlSchemaParticlePtr xparticle, VALUE hash)
112
+ {
113
+ VALUE element;
114
+ xmlSchemaTreeItemPtr xterm;
115
+
116
+ if (xparticle == NULL)
117
+ return;
118
+
119
+ xterm = xparticle->children;
120
+
121
+ if (xterm != NULL)
122
+ {
123
+ switch (xterm->type)
124
+ {
125
+ case XML_SCHEMA_TYPE_ELEMENT:
126
+ element = rxml_wrap_schema_element((xmlSchemaElementPtr)xterm);
127
+ rb_iv_set(element, "@min", INT2NUM(xparticle->minOccurs));
128
+
129
+ if (xparticle->maxOccurs >= UNBOUNDED)
130
+ rb_iv_set(element, "@max", rb_const_get(rb_path2class("Float"), rb_intern("INFINITY")));
131
+ else
132
+ rb_iv_set(element, "@max", INT2NUM(xparticle->maxOccurs));
133
+
134
+ if (xparticle->annot != NULL)
135
+ {
136
+ xmlChar *content = xmlNodeGetContent(xparticle->annot->content);
137
+
138
+ if (content != NULL)
139
+ {
140
+ rb_iv_set(element, "@annotation", rb_str_new2((const char *) content));
141
+ xmlFree(content);
142
+ }
143
+ }
144
+
145
+ rb_hash_aset(hash, rb_str_new2((const char *) ((xmlSchemaElementPtr)xterm)->name), element);
146
+ break;
147
+
148
+ case XML_SCHEMA_TYPE_SEQUENCE:
149
+ break;
150
+
151
+ case XML_SCHEMA_TYPE_CHOICE:
152
+ break;
153
+
154
+ case XML_SCHEMA_TYPE_ALL:
155
+ break;
156
+
157
+ case XML_SCHEMA_TYPE_ANY:
158
+ break;
159
+
160
+ default:
161
+ return;
162
+ }
163
+ }
164
+
165
+ if (xterm &&
166
+ ((xterm->type == XML_SCHEMA_TYPE_SEQUENCE) || (xterm->type == XML_SCHEMA_TYPE_CHOICE) || (xterm->type == XML_SCHEMA_TYPE_ALL)) &&
167
+ (xterm->children != NULL))
168
+ {
169
+ rxmlSchemaCollectElements((xmlSchemaParticlePtr)xterm->children, hash);
170
+ }
171
+
172
+ if (xparticle->next != NULL)
173
+ {
174
+ rxmlSchemaCollectElements((xmlSchemaParticlePtr)xparticle->next, hash);
175
+ }
176
+ }
177
+
178
+ static VALUE rxml_schema_type_elements(VALUE self)
179
+ {
180
+ VALUE result = rb_hash_new();
181
+ xmlSchemaTypePtr xtype;
182
+
183
+ Data_Get_Struct(self, xmlSchemaType, xtype);
184
+ rxmlSchemaCollectElements((xmlSchemaParticlePtr) xtype->subtypes, result);
185
+
186
+ return result;
187
+ }
188
+
189
+ static VALUE rxml_schema_type_attributes(VALUE self)
190
+ {
191
+ VALUE result = rb_ary_new();
192
+ xmlSchemaTypePtr xtype;
193
+ xmlSchemaAttributeUsePtr xuse;
194
+ xmlSchemaItemListPtr xuses;
195
+ int i;
196
+
197
+ Data_Get_Struct(self, xmlSchemaType, xtype);
198
+ xuses = xtype->attrUses;
199
+
200
+ if (xuses != NULL)
201
+ {
202
+ for (i = 0; i < xuses->nbItems; i++)
203
+ {
204
+ xuse = (xmlSchemaAttributeUsePtr)xuses->items[i];
205
+ rb_ary_push(result, rxml_wrap_schema_attribute(xuse));
206
+ }
207
+ }
208
+
209
+ return result;
210
+ }
211
+
212
+ void rxml_init_schema_type(void)
213
+ {
214
+ /* Add in infinity support for ruby 1.8.7 */
215
+ #if !defined(RUBY_VM) && defined(INFINITY)
216
+ ID infinityId = rb_intern("INFINITY");
217
+ if (rb_const_defined(rb_cFloat, infinityId) == Qfalse)
218
+ rb_define_const(rb_cFloat, "INFINITY", rb_float_new(INFINITY));
219
+ #endif
220
+
221
+ cXMLSchemaType = rb_define_class_under(cXMLSchema, "Type", rb_cObject);
222
+
223
+ rb_define_method(cXMLSchemaType, "namespace", rxml_schema_type_namespace, 0);
224
+ rb_define_method(cXMLSchemaType, "name", rxml_schema_type_name, 0);
225
+ rb_define_method(cXMLSchemaType, "elements", rxml_schema_type_elements, 0);
226
+ rb_define_method(cXMLSchemaType, "attributes", rxml_schema_type_attributes, 0);
227
+ rb_define_method(cXMLSchemaType, "base", rxml_schema_type_base, 0);
228
+ rb_define_method(cXMLSchemaType, "kind", rxml_schema_type_kind, 0);
229
+ rb_define_method(cXMLSchemaType, "node", rxml_schema_type_node, 0);
230
+ rb_define_method(cXMLSchemaType, "facets", rxml_schema_type_facets, 0);
231
+ rb_define_method(cXMLSchemaType, "annotation", rxml_schema_type_annot, 0);
232
+ }
@@ -0,0 +1,9 @@
1
+ #ifndef __RXML_SCHEMA_TYPE__
2
+ #define __RXML_SCHEMA_TYPE__
3
+
4
+ extern VALUE cXMLSchemaType;
5
+
6
+ VALUE rxml_wrap_schema_type(xmlSchemaTypePtr xtype);
7
+ void rxml_init_schema_type(void);
8
+
9
+ #endif
@@ -0,0 +1,9 @@
1
+ /* Don't nuke this block! It is used for automatically updating the
2
+ * versions below. VERSION = string formatting, VERNUM = numbered
3
+ * version for inline testing: increment both or none at all.*/
4
+ #define RUBY_LIBXML_VERSION "3.2.2"
5
+ #define RUBY_LIBXML_VERNUM 321
6
+ #define RUBY_LIBXML_VER_MAJ 3
7
+ #define RUBY_LIBXML_VER_MIN 2
8
+ #define RUBY_LIBXML_VER_MIC 2
9
+ #define RUBY_LIBXML_VER_PATCH 0