libxslt-ruby 0.6.0-x86-mswin32-60 → 0.7.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
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
  }