teius 0.5-mswin32 → 0.12-mswin32
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/ext/Makefile +3 -3
- data/ext/extconf.rb +47 -3
- data/ext/mkmf.log +48 -2
- data/ext/notes.txt +1 -2
- data/ext/teius.c +74 -15
- data/ext/teius.o +0 -0
- data/ext/teius.so +0 -0
- data/lib/teius.rb +5 -6
- data/test/teius_test.rb +36 -1
- metadata +4 -3
data/ext/Makefile
CHANGED
@@ -35,8 +35,8 @@ LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
|
35
35
|
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
|
36
36
|
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
|
37
37
|
|
38
|
-
CFLAGS = -g -O2
|
39
|
-
CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir)
|
38
|
+
CFLAGS = -g -O2 -I.
|
39
|
+
CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) -DHAVE_LIBXML_XMLVERSION_H -DHAVE_LIBXSLT_XSLT_H -Id:/msys/local/include -Id:/msys/local/include/libxml2
|
40
40
|
CXXFLAGS = $(CFLAGS)
|
41
41
|
DLDFLAGS = -Wl,--enable-auto-import,--export-all
|
42
42
|
LDSHARED = gcc -shared -s
|
@@ -72,7 +72,7 @@ extout =
|
|
72
72
|
extout_prefix =
|
73
73
|
target_prefix =
|
74
74
|
LOCAL_LIBS =
|
75
|
-
LIBS = $(LIBRUBYARG_SHARED) -lxslt -lxml2 -lwsock32
|
75
|
+
LIBS = $(LIBRUBYARG_SHARED) -lxslt -lxml2 -lxslt -lxml2 -lwsock32
|
76
76
|
SRCS = teius.c
|
77
77
|
OBJS = teius.o
|
78
78
|
TARGET = teius
|
data/ext/extconf.rb
CHANGED
@@ -1,7 +1,51 @@
|
|
1
1
|
require 'mkmf'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
def crash(str)
|
4
|
+
printf(" extconf failure: %s\n", str)
|
5
|
+
exit 1
|
6
|
+
end
|
7
|
+
|
8
|
+
dir_config('xml2');
|
9
|
+
unless (have_library('xml2', 'xmlParseDoc') or
|
10
|
+
find_library('xml2', '/opt/lib', '/usr/local/lib', '/usr/lib')) and
|
11
|
+
(have_header('libxml/xmlversion.h') or
|
12
|
+
find_header('libxml/xmlversion.h',
|
13
|
+
'/opt/include/libxml2',
|
14
|
+
'/usr/local/include/libxml2',
|
15
|
+
'/usr/include/libxml',
|
16
|
+
'/usr/include/libxml2'))
|
17
|
+
crash(<<EOL)
|
18
|
+
need libxml2.
|
19
|
+
|
20
|
+
Install the library or try one of the following options to extconf.rb:
|
21
|
+
|
22
|
+
--with-xml2-dir=/path/to/libxml2
|
23
|
+
--with-xml2-lib=/path/to/libxml2/lib
|
24
|
+
--with-xml2-include=/path/to/libxml2/include
|
25
|
+
EOL
|
26
|
+
end
|
27
|
+
|
28
|
+
dir_config('libxslt');
|
29
|
+
unless (have_library('xslt', 'xsltApplyStylesheet') or
|
30
|
+
find_library('xslt', '/opt/lib', '/usr/local/lib', '/usr/lib')) and
|
31
|
+
(have_header('libxslt/xslt.h') or
|
32
|
+
find_header('libxslt/xslt.h',
|
33
|
+
'/opt/include/libxslt',
|
34
|
+
'/usr/local/include/libxslt',
|
35
|
+
'/usr/include/libxslt'))
|
36
|
+
crash(<<EOL)
|
37
|
+
need libxslt.
|
38
|
+
|
39
|
+
Install the library or try one of the following options to extconf.rb:
|
40
|
+
|
41
|
+
--with-xslt-dir=/path/to/libxslt
|
42
|
+
--with-xslt-lib=/path/to/libxslt/lib
|
43
|
+
--with-xslt-include=/path/to/libxslt/include
|
44
|
+
EOL
|
45
|
+
end
|
46
|
+
|
5
47
|
have_library('xml2', 'xmlReadFile')
|
6
48
|
have_library('xslt', 'xsltParseStylesheetFile')
|
7
|
-
|
49
|
+
|
50
|
+
$CFLAGS << ' ' << $INCFLAGS
|
51
|
+
create_makefile('teius')
|
data/ext/mkmf.log
CHANGED
@@ -1,6 +1,52 @@
|
|
1
|
+
have_library: checking for xmlParseDoc() in -lxml2... -------------------- yes
|
2
|
+
|
3
|
+
"gcc -o conftest -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include/libxml2 -g -O2 conftest.c -L"d:/msys/local/lib" -L"d:/msys/local/lib" -lmsvcrt-ruby18-static -lxml2 -lwsock32 "
|
4
|
+
checked program was:
|
5
|
+
/* begin */
|
6
|
+
|
7
|
+
/*top*/
|
8
|
+
int main() { return 0; }
|
9
|
+
int t() { xmlParseDoc(); return 0; }
|
10
|
+
/* end */
|
11
|
+
|
12
|
+
--------------------
|
13
|
+
|
14
|
+
have_header: checking for libxml/xmlversion.h... -------------------- yes
|
15
|
+
|
16
|
+
"gcc -E -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include/libxml2 -g -O2 conftest.c -o conftest.i"
|
17
|
+
checked program was:
|
18
|
+
/* begin */
|
19
|
+
#include <libxml/xmlversion.h>
|
20
|
+
/* end */
|
21
|
+
|
22
|
+
--------------------
|
23
|
+
|
24
|
+
have_library: checking for xsltApplyStylesheet() in -lxslt... -------------------- yes
|
25
|
+
|
26
|
+
"gcc -o conftest -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include -Id:/msys/local/include/libxml2 -g -O2 conftest.c -L"d:/msys/local/lib" -L"d:/msys/local/lib" -lxml2 -lmsvcrt-ruby18-static -lxslt -lxml2 -lwsock32 "
|
27
|
+
checked program was:
|
28
|
+
/* begin */
|
29
|
+
|
30
|
+
/*top*/
|
31
|
+
int main() { return 0; }
|
32
|
+
int t() { xsltApplyStylesheet(); return 0; }
|
33
|
+
/* end */
|
34
|
+
|
35
|
+
--------------------
|
36
|
+
|
37
|
+
have_header: checking for libxslt/xslt.h... -------------------- yes
|
38
|
+
|
39
|
+
"gcc -E -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include -Id:/msys/local/include/libxml2 -g -O2 conftest.c -o conftest.i"
|
40
|
+
checked program was:
|
41
|
+
/* begin */
|
42
|
+
#include <libxslt/xslt.h>
|
43
|
+
/* end */
|
44
|
+
|
45
|
+
--------------------
|
46
|
+
|
1
47
|
have_library: checking for xmlReadFile() in -lxml2... -------------------- yes
|
2
48
|
|
3
|
-
"gcc -o conftest -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include -Id:/msys/local/include/libxml2 -g -O2 conftest.c -L"d:/msys/local/lib" -L"d:/msys/local/lib"
|
49
|
+
"gcc -o conftest -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include -Id:/msys/local/include/libxml2 -g -O2 conftest.c -L"d:/msys/local/lib" -L"d:/msys/local/lib" -lxslt -lxml2 -lmsvcrt-ruby18-static -lxml2 -lxslt -lxml2 -lwsock32 "
|
4
50
|
checked program was:
|
5
51
|
/* begin */
|
6
52
|
|
@@ -13,7 +59,7 @@ int t() { xmlReadFile(); return 0; }
|
|
13
59
|
|
14
60
|
have_library: checking for xsltParseStylesheetFile() in -lxslt... -------------------- yes
|
15
61
|
|
16
|
-
"gcc -o conftest -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include -Id:/msys/local/include/libxml2 -g -O2 conftest.c -L"d:/msys/local/lib" -L"d:/msys/local/lib" -lxml2 -lmsvcrt-ruby18-static -lxslt -lxml2 -lwsock32 "
|
62
|
+
"gcc -o conftest -I. -Id:/msys/local/lib/ruby/1.8/i386-mingw32 -Id:/msys/local/include -Id:/msys/local/include/libxml2 -g -O2 conftest.c -L"d:/msys/local/lib" -L"d:/msys/local/lib" -lxml2 -lxslt -lxml2 -lmsvcrt-ruby18-static -lxslt -lxml2 -lxslt -lxml2 -lwsock32 "
|
17
63
|
checked program was:
|
18
64
|
/* begin */
|
19
65
|
|
data/ext/notes.txt
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
ruby extconf.rb --with-
|
2
|
-
/usr/local/include --with-libxslt-lib=/usr/local/lib
|
1
|
+
ruby extconf.rb --with-xml2-include=/usr/local/include/libxml2 --with-xml2-lib=/usr/local/lib --with-libxslt-include=/usr/local/include --with-libxslt-lib=/usr/local/lib
|
data/ext/teius.c
CHANGED
@@ -35,7 +35,7 @@ static VALUE node_value(VALUE self) {
|
|
35
35
|
Data_Get_Struct(self, xmlNode, node);
|
36
36
|
|
37
37
|
xmlChar *val = xmlNodeGetContent(node);
|
38
|
-
VALUE rVal = rb_str_new2(val);
|
38
|
+
VALUE rVal = rb_str_new2((char *)val);
|
39
39
|
xmlFree(val);
|
40
40
|
|
41
41
|
return rVal;
|
@@ -59,9 +59,9 @@ static VALUE node_attributes(VALUE self) {
|
|
59
59
|
xmlAttrPtr attrs = node->properties;
|
60
60
|
VALUE rHash = rb_hash_new();
|
61
61
|
while (attrs != NULL) {
|
62
|
-
VALUE rName = rb_str_new2(attrs->name);
|
62
|
+
VALUE rName = rb_str_new2((char *)attrs->name);
|
63
63
|
xmlChar *val = xmlNodeGetContent(attrs->children);
|
64
|
-
VALUE rVal = rb_str_new2(val);
|
64
|
+
VALUE rVal = rb_str_new2((char *)val);
|
65
65
|
rb_hash_aset(rHash, rName, rVal);
|
66
66
|
xmlFree(val);
|
67
67
|
attrs = attrs->next;
|
@@ -90,7 +90,7 @@ static VALUE node_find(int argc, VALUE *argv, VALUE self) {
|
|
90
90
|
context->node = node;
|
91
91
|
|
92
92
|
char *xpath = StringValuePtr(rXpath);
|
93
|
-
result = xmlXPathEvalExpression(xpath, context);
|
93
|
+
result = xmlXPathEvalExpression((xmlChar *)xpath, context);
|
94
94
|
if (result == NULL) {
|
95
95
|
xmlErrorPtr err = xmlGetLastError();
|
96
96
|
xmlXPathFreeContext(context);
|
@@ -147,13 +147,42 @@ static VALUE node_find(int argc, VALUE *argv, VALUE self) {
|
|
147
147
|
static VALUE node_name(VALUE self) {
|
148
148
|
xmlNodePtr node = NULL;
|
149
149
|
Data_Get_Struct(self, xmlNode, node);
|
150
|
-
return rb_str_new2(node->name);
|
150
|
+
return rb_str_new2((char *)node->name);
|
151
151
|
}
|
152
152
|
|
153
153
|
static VALUE node_xpath(VALUE self) {
|
154
154
|
xmlNodePtr node = NULL;
|
155
155
|
Data_Get_Struct(self, xmlNode, node);
|
156
|
-
return rb_str_new2(xmlGetNodePath(node));
|
156
|
+
return rb_str_new2((char *)xmlGetNodePath(node));
|
157
|
+
}
|
158
|
+
|
159
|
+
static VALUE node_type(VALUE self) {
|
160
|
+
xmlNodePtr node = NULL;
|
161
|
+
Data_Get_Struct(self, xmlNode, node);
|
162
|
+
|
163
|
+
switch (node->type) {
|
164
|
+
case 1: return ID2SYM(rb_intern("element"));
|
165
|
+
case 2: return ID2SYM(rb_intern("attribute"));
|
166
|
+
case 3: return ID2SYM(rb_intern("text"));
|
167
|
+
case 4: return ID2SYM(rb_intern("cdata_section"));
|
168
|
+
case 5: return ID2SYM(rb_intern("entity_ref"));
|
169
|
+
case 6: return ID2SYM(rb_intern("entity"));
|
170
|
+
case 7: return ID2SYM(rb_intern("pi"));
|
171
|
+
case 8: return ID2SYM(rb_intern("comment"));
|
172
|
+
case 9: return ID2SYM(rb_intern("document"));
|
173
|
+
case 10: return ID2SYM(rb_intern("document_type"));
|
174
|
+
case 11: return ID2SYM(rb_intern("document_fragment"));
|
175
|
+
case 12: return ID2SYM(rb_intern("notation"));
|
176
|
+
case 13: return ID2SYM(rb_intern("html_document"));
|
177
|
+
case 14: return ID2SYM(rb_intern("dtd"));
|
178
|
+
case 15: return ID2SYM(rb_intern("element_declaration"));
|
179
|
+
case 16: return ID2SYM(rb_intern("attribute_declaration"));
|
180
|
+
case 17: return ID2SYM(rb_intern("entity_declaration"));
|
181
|
+
case 18: return ID2SYM(rb_intern("namespace_declaration"));
|
182
|
+
case 19: return ID2SYM(rb_intern("xinclude_start"));
|
183
|
+
case 20: return ID2SYM(rb_intern("xinclude_end"));
|
184
|
+
case 21: return ID2SYM(rb_intern("docb_document"));
|
185
|
+
}
|
157
186
|
}
|
158
187
|
|
159
188
|
static VALUE node_pointer(VALUE self) {
|
@@ -180,12 +209,27 @@ static VALUE node_content(VALUE self) {
|
|
180
209
|
buf = xmlBufferCreate();
|
181
210
|
size = xmlNodeDump(buf, node->doc, node, 0, 1);
|
182
211
|
mem = xmlBufferContent(buf);
|
183
|
-
VALUE rStr = rb_str_new2(mem);
|
212
|
+
VALUE rStr = rb_str_new2((char *)mem);
|
184
213
|
xmlBufferFree(buf);
|
185
214
|
|
186
215
|
return rStr;
|
187
216
|
}
|
188
217
|
|
218
|
+
static VALUE node_children(VALUE self) {
|
219
|
+
xmlNodePtr node = NULL;
|
220
|
+
xmlNodePtr cur_child = NULL;
|
221
|
+
|
222
|
+
Data_Get_Struct(self, xmlNode, node);
|
223
|
+
|
224
|
+
VALUE rArr = rb_ary_new();
|
225
|
+
for (cur_child = node->children; cur_child != NULL; cur_child = cur_child->next) {
|
226
|
+
VALUE rNode = Data_Wrap_Struct(cNode, 0, 0, cur_child);
|
227
|
+
rb_ary_push(rArr, rNode);
|
228
|
+
}
|
229
|
+
|
230
|
+
return rArr;
|
231
|
+
}
|
232
|
+
|
189
233
|
static VALUE document_parse_file(VALUE self, VALUE rFilename) {
|
190
234
|
xmlDocPtr doc = xmlReadFile(StringValuePtr(rFilename), NULL, 0);
|
191
235
|
if (doc == NULL) {
|
@@ -195,20 +239,20 @@ static VALUE document_parse_file(VALUE self, VALUE rFilename) {
|
|
195
239
|
}
|
196
240
|
|
197
241
|
/* Load new document */
|
198
|
-
VALUE rDoc = Data_Wrap_Struct(
|
242
|
+
VALUE rDoc = Data_Wrap_Struct(self, 0, doc_free, doc);
|
199
243
|
|
200
244
|
return rDoc;
|
201
245
|
}
|
202
246
|
|
203
247
|
static VALUE document_parse_string(VALUE self, VALUE rDocString) {
|
204
|
-
xmlDocPtr doc = xmlReadDoc(StringValuePtr(rDocString), NULL, NULL, 0);
|
248
|
+
xmlDocPtr doc = xmlReadDoc((xmlChar *)StringValuePtr(rDocString), NULL, NULL, 0);
|
205
249
|
if (doc == NULL) {
|
206
250
|
xmlErrorPtr err = xmlGetLastError();
|
207
251
|
rb_raise(cParseError, "could not parse string: %s", err->message);
|
208
252
|
}
|
209
253
|
|
210
254
|
/* Load new document */
|
211
|
-
VALUE rDoc = Data_Wrap_Struct(
|
255
|
+
VALUE rDoc = Data_Wrap_Struct(self, 0, doc_free, doc);
|
212
256
|
|
213
257
|
return rDoc;
|
214
258
|
}
|
@@ -220,7 +264,7 @@ static VALUE document_to_s(VALUE self) {
|
|
220
264
|
|
221
265
|
Data_Get_Struct(self, xmlDoc, doc);
|
222
266
|
xmlDocDumpMemory(doc, &mem, &size);
|
223
|
-
VALUE rStr = rb_str_new2(mem);
|
267
|
+
VALUE rStr = rb_str_new2((char *)mem);
|
224
268
|
xmlFree(mem);
|
225
269
|
|
226
270
|
return rStr;
|
@@ -244,7 +288,7 @@ static void stylesheet_free(void *p) {
|
|
244
288
|
}
|
245
289
|
|
246
290
|
static VALUE stylesheet_parse_file(VALUE self, VALUE rFilename) {
|
247
|
-
xsltStylesheetPtr xsl = xsltParseStylesheetFile(StringValuePtr(rFilename));
|
291
|
+
xsltStylesheetPtr xsl = xsltParseStylesheetFile((xmlChar *)StringValuePtr(rFilename));
|
248
292
|
if (xsl == NULL) {
|
249
293
|
xmlErrorPtr err = xmlGetLastError();
|
250
294
|
rb_raise(cParseError, "could not parse file %s: %s",
|
@@ -252,11 +296,23 @@ static VALUE stylesheet_parse_file(VALUE self, VALUE rFilename) {
|
|
252
296
|
}
|
253
297
|
|
254
298
|
/* Load new document */
|
255
|
-
VALUE rStylesheet = Data_Wrap_Struct(
|
299
|
+
VALUE rStylesheet = Data_Wrap_Struct(self, 0, stylesheet_free, xsl);
|
256
300
|
|
257
301
|
return rStylesheet;
|
258
302
|
}
|
259
303
|
|
304
|
+
static VALUE stylesheet_output_method(VALUE self) {
|
305
|
+
xsltStylesheetPtr stylesheet = NULL;
|
306
|
+
|
307
|
+
Data_Get_Struct(self, xsltStylesheet, stylesheet);
|
308
|
+
if (stylesheet->method == NULL) {
|
309
|
+
return Qnil;
|
310
|
+
} else {
|
311
|
+
VALUE rStr = rb_str_new2((char *)stylesheet->method);
|
312
|
+
return rStr;
|
313
|
+
}
|
314
|
+
}
|
315
|
+
|
260
316
|
static VALUE stylesheet_apply(VALUE self, VALUE rDocument) {
|
261
317
|
xsltStylesheetPtr stylesheet = NULL;
|
262
318
|
xmlDocPtr doc = NULL, res = NULL;
|
@@ -304,7 +360,7 @@ static VALUE stylesheet_save_to_string(VALUE self, VALUE rResult) {
|
|
304
360
|
rb_raise(rb_eStandardError, "could not save stylesheet result to string: %s",
|
305
361
|
err->message);
|
306
362
|
}
|
307
|
-
VALUE rStr = rb_str_new2(mem);
|
363
|
+
VALUE rStr = rb_str_new2((char *)mem);
|
308
364
|
xmlFree(mem);
|
309
365
|
|
310
366
|
return rStr;
|
@@ -341,9 +397,11 @@ void Init_teius() {
|
|
341
397
|
rb_define_method(cNode, "find", node_find, -1);
|
342
398
|
rb_define_method(cNode, "name", node_name, 0);
|
343
399
|
rb_define_method(cNode, "xpath", node_xpath, 0);
|
400
|
+
rb_define_method(cNode, "type", node_type, 0);
|
344
401
|
rb_define_method(cNode, "pointer", node_pointer, 0);
|
345
402
|
rb_define_method(cNode, "line", node_line, 0);
|
346
403
|
rb_define_method(cNode, "content", node_content, 0);
|
404
|
+
rb_define_method(cNode, "children", node_children, 0);
|
347
405
|
|
348
406
|
/* Document */
|
349
407
|
cDocument = rb_define_class_under(mTeius, "Document", cNode);
|
@@ -353,8 +411,9 @@ void Init_teius() {
|
|
353
411
|
rb_define_method(cDocument, "root", document_root, 0);
|
354
412
|
|
355
413
|
/* XSL Stylesheet */
|
356
|
-
cStylesheet = rb_define_class_under(mTeius, "Stylesheet",
|
414
|
+
cStylesheet = rb_define_class_under(mTeius, "Stylesheet", rb_cObject);
|
357
415
|
rb_define_singleton_method(cStylesheet, "parse_file", stylesheet_parse_file, 1);
|
416
|
+
rb_define_method(cStylesheet, "output_method", stylesheet_output_method, 0);
|
358
417
|
rb_define_method(cStylesheet, "apply", stylesheet_apply, 1);
|
359
418
|
rb_define_method(cStylesheet, "save_to_string", stylesheet_save_to_string, 1);
|
360
419
|
rb_define_method(cStylesheet, "save_to_file", stylesheet_save_to_file, 2);
|
data/ext/teius.o
CHANGED
Binary file
|
data/ext/teius.so
CHANGED
Binary file
|
data/lib/teius.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
|
1
|
+
$:.unshift File.dirname(__FILE__)
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'ext')
|
3
|
+
require 'teius.so'
|
2
4
|
|
3
5
|
module Teius
|
6
|
+
|
4
7
|
class Document
|
5
8
|
|
6
9
|
def self.content(xml)
|
@@ -43,11 +46,7 @@ module Teius
|
|
43
46
|
def siblings
|
44
47
|
self.find :all, 'preceding-sibling::*|following-sibling::*'
|
45
48
|
end
|
46
|
-
|
47
|
-
def children
|
48
|
-
self.find :all, 'child::*'
|
49
|
-
end
|
50
|
-
|
49
|
+
|
51
50
|
def to_s
|
52
51
|
"#{name}:#{line}"
|
53
52
|
end
|
data/test/teius_test.rb
CHANGED
@@ -6,6 +6,9 @@ require 'tempfile'
|
|
6
6
|
class TeiusTest < Test::Unit::TestCase
|
7
7
|
include Teius
|
8
8
|
|
9
|
+
class SubTeius < Document
|
10
|
+
end
|
11
|
+
|
9
12
|
def setup
|
10
13
|
@xml_dir = File.join(File.dirname(__FILE__), '..', 'xml')
|
11
14
|
@doc = Document.parse_file File.join(@xml_dir,
|
@@ -26,7 +29,13 @@ class TeiusTest < Test::Unit::TestCase
|
|
26
29
|
assert_equal 'xt.3608787-update-post-event', el.value
|
27
30
|
assert_equal 'doc-id', el.name
|
28
31
|
end
|
29
|
-
|
32
|
+
|
33
|
+
def test_inheritance
|
34
|
+
doc = SubTeius.parse_file File.join(@xml_dir,
|
35
|
+
'xt.3608787-update-post-event.xml')
|
36
|
+
assert_kind_of SubTeius, doc
|
37
|
+
end
|
38
|
+
|
30
39
|
def test_relative_paths
|
31
40
|
meta = @doc.find :first, '/sports-content/sports-metadata'
|
32
41
|
assert_not_nil meta
|
@@ -135,6 +144,12 @@ class TeiusTest < Test::Unit::TestCase
|
|
135
144
|
sibs = e.siblings
|
136
145
|
assert_equal 9, sibs.size
|
137
146
|
end
|
147
|
+
|
148
|
+
def test_children
|
149
|
+
e = @doc.find :first, '//sports-content-codes'
|
150
|
+
children = e.children
|
151
|
+
assert_equal 10, children.size
|
152
|
+
end
|
138
153
|
|
139
154
|
def test_xslt
|
140
155
|
current_dir = File.dirname(__FILE__)
|
@@ -142,10 +157,17 @@ class TeiusTest < Test::Unit::TestCase
|
|
142
157
|
xsl_path = File.join(current_dir, 'test.xsl')
|
143
158
|
doc = Document.parse_file test_doc_path
|
144
159
|
xsl = Stylesheet.parse_file xsl_path
|
160
|
+
assert_equal 'xml', xsl.output_method
|
145
161
|
assert_no_match %r{menu}, doc.to_s
|
146
162
|
assert_match %r{menu}, xsl.transform(doc)
|
147
163
|
end
|
148
164
|
|
165
|
+
def test_bogus_xslt
|
166
|
+
assert_raise(ParseError) {
|
167
|
+
xsl = Stylesheet.parse_file 'bogus'
|
168
|
+
}
|
169
|
+
end
|
170
|
+
|
149
171
|
def test_xslt_write_to_file
|
150
172
|
current_dir = File.dirname(__FILE__)
|
151
173
|
test_doc_path = File.join(current_dir, 'input.xml')
|
@@ -193,4 +215,17 @@ class TeiusTest < Test::Unit::TestCase
|
|
193
215
|
assert_equal "<library>\n <book/>\n</library>", content
|
194
216
|
end
|
195
217
|
|
218
|
+
def test_node_type
|
219
|
+
node = @doc.find :first, '//team-metadata'
|
220
|
+
assert_equal :element, node.type
|
221
|
+
assert_equal :document, @doc.type
|
222
|
+
end
|
223
|
+
|
224
|
+
def test_text_node
|
225
|
+
title = @doc.find :first, '/sports-content/sports-metadata/sports-title'
|
226
|
+
text = title.children.first
|
227
|
+
assert_equal :text, text.type
|
228
|
+
assert_equal "Score Update: Chicago vs. Green Bay (Final)", text.value
|
229
|
+
end
|
230
|
+
|
196
231
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: teius
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2006-
|
6
|
+
version: "0.12"
|
7
|
+
date: 2006-07-27 00:00:00 +03:00
|
8
8
|
summary: Light-weight Ruby API to LibXML.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -26,6 +26,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
26
26
|
platform: mswin32
|
27
27
|
signing_key:
|
28
28
|
cert_chain:
|
29
|
+
post_install_message:
|
29
30
|
authors:
|
30
31
|
- Joshua Harvey
|
31
32
|
files:
|