libxml-ruby 2.0.0-x86-mingw32 → 2.0.2-x86-mingw32
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/HISTORY +33 -0
- data/LICENSE +2 -4
- data/README.rdoc +12 -14
- data/Rakefile +11 -4
- data/ext/libxml/extconf.h +5 -0
- data/ext/libxml/extconf.rb +2 -1
- data/ext/libxml/ruby_xml_attr.c +0 -2
- data/ext/libxml/ruby_xml_attr.h +0 -2
- data/ext/libxml/ruby_xml_attr_decl.c +0 -2
- data/ext/libxml/ruby_xml_attr_decl.h +0 -2
- data/ext/libxml/ruby_xml_attributes.c +0 -2
- data/ext/libxml/ruby_xml_attributes.h +0 -2
- data/ext/libxml/ruby_xml_document.c +0 -50
- data/ext/libxml/ruby_xml_document.h +0 -2
- data/ext/libxml/ruby_xml_encoding.c +0 -2
- data/ext/libxml/ruby_xml_encoding.h +0 -2
- data/ext/libxml/ruby_xml_error.c +0 -14
- data/ext/libxml/ruby_xml_error.h +0 -2
- data/ext/libxml/ruby_xml_html_parser.c +0 -2
- data/ext/libxml/ruby_xml_html_parser.h +0 -2
- data/ext/libxml/ruby_xml_html_parser_context.c +0 -2
- data/ext/libxml/ruby_xml_html_parser_context.h +0 -2
- data/ext/libxml/ruby_xml_html_parser_options.c +0 -2
- data/ext/libxml/ruby_xml_html_parser_options.h +0 -2
- data/ext/libxml/ruby_xml_io.c +0 -2
- data/ext/libxml/ruby_xml_namespace.c +12 -4
- data/ext/libxml/ruby_xml_namespace.h +0 -2
- data/ext/libxml/ruby_xml_namespaces.c +0 -2
- data/ext/libxml/ruby_xml_namespaces.h +0 -2
- data/ext/libxml/ruby_xml_node.h +0 -2
- data/ext/libxml/ruby_xml_parser.c +0 -2
- data/ext/libxml/ruby_xml_parser.h +0 -2
- data/ext/libxml/ruby_xml_parser_context.c +0 -2
- data/ext/libxml/ruby_xml_parser_context.h +0 -2
- data/ext/libxml/ruby_xml_parser_options.c +0 -2
- data/ext/libxml/ruby_xml_parser_options.h +0 -2
- data/ext/libxml/ruby_xml_sax2_handler.c +0 -2
- data/ext/libxml/ruby_xml_sax2_handler.h +0 -2
- data/ext/libxml/ruby_xml_sax_parser.c +0 -2
- data/ext/libxml/ruby_xml_sax_parser.h +0 -2
- data/ext/libxml/ruby_xml_version.h +3 -3
- data/ext/libxml/ruby_xml_xinclude.c +0 -2
- data/ext/libxml/ruby_xml_xinclude.h +0 -2
- data/ext/libxml/ruby_xml_xpath.c +0 -2
- data/ext/libxml/ruby_xml_xpath.h +0 -2
- data/ext/libxml/ruby_xml_xpath_context.c +0 -2
- data/ext/libxml/ruby_xml_xpath_context.h +0 -2
- data/ext/libxml/ruby_xml_xpath_expression.c +0 -2
- data/ext/libxml/ruby_xml_xpath_expression.h +0 -2
- data/ext/libxml/ruby_xml_xpath_object.c +0 -2
- data/ext/libxml/ruby_xml_xpath_object.h +0 -2
- data/ext/libxml/ruby_xml_xpointer.c +0 -2
- data/ext/libxml/ruby_xml_xpointer.h +0 -2
- data/lib/1.8/libxml_ruby.so +0 -0
- data/lib/1.9/libxml_ruby.so +0 -0
- data/lib/libs/libiconv-2.dll +0 -0
- data/lib/libs/libxml2-2.dll +0 -0
- data/lib/libs/libz.dll +0 -0
- data/lib/libxml/attr.rb +10 -0
- data/lib/libxml/document.rb +1 -1
- data/lib/libxml/node.rb +2 -2
- data/libxml-ruby.gemspec +2 -5
- data/test/tc_namespaces.rb +39 -6
- data/test/tc_xpath.rb +16 -1
- metadata +8 -6
- data/ext/mingw/Rakefile +0 -34
- data/ext/mingw/build.rake +0 -41
data/HISTORY
CHANGED
@@ -1,5 +1,38 @@
|
|
1
1
|
= Release History
|
2
2
|
|
3
|
+
== 2.0.1 / 2011-04-17 Charlie Savage
|
4
|
+
|
5
|
+
* Added binaries for windows (Charlie Savage).
|
6
|
+
|
7
|
+
* Update Ruby 1.9 encoding handling to support libxml versions older than
|
8
|
+
version 2.6.26 which was released on June 6, 2006 (Charlie Savage).
|
9
|
+
|
10
|
+
* Add publish_with_docs rake task - combines publishing the
|
11
|
+
website and docs (Anurag Priyam).
|
12
|
+
|
13
|
+
* Correctly copy the documentation directory (Anurag Priyam)
|
14
|
+
|
15
|
+
* Use relative link for rdoc so the links are correct on
|
16
|
+
both rubyforge and github (Anurag Priyam).
|
17
|
+
|
18
|
+
* Update Rakefile to use Hanna RDco template (Charlie Savage).
|
19
|
+
|
20
|
+
* Update dates on license file (Charlie Savage).
|
21
|
+
|
22
|
+
* Add api to allow setting of attribute namespaces. Fixes issue #10 (Charlie Savage).
|
23
|
+
|
24
|
+
* Remove old hack to call the on_error method. This hack isn't needed anymore
|
25
|
+
since a better workaround was put in place in the parser context. Fixes
|
26
|
+
This fixes issue #12 (Charlie Savage).
|
27
|
+
|
28
|
+
* Remove references to passing blocks to validation functions. The blocks are no
|
29
|
+
longer called since the bindings use libxml's structured error handling. See
|
30
|
+
issue #6 (Charlie Savage).
|
31
|
+
|
32
|
+
* Fix up comment in Document and Node. See issue #8 (Charlie Savage).
|
33
|
+
|
34
|
+
* Update website text (Charlie Savage).
|
35
|
+
|
3
36
|
== 2.0.0 / 2011-04-16 Charlie Savage
|
4
37
|
|
5
38
|
* Ruby 1.9.2 support. The biggest addition is encoding support.
|
data/LICENSE
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
Copyright (c) 2008-2009 Charlie Savage and contributors
|
1
|
+
Copyright (c) 2008-2011 Charlie Savage and contributors
|
3
2
|
Copyright (c) 2002-2007 Sean Chittenden and contributors
|
4
3
|
Copyright (c) 2001 Wai-Sun "Squidster" Chia
|
5
4
|
|
@@ -19,5 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
-
SOFTWARE.
|
23
|
-
|
21
|
+
SOFTWARE.
|
data/README.rdoc
CHANGED
@@ -30,17 +30,14 @@ The easiest way to install libxml-ruby is via Ruby Gems. To install:
|
|
30
30
|
<tt>gem install libxml-ruby</tt>
|
31
31
|
|
32
32
|
If you are running Windows, make sure to install the Win32 RubyGem
|
33
|
-
which includes
|
34
|
-
against libxml2 version 2.7.
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
libxml2 and iconv. The gem also includes a Microsoft VC++ 2008
|
42
|
-
solution. If you wish to run a debug version of libxml-ruby on
|
43
|
-
Windows, then it is highly recommended you use VC++.
|
33
|
+
which includes prebuilt extensions for Ruby 1.8 and Ruby 1.9. These
|
34
|
+
extensions are built with MinGW32 against libxml2 version 2.7.8,
|
35
|
+
iconv version 1.13 and zlib version 1.2.5. Note these binaries
|
36
|
+
are available in the lib\libs directory. To use them, put them
|
37
|
+
someplace on your path.
|
38
|
+
|
39
|
+
The gem also includes a Microsoft VC++ 2010
|
40
|
+
solution (useful for debugging).
|
44
41
|
|
45
42
|
== Getting Started
|
46
43
|
Using libxml is easy. First decide what parser you want to use:
|
@@ -78,8 +75,9 @@ then install the libxslt gem which is available at
|
|
78
75
|
http://rubyforge.org/projects/libxsl/.
|
79
76
|
|
80
77
|
== Usage
|
81
|
-
For
|
82
|
-
to its
|
78
|
+
For information about using libxml-ruby please refer
|
79
|
+
to its documentation at http://libxml.rubyforge.org/rdoc/index.html.
|
80
|
+
Some tutorials are also available at https://github.com/xml4r/libxml-ruby/wiki.
|
83
81
|
|
84
82
|
All libxml classes are in the LibXML::XML module. The easiest
|
85
83
|
way to use libxml is to require 'xml'. This will mixin
|
@@ -136,7 +134,7 @@ From https://svn.concord.org/svn/projects/trunk/common/ruby/xml_benchmarks/
|
|
136
134
|
|
137
135
|
|
138
136
|
== Documentation
|
139
|
-
Documentation is
|
137
|
+
Documentation is available via rdoc. To generate the documentation,
|
140
138
|
run the the command 'rake doc'. libxml-ruby's online documentation
|
141
139
|
is generated using Hanna. To use hanna:
|
142
140
|
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require "rubygems"
|
4
4
|
require "rake/extensiontask"
|
5
5
|
require "rake/testtask"
|
6
|
-
require
|
6
|
+
require 'hanna/rdoctask'
|
7
7
|
require "grancher/task"
|
8
8
|
require "yaml"
|
9
9
|
|
@@ -30,13 +30,17 @@ end
|
|
30
30
|
|
31
31
|
# Setup Windows Gem
|
32
32
|
if RUBY_PLATFORM.match(/win32|mingw32/)
|
33
|
-
binaries = (FileList['lib/**/*.so'
|
33
|
+
binaries = (FileList['lib/**/*.so',
|
34
|
+
'lib/**/*dll'])
|
34
35
|
|
35
36
|
# Windows specification
|
36
37
|
win_spec = spec.clone
|
37
38
|
win_spec.platform = Gem::Platform::CURRENT
|
38
39
|
win_spec.files += binaries.to_a
|
39
40
|
|
41
|
+
# Unset extensions
|
42
|
+
win_spec.extensions = nil
|
43
|
+
|
40
44
|
# Rake task to build the windows package
|
41
45
|
Rake::GemPackageTask.new(win_spec) do |pkg|
|
42
46
|
pkg.package_dir = 'pkg'
|
@@ -78,5 +82,8 @@ Grancher::Task.new do |g|
|
|
78
82
|
# copy the website directory
|
79
83
|
g.directory 'web'
|
80
84
|
# and the rdoc directory
|
81
|
-
g.directory 'doc/libxml-ruby/rdoc' 'rdoc'
|
82
|
-
end
|
85
|
+
g.directory 'doc/libxml-ruby/rdoc', 'rdoc'
|
86
|
+
end
|
87
|
+
|
88
|
+
desc "Build docs, and publish the website"
|
89
|
+
task :publish_with_docs => [:rdoc, :publish]
|
data/ext/libxml/extconf.rb
CHANGED
data/ext/libxml/ruby_xml_attr.c
CHANGED
data/ext/libxml/ruby_xml_attr.h
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
/* $Id$ */
|
2
|
-
|
3
1
|
/*
|
4
2
|
* Document-class: LibXML::XML::Document
|
5
3
|
*
|
@@ -81,21 +79,6 @@ VALUE rxml_document_wrap(xmlDocPtr xdoc)
|
|
81
79
|
return result;
|
82
80
|
}
|
83
81
|
|
84
|
-
static void LibXML_validity_warning(void * ctxt, const char * msg, va_list ap)
|
85
|
-
{
|
86
|
-
if (rb_block_given_p())
|
87
|
-
{
|
88
|
-
char buff[1024];
|
89
|
-
snprintf(buff, 1024, msg, ap);
|
90
|
-
rb_yield(rb_ary_new3(2, rb_str_new2(buff), Qfalse));
|
91
|
-
}
|
92
|
-
else
|
93
|
-
{
|
94
|
-
fprintf(stderr, "warning -- found validity error: ");
|
95
|
-
fprintf(stderr, msg, ap);
|
96
|
-
}
|
97
|
-
}
|
98
|
-
|
99
82
|
/*
|
100
83
|
* call-seq:
|
101
84
|
* XML::Document.alloc(xml_version = 1.0) -> document
|
@@ -771,21 +754,6 @@ static VALUE rxml_document_xinclude(VALUE self)
|
|
771
754
|
#endif
|
772
755
|
}
|
773
756
|
|
774
|
-
void LibXML_validity_error(void * ctxt, const char * msg, va_list ap)
|
775
|
-
{
|
776
|
-
if (rb_block_given_p())
|
777
|
-
{
|
778
|
-
char buff[1024];
|
779
|
-
snprintf(buff, 1024, msg, ap);
|
780
|
-
rb_yield(rb_ary_new3(2, rb_str_new2(buff), Qtrue));
|
781
|
-
}
|
782
|
-
else
|
783
|
-
{
|
784
|
-
fprintf(stderr, "error -- found validity error: ");
|
785
|
-
fprintf(stderr, msg, ap);
|
786
|
-
}
|
787
|
-
}
|
788
|
-
|
789
757
|
/*
|
790
758
|
* call-seq:
|
791
759
|
* document.order_elements!
|
@@ -806,10 +774,6 @@ static VALUE rxml_document_order_elements(VALUE self)
|
|
806
774
|
* document.validate_schema(schema) -> (true|false)
|
807
775
|
*
|
808
776
|
* Validate this document against the specified XML::Schema.
|
809
|
-
*
|
810
|
-
* If a block is provided it is used as an error handler for validaten errors.
|
811
|
-
* The block is called with two argument, the message and a flag indication
|
812
|
-
* if the message is an error (true) or a warning (false).
|
813
777
|
*/
|
814
778
|
static VALUE rxml_document_validate_schema(VALUE self, VALUE schema)
|
815
779
|
{
|
@@ -823,10 +787,6 @@ static VALUE rxml_document_validate_schema(VALUE self, VALUE schema)
|
|
823
787
|
|
824
788
|
vptr = xmlSchemaNewValidCtxt(xschema);
|
825
789
|
|
826
|
-
xmlSchemaSetValidErrors(vptr,
|
827
|
-
(xmlSchemaValidityErrorFunc) LibXML_validity_error,
|
828
|
-
(xmlSchemaValidityWarningFunc) LibXML_validity_warning, NULL);
|
829
|
-
|
830
790
|
is_invalid = xmlSchemaValidateDoc(vptr, xdoc);
|
831
791
|
xmlSchemaFreeValidCtxt(vptr);
|
832
792
|
if (is_invalid)
|
@@ -845,10 +805,6 @@ static VALUE rxml_document_validate_schema(VALUE self, VALUE schema)
|
|
845
805
|
* document.validate_schema(relaxng) -> (true|false)
|
846
806
|
*
|
847
807
|
* Validate this document against the specified XML::RelaxNG.
|
848
|
-
*
|
849
|
-
* If a block is provided it is used as an error handler for validaten errors.
|
850
|
-
* The block is called with two argument, the message and a flag indication
|
851
|
-
* if the message is an error (true) or a warning (false).
|
852
808
|
*/
|
853
809
|
static VALUE rxml_document_validate_relaxng(VALUE self, VALUE relaxng)
|
854
810
|
{
|
@@ -862,10 +818,6 @@ static VALUE rxml_document_validate_relaxng(VALUE self, VALUE relaxng)
|
|
862
818
|
|
863
819
|
vptr = xmlRelaxNGNewValidCtxt(xrelaxng);
|
864
820
|
|
865
|
-
xmlRelaxNGSetValidErrors(vptr,
|
866
|
-
(xmlRelaxNGValidityErrorFunc) LibXML_validity_error,
|
867
|
-
(xmlRelaxNGValidityWarningFunc) LibXML_validity_warning, NULL);
|
868
|
-
|
869
821
|
is_invalid = xmlRelaxNGValidateDoc(vptr, xdoc);
|
870
822
|
xmlRelaxNGFreeValidCtxt(vptr);
|
871
823
|
if (is_invalid)
|
@@ -896,8 +848,6 @@ static VALUE rxml_document_validate_dtd(VALUE self, VALUE dtd)
|
|
896
848
|
Data_Get_Struct(dtd, xmlDtd, xdtd);
|
897
849
|
|
898
850
|
ctxt.userData = &error;
|
899
|
-
ctxt.error = (xmlValidityErrorFunc) LibXML_validity_error;
|
900
|
-
ctxt.warning = (xmlValidityWarningFunc) LibXML_validity_warning;
|
901
851
|
|
902
852
|
ctxt.nodeNr = 0;
|
903
853
|
ctxt.nodeTab = NULL;
|
data/ext/libxml/ruby_xml_error.c
CHANGED
@@ -5,7 +5,6 @@
|
|
5
5
|
VALUE eXMLError;
|
6
6
|
static ID CALL_METHOD;
|
7
7
|
static ID ERROR_HANDLER_ID;
|
8
|
-
static ID ON_ERROR_METHOD;
|
9
8
|
|
10
9
|
/*
|
11
10
|
* Document-class: LibXML::XML::Error
|
@@ -144,18 +143,6 @@ static void structuredErrorFunc(void *userData, xmlErrorPtr xerror)
|
|
144
143
|
userData = ctxt->userData;
|
145
144
|
}
|
146
145
|
|
147
|
-
/* If the target has an on_error method call it. This
|
148
|
-
gets around a bug in libxml where a sax's structured
|
149
|
-
error handler is overriden by the global error handler. */
|
150
|
-
if (userData)
|
151
|
-
{
|
152
|
-
VALUE target = (VALUE) userData;
|
153
|
-
if (!NIL_P(target) && rb_respond_to(target, ON_ERROR_METHOD))
|
154
|
-
{
|
155
|
-
rb_funcall(target, ON_ERROR_METHOD, 1, error);
|
156
|
-
}
|
157
|
-
}
|
158
|
-
|
159
146
|
/* Now call global handler */
|
160
147
|
if (block != Qnil)
|
161
148
|
{
|
@@ -172,7 +159,6 @@ void rxml_raise(xmlErrorPtr xerror)
|
|
172
159
|
|
173
160
|
void rxml_init_error()
|
174
161
|
{
|
175
|
-
ON_ERROR_METHOD = rb_intern("on_error");
|
176
162
|
CALL_METHOD = rb_intern("call");
|
177
163
|
ERROR_HANDLER_ID = rb_intern("@@__error_handler_callback__");
|
178
164
|
|
data/ext/libxml/ruby_xml_error.h
CHANGED
data/ext/libxml/ruby_xml_io.c
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
/* $Id$ */
|
2
|
-
|
3
1
|
/* Please see the LICENSE file for copyright and distribution information */
|
4
2
|
|
5
3
|
#include "ruby_libxml.h"
|
@@ -51,6 +49,16 @@ VALUE rxml_namespace_wrap(xmlNsPtr xns, RUBY_DATA_FUNC freeFunc)
|
|
51
49
|
}
|
52
50
|
}
|
53
51
|
|
52
|
+
static VALUE rxml_namespace_string(xmlNsPtr xns, const char* buffer)
|
53
|
+
{
|
54
|
+
const char* xencoding = NULL;
|
55
|
+
#if LIBXML_VERSION >= 20628
|
56
|
+
xencoding = xns->context ? xns->context->encoding : NULL;
|
57
|
+
#endif
|
58
|
+
return rxml_str_new2(buffer, xencoding);
|
59
|
+
}
|
60
|
+
|
61
|
+
|
54
62
|
/*
|
55
63
|
* call-seq:
|
56
64
|
* initialize(node, "prefix", "href") -> XML::Namespace
|
@@ -98,7 +106,7 @@ static VALUE rxml_namespace_href_get(VALUE self)
|
|
98
106
|
if (xns->href == NULL)
|
99
107
|
return Qnil;
|
100
108
|
else
|
101
|
-
return
|
109
|
+
return rxml_namespace_string(xns, (const char*) xns->href);
|
102
110
|
}
|
103
111
|
|
104
112
|
/*
|
@@ -133,7 +141,7 @@ static VALUE rxml_namespace_prefix_get(VALUE self)
|
|
133
141
|
if (xns->prefix == NULL)
|
134
142
|
return Qnil;
|
135
143
|
else
|
136
|
-
return
|
144
|
+
return rxml_namespace_string(xns, (const char*) xns->prefix);
|
137
145
|
}
|
138
146
|
|
139
147
|
/*
|
data/ext/libxml/ruby_xml_node.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 "2.0.
|
5
|
-
#define RUBY_LIBXML_VERNUM
|
4
|
+
#define RUBY_LIBXML_VERSION "2.0.2"
|
5
|
+
#define RUBY_LIBXML_VERNUM 202
|
6
6
|
#define RUBY_LIBXML_VER_MAJ 2
|
7
7
|
#define RUBY_LIBXML_VER_MIN 0
|
8
|
-
#define RUBY_LIBXML_VER_MIC
|
8
|
+
#define RUBY_LIBXML_VER_MIC 2
|
9
9
|
#define RUBY_LIBXML_VER_PATCH 0
|
data/ext/libxml/ruby_xml_xpath.c
CHANGED
data/ext/libxml/ruby_xml_xpath.h
CHANGED
data/lib/1.8/libxml_ruby.so
CHANGED
Binary file
|
data/lib/1.9/libxml_ruby.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/lib/libs/libz.dll
ADDED
Binary file
|
data/lib/libxml/attr.rb
CHANGED
@@ -48,6 +48,16 @@ module LibXML
|
|
48
48
|
not self.ns.nil?
|
49
49
|
end
|
50
50
|
|
51
|
+
# call-seq:
|
52
|
+
# attr.namespacess -> XML::Namespaces
|
53
|
+
#
|
54
|
+
# Returns this node's XML::Namespaces object,
|
55
|
+
# which is used to access the namespaces
|
56
|
+
# associated with this node.
|
57
|
+
def namespaces
|
58
|
+
@namespaces ||= XML::Namespaces.new(self)
|
59
|
+
end
|
60
|
+
|
51
61
|
#
|
52
62
|
# call-seq:
|
53
63
|
# attr.parent? -> (true|false)
|
data/lib/libxml/document.rb
CHANGED
data/lib/libxml/node.rb
CHANGED
@@ -228,12 +228,12 @@ module LibXML
|
|
228
228
|
node_type == DOCB_DOCUMENT_NODE
|
229
229
|
end
|
230
230
|
|
231
|
-
# Specifies if this is an
|
231
|
+
# Specifies if this is an doctype node
|
232
232
|
def doctype?
|
233
233
|
node_type == DOCUMENT_TYPE_NODE
|
234
234
|
end
|
235
235
|
|
236
|
-
# Specifies if this is an
|
236
|
+
# Specifies if this is an document node
|
237
237
|
def document?
|
238
238
|
node_type == DOCUMENT_NODE
|
239
239
|
end
|
data/libxml-ruby.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# encoding: utf-8
|
2
2
|
|
3
3
|
# Determine the current version of the software
|
4
4
|
version = File.read('ext/libxml/ruby_xml_version.h').match(/\s*RUBY_LIBXML_VERSION\s*['"](\d.+)['"]/)[1]
|
@@ -15,10 +15,8 @@ FILES = FileList[
|
|
15
15
|
'ext/libxml/*.h',
|
16
16
|
'ext/libxml/*.c',
|
17
17
|
'ext/libxml/*.rb',
|
18
|
-
'ext/mingw/Rakefile',
|
19
|
-
'ext/mingw/build.rake',
|
20
18
|
'ext/vc/*.sln',
|
21
|
-
'ext/vc/*.
|
19
|
+
'ext/vc/*.vcprojx',
|
22
20
|
'lib/**/*.rb',
|
23
21
|
'script/**/*',
|
24
22
|
'test/**/*'
|
@@ -46,5 +44,4 @@ Gem::Specification.new do |spec|
|
|
46
44
|
|
47
45
|
spec.required_ruby_version = '>= 1.8.6'
|
48
46
|
spec.date = DateTime.now
|
49
|
-
spec.has_rdoc = true
|
50
47
|
end
|
data/test/tc_namespaces.rb
CHANGED
@@ -14,14 +14,21 @@ class TestNamespaces < Test::Unit::TestCase
|
|
14
14
|
@doc = nil
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def test_namespace_node
|
18
18
|
node = @doc.root
|
19
19
|
ns = node.namespaces.namespace
|
20
20
|
assert_equal('soap', ns.prefix)
|
21
21
|
assert_equal('http://schemas.xmlsoap.org/soap/envelope/', ns.href)
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
24
|
+
def test_namespace_attr
|
25
|
+
node = @doc.root
|
26
|
+
attr = node.attributes.get_attribute('encodingStyle')
|
27
|
+
assert_equal('soap', attr.ns.prefix)
|
28
|
+
assert_equal('soap', attr.namespaces.namespace.prefix)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_set_namespace_node
|
25
32
|
node = XML::Node.new('Envelope')
|
26
33
|
assert_equal('<Envelope/>', node.to_s)
|
27
34
|
|
@@ -35,6 +42,35 @@ class TestNamespaces < Test::Unit::TestCase
|
|
35
42
|
assert_equal("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
|
36
43
|
end
|
37
44
|
|
45
|
+
def test_set_namespace_attribute
|
46
|
+
# Create node
|
47
|
+
node = XML::Node.new('Envelope')
|
48
|
+
assert_equal('<Envelope/>', node.to_s)
|
49
|
+
|
50
|
+
# Create attribute
|
51
|
+
attr = XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
|
52
|
+
assert_equal('<Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
53
|
+
node.to_s)
|
54
|
+
|
55
|
+
# Create namespace attribute
|
56
|
+
ns = XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
57
|
+
assert_equal('<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
58
|
+
node.to_s)
|
59
|
+
assert_nil(node.namespaces.namespace)
|
60
|
+
|
61
|
+
# Now put the node in the soap namespace
|
62
|
+
node.namespaces.namespace = ns
|
63
|
+
assert_not_nil(node.namespaces.namespace)
|
64
|
+
assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
65
|
+
node.to_s)
|
66
|
+
|
67
|
+
# Now put the attribute in the soap namespace
|
68
|
+
attr.namespaces.namespace = ns
|
69
|
+
assert_not_nil(node.namespaces.namespace)
|
70
|
+
assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
71
|
+
node.to_s)
|
72
|
+
end
|
73
|
+
|
38
74
|
def test_define_namespace
|
39
75
|
node = XML::Node.new('Envelope')
|
40
76
|
assert_equal('<Envelope/>', node.to_s)
|
@@ -91,7 +127,7 @@ class TestNamespaces < Test::Unit::TestCase
|
|
91
127
|
node = @doc.find_first('//ns1:IdAndName',
|
92
128
|
:ns1 => 'http://domain.somewhere.com')
|
93
129
|
|
94
|
-
|
130
|
+
node.namespaces.each do |namespace|
|
95
131
|
assert_instance_of(XML::Namespace, namespace)
|
96
132
|
end
|
97
133
|
end
|
@@ -127,9 +163,6 @@ class TestNamespaces < Test::Unit::TestCase
|
|
127
163
|
end
|
128
164
|
|
129
165
|
def test_find_by_prefix
|
130
|
-
node = @doc.find_first('//ns1:getManufacturerNamesResponse',
|
131
|
-
:ns1 => 'http://services.somewhere.com')
|
132
|
-
|
133
166
|
namespace = @doc.root.namespaces.find_by_prefix('soap')
|
134
167
|
|
135
168
|
assert_instance_of(XML::Namespace, namespace)
|
data/test/tc_xpath.rb
CHANGED
@@ -191,5 +191,20 @@ class TestXPath < Test::Unit::TestCase
|
|
191
191
|
nodes = doc.find("//object/param[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'wmode']")
|
192
192
|
assert_not_nil nodes
|
193
193
|
end
|
194
|
-
|
194
|
+
|
195
|
+
def test_invalid_expression
|
196
|
+
xml = LibXML::XML::Document.string('<a></a>')
|
197
|
+
|
198
|
+
# Using the expression twice used to cause a Segmentation Fault
|
199
|
+
error = assert_raise(XML::Error) do
|
200
|
+
xml.find('//a/')
|
201
|
+
end
|
202
|
+
assert_equal("Error: Invalid expression.", error.to_s)
|
203
|
+
|
204
|
+
# Try again - this used to cause a Segmentation Fault
|
205
|
+
error = assert_raise(XML::Error) do
|
206
|
+
xml.find('//a/')
|
207
|
+
end
|
208
|
+
assert_equal("Error: Invalid expression.", error.to_s)
|
209
|
+
end
|
195
210
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: libxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.0.
|
5
|
+
version: 2.0.2
|
6
6
|
platform: x86-mingw32
|
7
7
|
authors:
|
8
8
|
- Ross Bamform
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-18 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -23,8 +23,8 @@ description: " The Libxml-Ruby project provides Ruby language bindings for th
|
|
23
23
|
email:
|
24
24
|
executables: []
|
25
25
|
|
26
|
-
extensions:
|
27
|
-
|
26
|
+
extensions: []
|
27
|
+
|
28
28
|
extra_rdoc_files: []
|
29
29
|
|
30
30
|
files:
|
@@ -35,6 +35,7 @@ files:
|
|
35
35
|
- Rakefile
|
36
36
|
- README.rdoc
|
37
37
|
- setup.rb
|
38
|
+
- ext/libxml/extconf.h
|
38
39
|
- ext/libxml/ruby_libxml.h
|
39
40
|
- ext/libxml/ruby_xml.h
|
40
41
|
- ext/libxml/ruby_xml_attr.h
|
@@ -100,8 +101,6 @@ files:
|
|
100
101
|
- ext/libxml/ruby_xml_xpath_object.c
|
101
102
|
- ext/libxml/ruby_xml_xpointer.c
|
102
103
|
- ext/libxml/extconf.rb
|
103
|
-
- ext/mingw/Rakefile
|
104
|
-
- ext/mingw/build.rake
|
105
104
|
- ext/vc/libxml_ruby.sln
|
106
105
|
- lib/libxml/attr.rb
|
107
106
|
- lib/libxml/attributes.rb
|
@@ -190,6 +189,9 @@ files:
|
|
190
189
|
- test/test_suite.rb
|
191
190
|
- lib/1.8/libxml_ruby.so
|
192
191
|
- lib/1.9/libxml_ruby.so
|
192
|
+
- lib/libs/libiconv-2.dll
|
193
|
+
- lib/libs/libxml2-2.dll
|
194
|
+
- lib/libs/libz.dll
|
193
195
|
has_rdoc: true
|
194
196
|
homepage: http://xml4r.github.com/libxml-ruby
|
195
197
|
licenses: []
|
data/ext/mingw/Rakefile
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# We can't use Ruby's standard build procedures
|
2
|
-
# on Windows because the Ruby executable is
|
3
|
-
# built with VC++ while here we want to build
|
4
|
-
# with MingW. So just roll our own...
|
5
|
-
|
6
|
-
require 'fileutils'
|
7
|
-
require 'rbconfig'
|
8
|
-
|
9
|
-
EXTENSION_NAME = "libxml_ruby.#{Config::CONFIG["DLEXT"]}"
|
10
|
-
|
11
|
-
# MingW insists the import library is .dll.a
|
12
|
-
EXTENSION_LIB_NAME = "libxml_ruby.dll.a"
|
13
|
-
|
14
|
-
# This is called when the Windows GEM is installed!
|
15
|
-
task :install do
|
16
|
-
# Gems will pass these two environment variables:
|
17
|
-
# RUBYARCHDIR=#{dest_path}
|
18
|
-
# RUBYLIBDIR=#{dest_path}
|
19
|
-
|
20
|
-
dest_path = ENV['RUBYLIBDIR']
|
21
|
-
|
22
|
-
# Copy the extension
|
23
|
-
cp(EXTENSION_NAME, dest_path)
|
24
|
-
|
25
|
-
# Copy the import library (used by libxslt)
|
26
|
-
cp(EXTENSION_LIB_NAME, dest_path)
|
27
|
-
|
28
|
-
# Copy dlls
|
29
|
-
Dir.glob('*.dll').each do |dll|
|
30
|
-
cp(dll, dest_path)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
task :default => :install
|
data/ext/mingw/build.rake
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# We can't use Ruby's standard build procedures
|
2
|
-
# on Windows because the Ruby executable is
|
3
|
-
# built with VC++ while here we want to build
|
4
|
-
# with MingW. So just roll our own...
|
5
|
-
|
6
|
-
require 'rake/clean'
|
7
|
-
require 'rbconfig'
|
8
|
-
|
9
|
-
RUBY_INCLUDE_DIR = Config::CONFIG["archdir"]
|
10
|
-
RUBY_BIN_DIR = Config::CONFIG["bindir"]
|
11
|
-
RUBY_LIB_DIR = Config::CONFIG["libdir"]
|
12
|
-
RUBY_SHARED_LIB = Config::CONFIG["LIBRUBY"]
|
13
|
-
RUBY_SHARED_DLL = RUBY_SHARED_LIB.gsub(/^lib/, '').gsub(/lib$/, 'dll').gsub(/\.a$/, '')
|
14
|
-
|
15
|
-
EXTENSION_NAME = "libxml_ruby.#{Config::CONFIG["DLEXT"]}"
|
16
|
-
# MingW insists the import library is .dll.a
|
17
|
-
EXTENSION_LIB_NAME = "libxml_ruby.dll.a"
|
18
|
-
|
19
|
-
CLEAN.include('*.o')
|
20
|
-
CLOBBER.include(EXTENSION_NAME)
|
21
|
-
CLOBBER.include(EXTENSION_LIB_NAME)
|
22
|
-
|
23
|
-
task :default => "libxml"
|
24
|
-
|
25
|
-
SRC = FileList['../libxml/*.c']
|
26
|
-
OBJ = SRC.collect do |file_name|
|
27
|
-
File.basename(file_name).ext('o')
|
28
|
-
end
|
29
|
-
|
30
|
-
SRC.each do |srcfile|
|
31
|
-
objfile = File.basename(srcfile).ext('o')
|
32
|
-
file objfile => srcfile do
|
33
|
-
command = "gcc -c -O2 -Wall -o #{objfile} -I/usr/local/include/libxml2 #{srcfile} -I#{RUBY_INCLUDE_DIR}"
|
34
|
-
sh "sh -c '#{command}'"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
file "libxml" => OBJ do
|
39
|
-
command = "gcc -shared -Wl,--enable-auto-import -o #{EXTENSION_NAME} -Wl,--out-implib,#{EXTENSION_LIB_NAME} -L/usr/local/lib #{OBJ} -lxml2 #{RUBY_BIN_DIR}/#{RUBY_SHARED_DLL}"
|
40
|
-
sh "sh -c '#{command}'"
|
41
|
-
end
|