libxml-ruby 0.9.1-x86-mswin32-60 → 0.9.2-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.
- data/CHANGES +6 -0
- data/ext/libxml/libxml.c +2 -1
- data/ext/libxml/libxml.c.rej +16 -0
- data/ext/libxml/ruby_libxml.h +72 -71
- data/ext/libxml/ruby_xml_error.c +11 -0
- data/ext/libxml/ruby_xml_html_parser.c +133 -133
- data/ext/libxml/ruby_xml_parser.c +3 -3
- data/ext/libxml/ruby_xml_sax_parser.c +228 -228
- data/ext/libxml/ruby_xml_xpath_context.c +294 -281
- data/ext/libxml/ruby_xml_xpath_expression.c +69 -0
- data/ext/libxml/ruby_xml_xpath_expression.h +12 -0
- data/ext/libxml/version.h +2 -2
- data/ext/mingw/libxml_ruby.dll.a +0 -0
- data/ext/mingw/libxml_ruby.so +0 -0
- data/ext/vc/libxml_ruby.vcproj +9 -1
- data/test/tc_document_write.rb +14 -0
- data/test/tc_xpath_expression.rb +35 -0
- data/test/test_suite.rb +1 -0
- metadata +7 -2
@@ -0,0 +1,69 @@
|
|
1
|
+
/* $Id: ruby_xml_xpath.c 461 2008-07-15 21:35:56Z cfis $ */
|
2
|
+
|
3
|
+
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
+
|
5
|
+
#include "ruby_libxml.h"
|
6
|
+
#include "ruby_xml_xpath.h"
|
7
|
+
#include "ruby_xml_xpath_expression.h"
|
8
|
+
|
9
|
+
/*
|
10
|
+
* Document-class: LibXML::XML::XPath::Expression
|
11
|
+
*
|
12
|
+
* The XML::XPath::Expression class is used to compile
|
13
|
+
* XPath expressions so they can be parsed only once
|
14
|
+
* but reused multiple times.
|
15
|
+
*
|
16
|
+
* doc = XML::Document.string(IO.read('some xml file'))
|
17
|
+
* expr = XPath::Expression.new('//first')
|
18
|
+
* doc.root.each do |node|
|
19
|
+
* result = node.find(expr) # many, many, many times
|
20
|
+
* # ...
|
21
|
+
* end
|
22
|
+
*/
|
23
|
+
|
24
|
+
VALUE cXMLXPathExpression;
|
25
|
+
|
26
|
+
void
|
27
|
+
ruby_xml_xpath_expression_free(xmlXPathCompExprPtr expr) {
|
28
|
+
xmlXPathFreeCompExpr(expr);
|
29
|
+
}
|
30
|
+
|
31
|
+
VALUE
|
32
|
+
ruby_xml_xpath_expression_alloc(VALUE klass) {
|
33
|
+
return Data_Wrap_Struct(cXMLXPathExpression,
|
34
|
+
NULL,
|
35
|
+
ruby_xml_xpath_expression_free,
|
36
|
+
NULL);
|
37
|
+
}
|
38
|
+
|
39
|
+
/* call-seq:
|
40
|
+
* XPath::Expression.new(expression) -> XPath::Expression
|
41
|
+
*
|
42
|
+
* Compiled XPatch expression. Work faster when find called many times
|
43
|
+
* same expression.
|
44
|
+
*
|
45
|
+
* doc = XML::Document.string('<header><first>hi</first></header>')
|
46
|
+
* expr = XPath::Expression.new('//first')
|
47
|
+
* nodes = doc.find(expr)
|
48
|
+
*/
|
49
|
+
VALUE
|
50
|
+
ruby_xml_xpath_expression_initialize(VALUE self, VALUE expression) {
|
51
|
+
xmlXPathCompExprPtr compexpr = xmlXPathCompile(StringValueCStr(expression));
|
52
|
+
|
53
|
+
if (compexpr == NULL) {
|
54
|
+
xmlErrorPtr xerror = xmlGetLastError();
|
55
|
+
ruby_xml_raise(xerror);
|
56
|
+
}
|
57
|
+
|
58
|
+
DATA_PTR(self) = compexpr;
|
59
|
+
return self;
|
60
|
+
}
|
61
|
+
|
62
|
+
void
|
63
|
+
ruby_init_xml_xpath_expression(void) {
|
64
|
+
cXMLXPathExpression = rb_define_class_under(mXPath, "Expression", rb_cObject);
|
65
|
+
rb_define_alloc_func(cXMLXPathExpression, ruby_xml_xpath_expression_alloc);
|
66
|
+
rb_define_singleton_method(rb_cRegexp, "compile", rb_class_new_instance, 1);
|
67
|
+
|
68
|
+
rb_define_method(cXMLXPathExpression, "initialize", ruby_xml_xpath_expression_initialize, 1);
|
69
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/* $Id$ */
|
2
|
+
|
3
|
+
/* Please see the LICENSE file for copyright and distribution information */
|
4
|
+
|
5
|
+
#ifndef __RUBY_XML_XPATH_EXPRESSION__
|
6
|
+
#define __RUBY_XML_XPATH_EXPRESSION__
|
7
|
+
|
8
|
+
extern VALUE cXMLXPathExpression;
|
9
|
+
|
10
|
+
void ruby_init_xml_xpath_expression(void);
|
11
|
+
|
12
|
+
#endif
|
data/ext/libxml/version.h
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
/* Don't nuke this block! It is used for automatically updating the
|
2
2
|
* versions below. VERSION = string formatting, VERNUM = numbered
|
3
3
|
* version for inline testing: increment both or none at all.*/
|
4
|
-
#define RUBY_LIBXML_VERSION "0.9.
|
4
|
+
#define RUBY_LIBXML_VERSION "0.9.2"
|
5
5
|
#define RUBY_LIBXML_VERNUM 0
|
6
6
|
#define RUBY_LIBXML_VER_MAJ 0
|
7
7
|
#define RUBY_LIBXML_VER_MIN 9
|
8
|
-
#define RUBY_LIBXML_VER_MIC
|
8
|
+
#define RUBY_LIBXML_VER_MIC 2
|
9
9
|
#define RUBY_LIBXML_VER_PATCH 0
|
data/ext/mingw/libxml_ruby.dll.a
CHANGED
Binary file
|
data/ext/mingw/libxml_ruby.so
CHANGED
Binary file
|
data/ext/vc/libxml_ruby.vcproj
CHANGED
@@ -63,7 +63,7 @@
|
|
63
63
|
<Tool
|
64
64
|
Name="VCLinkerTool"
|
65
65
|
AdditionalDependencies="msvcrt-ruby18.lib libxml2.lib"
|
66
|
-
OutputFile="C:\Development\ruby\lib\ruby\gems\1.8\gems\libxml-ruby-0.9.
|
66
|
+
OutputFile="C:\Development\ruby\lib\ruby\gems\1.8\gems\libxml-ruby-0.9.2-x86-mswin32-60\lib\$(ProjectName).so"
|
67
67
|
LinkIncremental="2"
|
68
68
|
AdditionalLibraryDirectories="C:\Development\ruby\lib;C:\Development\msys\local\lib"
|
69
69
|
GenerateDebugInformation="true"
|
@@ -273,6 +273,10 @@
|
|
273
273
|
RelativePath="..\libxml\ruby_xml_xpath_context.c"
|
274
274
|
>
|
275
275
|
</File>
|
276
|
+
<File
|
277
|
+
RelativePath="..\libxml\ruby_xml_xpath_expression.c"
|
278
|
+
>
|
279
|
+
</File>
|
276
280
|
<File
|
277
281
|
RelativePath="..\libxml\ruby_xml_xpath_object.c"
|
278
282
|
>
|
@@ -375,6 +379,10 @@
|
|
375
379
|
RelativePath="..\libxml\ruby_xml_xpath_context.h"
|
376
380
|
>
|
377
381
|
</File>
|
382
|
+
<File
|
383
|
+
RelativePath="..\libxml\ruby_xml_xpath_expression.h"
|
384
|
+
>
|
385
|
+
</File>
|
378
386
|
<File
|
379
387
|
RelativePath="..\libxml\ruby_xml_xpath_object.h"
|
380
388
|
>
|
data/test/tc_document_write.rb
CHANGED
@@ -143,4 +143,18 @@ class TestDocumentWrite < Test::Unit::TestCase
|
|
143
143
|
assert_instance_of(XML::Node, @doc.root)
|
144
144
|
assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<rubynet/>\n", @doc.to_s)
|
145
145
|
end
|
146
|
+
|
147
|
+
def test_encoding_to_s
|
148
|
+
doc = XML::Document.new
|
149
|
+
doc.encoding = 'UTF-8'
|
150
|
+
doc.root = XML::Node.new 'node'
|
151
|
+
doc.root.content = ''
|
152
|
+
|
153
|
+
xml = doc.to_s(true, 'UTF-8')
|
154
|
+
puts xml
|
155
|
+
|
156
|
+
parser = XML::Parser.string(xml)
|
157
|
+
doc = parser.parse
|
158
|
+
p doc.root.content
|
159
|
+
end
|
146
160
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "xml"
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestXPathExpression < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
xp = XML::Parser.new()
|
7
|
+
str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
8
|
+
xp.string = str
|
9
|
+
@doc = xp.parse
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
@doc = nil
|
14
|
+
end
|
15
|
+
|
16
|
+
def nodes
|
17
|
+
expr = XML::XPath::Expression.compile('/ruby_array/fixnum')
|
18
|
+
@doc.find(expr)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_find_class
|
22
|
+
expr = XML::XPath::Expression.new('/ruby_array/fixnum')
|
23
|
+
set = @doc.find(expr)
|
24
|
+
assert_instance_of(XML::XPath::Object, set)
|
25
|
+
assert_equal(2, set.size)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_find_invalid
|
29
|
+
error = assert_raise(TypeError) do
|
30
|
+
set = @doc.find(999)
|
31
|
+
end
|
32
|
+
assert_equal('Argument should be an intance of a String or XPath::Expression',
|
33
|
+
error.to_s)
|
34
|
+
end
|
35
|
+
end
|
data/test/test_suite.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: x86-mswin32-60
|
6
6
|
authors:
|
7
7
|
- Charlie Savage
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-11-
|
12
|
+
date: 2008-11-19 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -30,6 +30,7 @@ files:
|
|
30
30
|
- ext/libxml/cbg.c
|
31
31
|
- ext/libxml/extconf.rb
|
32
32
|
- ext/libxml/libxml.c
|
33
|
+
- ext/libxml/libxml.c.rej
|
33
34
|
- ext/libxml/ruby_libxml.h
|
34
35
|
- ext/libxml/ruby_xml_attr.c
|
35
36
|
- ext/libxml/ruby_xml_attr.h
|
@@ -73,6 +74,8 @@ files:
|
|
73
74
|
- ext/libxml/ruby_xml_xpath.h
|
74
75
|
- ext/libxml/ruby_xml_xpath_context.c
|
75
76
|
- ext/libxml/ruby_xml_xpath_context.h
|
77
|
+
- ext/libxml/ruby_xml_xpath_expression.c
|
78
|
+
- ext/libxml/ruby_xml_xpath_expression.h
|
76
79
|
- ext/libxml/ruby_xml_xpath_object.c
|
77
80
|
- ext/libxml/ruby_xml_xpath_object.h
|
78
81
|
- ext/libxml/ruby_xml_xpointer.c
|
@@ -158,6 +161,7 @@ files:
|
|
158
161
|
- test/tc_xml.rb
|
159
162
|
- test/tc_xpath.rb
|
160
163
|
- test/tc_xpath_context.rb
|
164
|
+
- test/tc_xpath_expression.rb
|
161
165
|
- test/tc_xpointer.rb
|
162
166
|
- test/test_suite.rb
|
163
167
|
- ext/mingw/libxml_ruby.so
|
@@ -222,4 +226,5 @@ test_files:
|
|
222
226
|
- test/tc_xml.rb
|
223
227
|
- test/tc_xpath.rb
|
224
228
|
- test/tc_xpath_context.rb
|
229
|
+
- test/tc_xpath_expression.rb
|
225
230
|
- test/tc_xpointer.rb
|