libxslt-ruby 0.6.0-x86-mswin32-60 → 0.7.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.
Files changed (42) hide show
  1. data/README +125 -136
  2. data/doc/classes/XSLT.html +215 -0
  3. data/doc/classes/XSLT/Stylesheet.html +244 -0
  4. data/doc/classes/XSLT/TransformContext.html +111 -0
  5. data/doc/created.rid +1 -0
  6. data/doc/files/CHANGES.html +168 -0
  7. data/doc/files/LICENSE.html +133 -0
  8. data/doc/files/README.html +269 -0
  9. data/doc/files/ext/libxslt/libxslt_c.html +101 -0
  10. data/doc/files/ext/libxslt/ruby_xslt_stylesheet_c.html +101 -0
  11. data/doc/files/ext/libxslt/ruby_xslt_transform_context_c.html +101 -0
  12. data/doc/files/lib/deprecated_rb.html +101 -0
  13. data/doc/files/lib/libxslt_rb.html +110 -0
  14. data/doc/fr_class_index.html +29 -0
  15. data/doc/fr_file_index.html +34 -0
  16. data/doc/fr_method_index.html +28 -0
  17. data/doc/index.html +24 -0
  18. data/doc/rdoc-style.css +208 -0
  19. data/ext/libxslt/libxslt.c +21 -212
  20. data/ext/libxslt/libxslt.h +0 -17
  21. data/ext/libxslt/ruby_xslt_stylesheet.c +135 -173
  22. data/ext/libxslt/ruby_xslt_stylesheet.h +5 -10
  23. data/ext/libxslt/ruby_xslt_transform_context.c +5 -2
  24. data/ext/libxslt/version.h +2 -2
  25. data/lib/deprecated.rb +66 -0
  26. data/lib/libxslt.rb +1 -0
  27. data/lib/libxslt_ruby.so +0 -0
  28. data/mingw/libxslt_ruby.so +0 -0
  29. data/tests/files/commentary.dtd +34 -0
  30. data/tests/files/fuzface.xml +154 -0
  31. data/tests/files/fuzface.xsl +4 -0
  32. data/tests/files/params.xml +2 -0
  33. data/tests/files/params.xsl +11 -0
  34. data/tests/files/ramblings.xsl +46 -0
  35. data/tests/test_deprecated.rb +99 -0
  36. data/tests/test_libxslt.rb +21 -0
  37. data/tests/test_stylesheet.rb +64 -0
  38. data/tests/test_suite.rb +3 -0
  39. data/vc/libxslt_ruby.sln +1 -1
  40. data/vc/libxslt_ruby.vcproj +3 -3
  41. metadata +41 -10
  42. data/mingw/mingw.rake +0 -36
@@ -0,0 +1,28 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Methods
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Methods</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Methods</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/XSLT/Stylesheet.html#M000002">apply (XSLT::Stylesheet)</a><br />
24
+ <a href="classes/XSLT/Stylesheet.html#M000001">new (XSLT::Stylesheet)</a><br />
25
+ </div>
26
+ </div>
27
+ </body>
28
+ </html>
data/doc/index.html ADDED
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
+
6
+ <!--
7
+
8
+ libxml-xslt
9
+
10
+ -->
11
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
+ <head>
13
+ <title>libxml-xslt</title>
14
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
+ </head>
16
+ <frameset rows="20%, 80%">
17
+ <frameset cols="25%,35%,45%">
18
+ <frame src="fr_file_index.html" title="Files" name="Files" />
19
+ <frame src="fr_class_index.html" name="Classes" />
20
+ <frame src="fr_method_index.html" name="Methods" />
21
+ </frameset>
22
+ <frame src="files/README.html" name="docwin" />
23
+ </frameset>
24
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
@@ -5,205 +5,30 @@
5
5
  #include "libxslt.h"
6
6
  #include "libxml/xmlversion.h"
7
7
 
8
- VALUE mXML;
9
- VALUE cXMLDocument;
10
-
11
8
  VALUE cXSLT;
12
9
  VALUE eXMLXSLTStylesheetRequireParsedDoc;
13
10
 
14
- /* call-seq:
15
- * xslt.doc => #&lt;XML::Document...&gt;
16
- *
17
- * Obtain the source XML::Document.
18
- */
19
- VALUE
20
- ruby_xslt_doc_get(VALUE self) {
21
- ruby_xslt *rxslt;
22
- Data_Get_Struct(self, ruby_xslt, rxslt);
23
- return(rxslt->xml_doc_obj);
24
- }
25
-
26
- /* call-seq:
27
- * xslt.doc = some_xml_document
28
- *
29
- * Set the source XML::Document.
30
- */
31
- VALUE
32
- ruby_xslt_doc_set(VALUE self, VALUE xml_doc_obj) {
33
- ruby_xslt *rxslt;
34
- ruby_xml_document_t *rxd;
35
- ruby_xslt_transform_context *rxtc;
36
-
37
- if (rb_obj_is_kind_of(xml_doc_obj, cXMLDocument) == Qfalse)
38
- rb_raise(rb_eTypeError, "Invalid argument: must be of type XML::Document");
39
-
40
- Data_Get_Struct(self, ruby_xslt, rxslt);
41
- rxslt->xml_doc_obj = xml_doc_obj;
42
-
43
- Data_Get_Struct(xml_doc_obj, ruby_xml_document_t, rxd);
44
- if (rxd->doc == NULL)
45
- return(Qnil);
46
-
47
- rxslt->ctxt = ruby_xslt_transform_context_new3(self);
48
- Data_Get_Struct(rxslt->ctxt, ruby_xslt_transform_context, rxtc);
11
+ /*
12
+ * Document-class: XSLT
13
+ *
14
+ * The libxslt gem provides Ruby language bindings for GNOME's Libxslt
15
+ * toolkit. It is free software, released under the MIT License.
16
+ *
17
+ * Using the bindings is straightforward:
18
+ *
19
+ * stylesheet_doc = XML::Document.file('stylesheet_file')
20
+ * stylesheet = XSLT::Stylesheet.new(stylesheet_doc)
21
+ *
22
+ * xml_doc = XML::Document.file('xml_file')
23
+ * result = stylesheet.apply(xml_doc)
24
+ *
25
+ *
26
+ */
27
+
28
+ #ifdef RDOC_NEVER_DEFINED
29
+ cXSLT = rb_define_module("XSLT");
30
+ #endif
49
31
 
50
- if (rxslt->xsp == NULL || rxd->doc == NULL)
51
- return(Qnil);
52
-
53
- rxtc->ctxt = xsltNewTransformContext(rxslt->xsp, rxd->doc) ;
54
-
55
- return(rxslt->xml_doc_obj);
56
- }
57
-
58
- /* call-seq:
59
- * xslt.filename => "filename.xsl"
60
- *
61
- * Obtain the stylesheet filename.
62
- */
63
- VALUE
64
- ruby_xslt_filename_get(VALUE self) {
65
- ruby_xslt *rxslt;
66
- Data_Get_Struct(self, ruby_xslt, rxslt);
67
-
68
- if (rxslt->data_type != RUBY_LIBXSLT_SRC_TYPE_FILE)
69
- return(Qnil);
70
- else
71
- return((VALUE)rxslt->data);
72
- }
73
-
74
-
75
- /* call-seq:
76
- * xslt.filename = "filename.xsl"
77
- *
78
- * Set the stylesheet filename.
79
- */
80
- VALUE
81
- ruby_xslt_filename_set(VALUE self, VALUE filename) {
82
- ruby_xslt *rxslt;
83
- Check_Type(filename, T_STRING);
84
- Data_Get_Struct(self, ruby_xslt, rxslt);
85
-
86
- if (rxslt->data_type != RUBY_LIBXSLT_SRC_TYPE_NULL)
87
- return(Qnil);
88
-
89
- rxslt->data_type = RUBY_LIBXSLT_SRC_TYPE_FILE;
90
- rxslt->data = (void *)filename;
91
- return(filename);
92
- }
93
-
94
-
95
- void
96
- ruby_xslt_free(ruby_xslt *rxslt) {
97
- if (rxslt != NULL)
98
- ruby_xfree(rxslt);
99
- }
100
-
101
-
102
- void
103
- ruby_xslt_mark(ruby_xslt *rxslt) {
104
- if (rxslt == NULL) return;
105
- if (!NIL_P(rxslt->ctxt)) rb_gc_mark(rxslt->ctxt);
106
- if (!NIL_P(rxslt->str)) rb_gc_mark(rxslt->str);
107
- if (!NIL_P(rxslt->xml_doc_obj)) rb_gc_mark(rxslt->xml_doc_obj);
108
-
109
- switch(rxslt->data_type) {
110
- case RUBY_LIBXSLT_SRC_TYPE_FILE:
111
- if (rxslt->data != NULL)
112
- rb_gc_mark((VALUE)rxslt->data);
113
- break;
114
- }
115
- }
116
-
117
-
118
- /* call-seq:
119
- * XML::XSLT.new => #&lt;XML::XSLT...&gt;
120
- *
121
- * Create a new XSLT instance. You will need to specify
122
- * a filename and document for the instance after it is
123
- * created.
124
- */
125
- VALUE
126
- ruby_xslt_new(VALUE class) {
127
- ruby_xslt *rxslt = ALLOC(ruby_xslt);
128
-
129
- if (rxslt == NULL)
130
- rb_raise(rb_eNoMemError, "No memory left for XSLT struct");
131
-
132
- rxslt->ctxt = Qnil;
133
- rxslt->data = NULL;
134
- rxslt->data_type = RUBY_LIBXSLT_SRC_TYPE_NULL;
135
- rxslt->str = Qnil;
136
- rxslt->xml_doc_obj = Qnil;
137
- rxslt->xsp = NULL;
138
-
139
- return(Data_Wrap_Struct(class, ruby_xslt_mark, ruby_xslt_free, rxslt));
140
- }
141
-
142
- /* call-seq:
143
- * XML::XSLT.file("filename.xsl") => #&lt;XML::XSLT...&gt;
144
- *
145
- * Create a new XSLT instance with the supplied stylesheet filename.
146
- */
147
- VALUE
148
- ruby_xslt_new_file(VALUE class, VALUE filename) {
149
- VALUE xslt;
150
-
151
- xslt = ruby_xslt_new(class);
152
- ruby_xslt_filename_set(xslt, filename);
153
- return(xslt);
154
- }
155
-
156
- /* call-seq:
157
- * xslt.parse => #&lt;XML::XSLT::Stylesheet...&gt;
158
- *
159
- * Parse the xsl source (specified by +filename+) and create
160
- * a +Stylesheet+ instance that will apply it against the
161
- * source document. If a parsed XML::Document isn't associated
162
- * with this +XSLT+ instance (via #doc=) then a
163
- * Stylesheet::RequireParsedDoc exception is raised.
164
- */
165
- VALUE
166
- ruby_xslt_parse(VALUE self) {
167
- ruby_xml_document_t *rxd;
168
- ruby_xslt *rxslt;
169
- ruby_xslt_stylesheet *xss;
170
- VALUE xssobj;
171
- xsltStylesheetPtr sheet;
172
-
173
- Data_Get_Struct(self, ruby_xslt, rxslt);
174
-
175
- if (rxslt->data_type == RUBY_LIBXSLT_SRC_TYPE_FILE) {
176
- /*xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet,
177
- xsltParseStylesheetFile((const xmlChar *)
178
- STR2CSTR(rxslt->data)));*/
179
- sheet = xsltParseStylesheetFile((const xmlChar *) STR2CSTR(rxslt->data));
180
-
181
- if (sheet) {
182
- xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet, sheet);
183
- Data_Get_Struct(xssobj, ruby_xslt_stylesheet, xss);
184
- xss->data = (void *)rb_obj_dup((VALUE)rxslt->data);
185
- xss->xml_doc_obj = rxslt->xml_doc_obj;
186
- } else
187
- xssobj = Qnil;
188
-
189
- } else if (rxslt->xml_doc_obj != Qnil) {
190
- Data_Get_Struct(rxslt->xml_doc_obj, ruby_xml_document_t, rxd);
191
- /*xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet,
192
- xsltParseStylesheetDoc(rxd->doc));*/
193
- sheet = xsltParseStylesheetDoc(rxd->doc);
194
- if (sheet) {
195
- xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet,sheet);
196
- Data_Get_Struct(xssobj, ruby_xslt_stylesheet, xss);
197
- xss->xml_doc_obj = rxslt->xml_doc_obj;
198
- } else
199
- xssobj = Qnil;
200
-
201
- } else {
202
- xssobj = Qnil;
203
- }
204
-
205
- return(xssobj);
206
- }
207
32
 
208
33
  #if defined(_WIN32)
209
34
  __declspec(dllexport)
@@ -213,11 +38,7 @@ void
213
38
  Init_libxslt_ruby(void) {
214
39
  LIBXML_TEST_VERSION;
215
40
 
216
- // Must load libxml bindings to use xslst
217
- mXML = rb_const_get(rb_cObject, rb_intern("XML"));
218
- cXMLDocument = rb_const_get(mXML, rb_intern("Document"));
219
-
220
- cXSLT = rb_define_class_under(mXML, "XSLT", rb_cObject);
41
+ cXSLT = rb_define_module("XSLT");
221
42
 
222
43
  rb_define_const(cXSLT, "MAX_DEPTH", INT2NUM(xsltMaxDepth));
223
44
  rb_define_const(cXSLT, "MAX_SORT", INT2NUM(XSLT_MAX_SORT));
@@ -236,16 +57,4 @@ Init_libxslt_ruby(void) {
236
57
 
237
58
  ruby_init_xslt_stylesheet();
238
59
  ruby_init_xslt_transform_context();
239
-
240
-
241
- rb_define_singleton_method(cXSLT, "file", ruby_xslt_new_file, 1);
242
- rb_define_singleton_method(cXSLT, "new", ruby_xslt_new, 0);
243
-
244
- rb_define_method(cXSLT, "doc", ruby_xslt_doc_get, 0);
245
- rb_define_method(cXSLT, "doc=", ruby_xslt_doc_set, 1);
246
- rb_define_method(cXSLT, "filename", ruby_xslt_filename_get, 0);
247
- rb_define_method(cXSLT, "filename=", ruby_xslt_filename_set, 1);
248
- rb_define_method(cXSLT, "parse", ruby_xslt_parse, 0);
249
-
250
- //exsltRegisterAll();
251
60
  }