libxml-ruby 2.5.0 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d223220c2ac2bc8aeecf2785092b229ec32d00ec
4
+ data.tar.gz: 5b822d3621a0d3129d22530bdfccb0374e6fe5b4
5
+ SHA512:
6
+ metadata.gz: c179969f566e2a65c31ae9c8ceae5d3a9e96d95c8ee58efc1703e074f4f3fbf3921afa5c82557fece14c3a945b27fd4ee4290d426c507d23d526c22f411d204e
7
+ data.tar.gz: ae744217d7767fa8d49376d0cb2866b5365ca4fd05d49beb0dcc1e2818667a0b84f54249b50617dc9f0d3bb904b198d69c8668509b4fbe3411ec94deee38b1ac
data/HISTORY CHANGED
@@ -1,5 +1,11 @@
1
1
  = Release History
2
2
 
3
+ == 2.6.0 / 2013-02-16 Charlie Savage
4
+
5
+ * Fix uninitialized constant LibXML::XML::Error::I18N (NameError) that occurred
6
+ with older versions of libxml.
7
+ * Various updates/fixes to new XML::Writer class and update how flushing works (julp)
8
+
3
9
  == 2.5.0 / 2013-01-27 Charlie Savage
4
10
 
5
11
  * Compatibility with older versions for IO::write (rb_io_bufwrite is specific to ruby >= 1.9.3?)
@@ -13,6 +13,7 @@ VALUE rxml_new_cstr_len(const char* xstr, const int length, const char* xencodin
13
13
 
14
14
  #ifdef HAVE_RUBY_ENCODING_H
15
15
  rb_encoding* rxml_xml_encoding_to_rb_encoding(VALUE klass, xmlCharEncoding xmlEncoding);
16
+ rb_encoding* rxml_figure_encoding(const char* xencoding);
16
17
  #endif
17
18
 
18
19
  #endif
@@ -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.5.0"
5
- #define RUBY_LIBXML_VERNUM 250
4
+ #define RUBY_LIBXML_VERSION "2.6.0"
5
+ #define RUBY_LIBXML_VERNUM 260
6
6
  #define RUBY_LIBXML_VER_MAJ 2
7
- #define RUBY_LIBXML_VER_MIN 5
7
+ #define RUBY_LIBXML_VER_MIN 6
8
8
  #define RUBY_LIBXML_VER_MIC 0
9
9
  #define RUBY_LIBXML_VER_PATCH 0
@@ -15,8 +15,6 @@
15
15
  # include <libxml/xmlwriter.h>
16
16
 
17
17
  # include "ruby_libxml.h"
18
- # include "ruby_xml_io.h"
19
- # include "ruby_xml_document.h"
20
18
  # include "ruby_xml_writer.h"
21
19
 
22
20
  VALUE cXMLWriter;
@@ -31,6 +29,9 @@ typedef enum {
31
29
 
32
30
  typedef struct {
33
31
  VALUE output;
32
+ # ifdef HAVE_RUBY_ENCODING_H
33
+ rb_encoding *encoding;
34
+ # endif /* HAVE_RUBY_ENCODING_H */
34
35
  xmlBufferPtr buffer;
35
36
  xmlTextWriterPtr writer;
36
37
  rxmlw_output_type output_type;
@@ -122,6 +123,9 @@ xmlCharEncodingHandlerPtr xmlFindCharEncodingHandler(const char * name);
122
123
  rwo = ALLOC(rxml_writer_object);
123
124
  rwo->output = io;
124
125
  rwo->buffer = NULL;
126
+ # ifdef HAVE_RUBY_ENCODING_H
127
+ rwo->encoding = NULL;
128
+ # endif /* HAVE_RUBY_ENCODING_H */
125
129
  rwo->output_type = RXMLW_OUTPUT_IO;
126
130
  if (NULL == (out = xmlOutputBufferCreateIO(rxml_write_callback, NULL, (void *) io, NULL))) {
127
131
  rxml_raise(&xmlLastError);
@@ -147,6 +151,9 @@ static VALUE rxml_writer_file(VALUE klass, VALUE filename)
147
151
  rwo = ALLOC(rxml_writer_object);
148
152
  rwo->output = Qnil;
149
153
  rwo->buffer = NULL;
154
+ # ifdef HAVE_RUBY_ENCODING_H
155
+ rwo->encoding = NULL;
156
+ # endif /* HAVE_RUBY_ENCODING_H */
150
157
  rwo->output_type = RXMLW_OUTPUT_NONE;
151
158
  if (NULL == (rwo->writer = xmlNewTextWriterFilename(StringValueCStr(filename), 0))) {
152
159
  rxml_raise(&xmlLastError);
@@ -166,6 +173,9 @@ static VALUE rxml_writer_string(VALUE klass)
166
173
 
167
174
  rwo = ALLOC(rxml_writer_object);
168
175
  rwo->output = Qnil;
176
+ # ifdef HAVE_RUBY_ENCODING_H
177
+ rwo->encoding = NULL;
178
+ # endif /* HAVE_RUBY_ENCODING_H */
169
179
  rwo->output_type = RXMLW_OUTPUT_STRING;
170
180
  if (NULL == (rwo->buffer = xmlBufferCreate())) {
171
181
  rxml_raise(&xmlLastError);
@@ -191,6 +201,9 @@ static VALUE rxml_writer_doc(VALUE klass)
191
201
  rwo = ALLOC(rxml_writer_object);
192
202
  rwo->buffer = NULL;
193
203
  rwo->output = Qnil;
204
+ # ifdef HAVE_RUBY_ENCODING_H
205
+ rwo->encoding = NULL;
206
+ # endif /* HAVE_RUBY_ENCODING_H */
194
207
  rwo->output_type = RXMLW_OUTPUT_DOC;
195
208
  if (NULL == (rwo->writer = xmlNewTextWriterDoc(&doc, 0))) {
196
209
  rxml_raise(&xmlLastError);
@@ -203,19 +216,41 @@ static VALUE rxml_writer_doc(VALUE klass)
203
216
  /* ===== public instance methods ===== */
204
217
 
205
218
  /* call-seq:
206
- * writer.flush -> (true|false)
219
+ * writer.flush(empty? = true) -> (num|string)
207
220
  *
208
- * Flushes the output buffer.
221
+ * Flushes the output buffer. Returns the number of written bytes or
222
+ * the current content of the internal buffer for a in memory XML::Writer.
223
+ * If +empty?+ is +true+, and for a in memory XML::Writer, this internel
224
+ * buffer is empty.
209
225
  */
210
- static VALUE rxml_writer_flush(VALUE self)
226
+ static VALUE rxml_writer_flush(int argc, VALUE *argv, VALUE self)
211
227
  {
212
228
  int ret;
229
+ VALUE empty;
213
230
  rxml_writer_object *rwo;
214
231
 
232
+ rb_scan_args(argc, argv, "01", &empty);
233
+
215
234
  rwo = rxml_textwriter_get(self);
216
- ret = xmlTextWriterFlush(rwo->writer);
235
+ if (-1 == (ret = xmlTextWriterFlush(rwo->writer))) {
236
+ rxml_raise(&xmlLastError);
237
+ }
238
+ if (NULL != rwo->buffer) {
239
+ VALUE content;
217
240
 
218
- return (-1 == ret ? Qfalse : Qtrue);
241
+ # ifdef HAVE_RUBY_ENCODING_H
242
+ content = rb_external_str_new_with_enc(rwo->buffer->content, rwo->buffer->use, rwo->encoding);
243
+ # else
244
+ content = rb_str_new(rwo->buffer->content, rwo->buffer->use);
245
+ # endif /* HAVE_RUBY_ENCODING_H */
246
+ if (NIL_P(empty) || RTEST(empty)) { /* nil = default value = true */
247
+ xmlBufferEmpty(rwo->buffer);
248
+ }
249
+
250
+ return content;
251
+ } else {
252
+ return INT2NUM(ret);
253
+ }
219
254
  }
220
255
 
221
256
  /* call-seq:
@@ -232,6 +267,9 @@ static VALUE rxml_writer_result(VALUE self)
232
267
 
233
268
  ret = Qnil;
234
269
  rwo = rxml_textwriter_get(self);
270
+ if (-1 == (ret = xmlTextWriterFlush(rwo->writer))) {
271
+ rxml_raise(&xmlLastError);
272
+ }
235
273
  switch (rwo->output_type) {
236
274
  case RXMLW_OUTPUT_DOC:
237
275
  ret = rwo->output;
@@ -264,7 +302,7 @@ static VALUE numeric_rxml_writer_void(VALUE obj, int (*fn)(xmlTextWriterPtr))
264
302
  }
265
303
 
266
304
  # define numeric_rxml_writer_string(/*VALUE*/ obj, /*VALUE*/ name_or_content, /*int (**/fn/*)(xmlTextWriterPtr, const xmlChar *)*/) \
267
- numeric_rxml_writer_va_strings(obj, Qnil, 1, fn, name_or_content)
305
+ numeric_rxml_writer_va_strings(obj, Qundef, 1, fn, name_or_content)
268
306
 
269
307
  /**
270
308
  * This is quite ugly but thanks to libxml2 coding style, all xmlTextWriter*
@@ -304,7 +342,7 @@ static VALUE numeric_rxml_writer_va_strings(VALUE obj, VALUE pe, size_t strings_
304
342
  }
305
343
  va_end(ap);
306
344
 
307
- if (NIL_P(pe)) {
345
+ if (Qundef == pe) {
308
346
  switch (strings_count) {
309
347
  case 0:
310
348
  ret = fn(rwo->writer);
@@ -449,7 +487,7 @@ static VALUE rxml_writer_write_element(int argc, VALUE *argv, VALUE self)
449
487
  }
450
488
  return rxml_writer_end_element(self);
451
489
  } else {
452
- return numeric_rxml_writer_va_strings(self, Qnil, 2, xmlTextWriterWriteElement, name, content);
490
+ return numeric_rxml_writer_va_strings(self, Qundef, 2, xmlTextWriterWriteElement, name, content);
453
491
  }
454
492
  }
455
493
 
@@ -483,7 +521,7 @@ static VALUE rxml_writer_write_element_ns(int argc, VALUE *argv, VALUE self)
483
521
  }
484
522
  return rxml_writer_end_element(self);
485
523
  } else {
486
- return numeric_rxml_writer_va_strings(self, Qnil, 4, xmlTextWriterWriteElementNS, prefix, name, namespaceURI, content);
524
+ return numeric_rxml_writer_va_strings(self, Qundef, 4, xmlTextWriterWriteElementNS, prefix, name, namespaceURI, content);
487
525
  }
488
526
  }
489
527
 
@@ -495,7 +533,7 @@ static VALUE rxml_writer_write_element_ns(int argc, VALUE *argv, VALUE self)
495
533
  */
496
534
  static VALUE rxml_writer_write_attribute(VALUE self, VALUE name, VALUE content)
497
535
  {
498
- return numeric_rxml_writer_va_strings(self, Qnil, 2, xmlTextWriterWriteAttribute, name, content);
536
+ return numeric_rxml_writer_va_strings(self, Qundef, 2, xmlTextWriterWriteAttribute, name, content);
499
537
  }
500
538
 
501
539
  /* call-seq:
@@ -518,7 +556,7 @@ static VALUE rxml_writer_write_attribute_ns(int argc, VALUE *argv, VALUE self)
518
556
 
519
557
  rb_scan_args(argc, argv, "22", &prefix, &name, &namespaceURI, &content);
520
558
 
521
- return numeric_rxml_writer_va_strings(self, Qnil, 4, xmlTextWriterWriteAttributeNS, prefix, name, namespaceURI, content);
559
+ return numeric_rxml_writer_va_strings(self, Qundef, 4, xmlTextWriterWriteAttributeNS, prefix, name, namespaceURI, content);
522
560
  }
523
561
 
524
562
  /* call-seq:
@@ -529,7 +567,7 @@ static VALUE rxml_writer_write_attribute_ns(int argc, VALUE *argv, VALUE self)
529
567
  */
530
568
  static VALUE rxml_writer_write_pi(VALUE self, VALUE target, VALUE content)
531
569
  {
532
- return numeric_rxml_writer_va_strings(self, Qnil, 2, xmlTextWriterWritePI, target, content);
570
+ return numeric_rxml_writer_va_strings(self, Qundef, 2, xmlTextWriterWritePI, target, content);
533
571
  }
534
572
 
535
573
  /* ===== public start/end interface ===== */
@@ -584,7 +622,7 @@ static VALUE rxml_writer_start_attribute_ns(int argc, VALUE *argv, VALUE self)
584
622
 
585
623
  rb_scan_args(argc, argv, "21", &prefix, &name, &namespaceURI);
586
624
 
587
- return numeric_rxml_writer_va_strings(self, Qnil, 3, xmlTextWriterStartAttributeNS, prefix, name, namespaceURI);
625
+ return numeric_rxml_writer_va_strings(self, Qundef, 3, xmlTextWriterStartAttributeNS, prefix, name, namespaceURI);
588
626
  }
589
627
 
590
628
  /* call-seq:
@@ -647,7 +685,7 @@ static VALUE rxml_writer_start_element_ns(int argc, VALUE *argv, VALUE self)
647
685
 
648
686
  rb_scan_args(argc, argv, "21", &prefix, &name, &namespaceURI);
649
687
 
650
- return numeric_rxml_writer_va_strings(self, Qnil, 3, xmlTextWriterStartElementNS, prefix, name, namespaceURI);
688
+ return numeric_rxml_writer_va_strings(self, Qundef, 3, xmlTextWriterStartElementNS, prefix, name, namespaceURI);
651
689
  }
652
690
 
653
691
  /* call-seq:
@@ -731,6 +769,9 @@ static VALUE rxml_writer_start_document(int argc, VALUE *argv, VALUE self)
731
769
  }
732
770
  }
733
771
  rwo = rxml_textwriter_get(self);
772
+ # ifdef HAVE_RUBY_ENCODING_H
773
+ rwo->encoding = rxml_figure_encoding(xencoding);
774
+ # endif /* !HAVE_RUBY_ENCODING_H */
734
775
  ret = xmlTextWriterStartDocument(rwo->writer, NULL, xencoding, xstandalone);
735
776
 
736
777
  return (-1 == ret ? Qfalse : Qtrue);
@@ -777,7 +818,7 @@ static VALUE rxml_writer_start_dtd(int argc, VALUE *argv, VALUE self)
777
818
 
778
819
  rb_scan_args(argc, argv, "12", &name, &pubid, &sysid);
779
820
 
780
- return numeric_rxml_writer_va_strings(self, Qnil, 3, xmlTextWriterStartDTD, name, pubid, sysid);
821
+ return numeric_rxml_writer_va_strings(self, Qundef, 3, xmlTextWriterStartDTD, name, pubid, sysid);
781
822
  }
782
823
 
783
824
  /* call-seq:
@@ -882,7 +923,7 @@ static VALUE rxml_writer_write_dtd(int argc, VALUE *argv, VALUE self)
882
923
 
883
924
  rb_scan_args(argc, argv, "13", &name, &pubid, &sysid, &subset);
884
925
 
885
- return numeric_rxml_writer_va_strings(self, Qnil, 4, xmlTextWriterWriteDTD, name, pubid, sysid, subset);
926
+ return numeric_rxml_writer_va_strings(self, Qundef, 4, xmlTextWriterWriteDTD, name, pubid, sysid, subset);
886
927
  }
887
928
 
888
929
  /* call-seq:
@@ -894,7 +935,7 @@ static VALUE rxml_writer_write_dtd(int argc, VALUE *argv, VALUE self)
894
935
  */
895
936
  static VALUE rxml_writer_write_dtd_attlist(VALUE self, VALUE name, VALUE content)
896
937
  {
897
- return numeric_rxml_writer_va_strings(self, Qnil, 2, xmlTextWriterWriteDTDAttlist, name, content);
938
+ return numeric_rxml_writer_va_strings(self, Qundef, 2, xmlTextWriterWriteDTDAttlist, name, content);
898
939
  }
899
940
 
900
941
  /* call-seq:
@@ -906,7 +947,7 @@ static VALUE rxml_writer_write_dtd_attlist(VALUE self, VALUE name, VALUE content
906
947
  */
907
948
  static VALUE rxml_writer_write_dtd_element(VALUE self, VALUE name, VALUE content)
908
949
  {
909
- return numeric_rxml_writer_va_strings(self, Qnil, 2, xmlTextWriterWriteDTDElement, name, content);
950
+ return numeric_rxml_writer_va_strings(self, Qundef, 2, xmlTextWriterWriteDTDElement, name, content);
910
951
  }
911
952
 
912
953
  /* call-seq:
@@ -943,7 +984,7 @@ static VALUE rxml_writer_write_dtd_external_entity(VALUE self, VALUE name, VALUE
943
984
  */
944
985
  static VALUE rxml_writer_write_dtd_external_entity_contents(VALUE self, VALUE pubid, VALUE sysid, VALUE ndataid)
945
986
  {
946
- return numeric_rxml_writer_va_strings(self, Qnil, 3, xmlTextWriterWriteDTDExternalEntityContents, pubid, sysid, ndataid);
987
+ return numeric_rxml_writer_va_strings(self, Qundef, 3, xmlTextWriterWriteDTDExternalEntityContents, pubid, sysid, ndataid);
947
988
  }
948
989
 
949
990
  /* call-seq:
@@ -969,7 +1010,7 @@ static VALUE rxml_writer_write_dtd_internal_entity(VALUE self, VALUE name, VALUE
969
1010
  */
970
1011
  static VALUE rxml_writer_write_dtd_notation(VALUE self, VALUE name, VALUE pubid, VALUE sysid)
971
1012
  {
972
- return numeric_rxml_writer_va_strings(self, Qnil, 3, xmlTextWriterWriteDTDNotation, name, pubid, sysid);
1013
+ return numeric_rxml_writer_va_strings(self, Qundef, 3, xmlTextWriterWriteDTDNotation, name, pubid, sysid);
973
1014
  }
974
1015
 
975
1016
  # if LIBXML_VERSION >= 20900
@@ -1017,7 +1058,7 @@ void rxml_init_writer(void)
1017
1058
  # if LIBXML_VERSION >= 20900
1018
1059
  rb_define_method(cXMLWriter, "set_quote_char", rxml_writer_set_quote_char, 1);
1019
1060
  # endif /* LIBXML_VERSION >= 20900 */
1020
- rb_define_method(cXMLWriter, "flush", rxml_writer_flush, 0);
1061
+ rb_define_method(cXMLWriter, "flush", rxml_writer_flush, -1);
1021
1062
  rb_define_method(cXMLWriter, "start_dtd", rxml_writer_start_dtd, -1);
1022
1063
  rb_define_method(cXMLWriter, "start_dtd_entity", rxml_writer_start_dtd_entity, -1);
1023
1064
  rb_define_method(cXMLWriter, "start_dtd_attlist", rxml_writer_start_dtd_attlist, 1);
@@ -1067,6 +1108,8 @@ void rxml_init_writer(void)
1067
1108
  rb_define_method(cXMLWriter, "write_pi", rxml_writer_write_pi, 2);
1068
1109
 
1069
1110
  rb_define_method(cXMLWriter, "result", rxml_writer_result, 0);
1111
+
1112
+ rb_undef_method(CLASS_OF(cXMLWriter), "new");
1070
1113
  }
1071
1114
 
1072
1115
  #endif /* LIBXML_WRITER_ENABLED */
@@ -3,20 +3,24 @@
3
3
  module LibXML
4
4
  module XML
5
5
  class Error
6
-
7
- DOMAIN_CODE_MAP =Hash.new.tap do |map|
8
- ([:NO_ERROR, :PARSER, :TREE, :NAMESPACE, :DTD, :HTML, :MEMORY, :OUTPUT, :IO, :FTP, :HTTP, :XINCLUDE, :XPATH, :XPOINTER, :REGEXP, :DATATYPE, :SCHEMASP, :SCHEMASV, :RELAXNGP, :RELAXNGV, :CATALOG, :C14N, :XSLT, :VALID, :CHECK, :WRITER, :MODULE, :I18N, :SCHEMATRONV]
9
- ).each do |code|
10
- map[const_get(code)] = code.to_s.gsub(/XML_ERR_/, '')
6
+ # Create mapping from domain constant value to keys
7
+ DOMAIN_CODE_MAP = [:NO_ERROR, :PARSER, :TREE, :NAMESPACE, :DTD, :HTML, :MEMORY,
8
+ :OUTPUT, :IO, :FTP, :HTTP, :XINCLUDE, :XPATH, :XPOINTER, :REGEXP,
9
+ :DATATYPE, :SCHEMASP, :SCHEMASV, :RELAXNGP, :RELAXNGV, :CATALOG,
10
+ :C14N, :XSLT, :VALID, :CHECK, :WRITER, :MODULE, :I18N, :SCHEMATRONV].inject(Hash.new) do |hash, code|
11
+ if const_defined?(code)
12
+ hash[const_get(code)] = code.to_s
11
13
  end
14
+ hash
12
15
  end
13
16
 
17
+ # Create mapping from domain constant value to keys
14
18
  ERROR_CODE_MAP = Hash.new.tap do |map|
15
19
  (constants -
16
20
  DOMAIN_CODE_MAP.values - #Domains
17
21
  [:NONE, :WARNING, :ERROR, :FATAL] # Levels
18
22
  ).each do |code|
19
- map[const_get(code)] = code.to_s.gsub(/XML_ERR_/, '')
23
+ map[const_get(code)] = code.to_s
20
24
  end
21
25
  end
22
26
 
@@ -404,6 +404,28 @@ class TestWriter < Test::Unit::TestCase
404
404
  end
405
405
  end
406
406
 
407
+ def test_flush
408
+ writer = XML::Writer.string
409
+ assert(writer.start_document)
410
+ assert_equal(writer.flush.strip!, '<?xml version="1.0"?>')
411
+ assert(writer.start_element 'foo')
412
+ assert(writer.end_element)
413
+ assert(writer.end_document)
414
+ writer.flush false
415
+ assert_equal(writer.result.strip, '<foo/>')
416
+ end
417
+
418
+ def test_nil_pe_issue
419
+ expected = '<!DOCTYPE html [<!ENTITY special.pre "br | span | bdo | map"><!ENTITY special "%special.pre; | object | img">]>'
420
+
421
+ writer = XML::Writer.string
422
+ dtd writer, 'html' do
423
+ assert(writer.write_dtd_internal_entity 'special.pre', 'br | span | bdo | map', nil)
424
+ assert(writer.write_dtd_internal_entity 'special', '%special.pre; | object | img', nil)
425
+ end
426
+ assert_equal(writer.result, expected)
427
+ end
428
+
407
429
  private
408
430
 
409
431
  def document(writer, options = {})
@@ -416,7 +438,6 @@ class TestWriter < Test::Unit::TestCase
416
438
  assert(writer.start_dtd name, pubid, sysid)
417
439
  yield if block_given?
418
440
  assert(writer.end_dtd)
419
- writer.flush
420
441
  end
421
442
 
422
443
  def element(writer, localname)
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libxml-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
5
- prerelease:
4
+ version: 2.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ross Bamform
@@ -15,29 +14,28 @@ authors:
15
14
  autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
- date: 2013-01-27 00:00:00.000000000 Z
17
+ date: 2013-02-16 00:00:00.000000000 Z
19
18
  dependencies:
20
19
  - !ruby/object:Gem::Dependency
21
20
  name: hanna_guado
22
21
  requirement: !ruby/object:Gem::Requirement
23
- none: false
24
22
  requirements:
25
- - - ! '>='
23
+ - - ">="
26
24
  - !ruby/object:Gem::Version
27
25
  version: '0'
28
26
  type: :development
29
27
  prerelease: false
30
28
  version_requirements: !ruby/object:Gem::Requirement
31
- none: false
32
29
  requirements:
33
- - - ! '>='
30
+ - - ">="
34
31
  - !ruby/object:Gem::Version
35
32
  version: '0'
36
- description: ! " The Libxml-Ruby project provides Ruby language bindings for the
37
- GNOME\n Libxml2 XML toolkit. It is free software, released under the MIT License.\n
38
- \ Libxml-ruby's primary advantage over REXML is performance - if speed\n is
39
- your need, these are good libraries to consider, as demonstrated\n by the informal
40
- benchmark below.\n"
33
+ description: |2
34
+ The Libxml-Ruby project provides Ruby language bindings for the GNOME
35
+ Libxml2 XML toolkit. It is free software, released under the MIT License.
36
+ Libxml-ruby's primary advantage over REXML is performance - if speed
37
+ is your need, these are good libraries to consider, as demonstrated
38
+ by the informal benchmark below.
41
39
  email:
42
40
  executables: []
43
41
  extensions:
@@ -260,27 +258,26 @@ files:
260
258
  - test/test_suite.rb
261
259
  homepage: http://xml4r.github.com/libxml-ruby
262
260
  licenses: []
261
+ metadata: {}
263
262
  post_install_message:
264
263
  rdoc_options: []
265
264
  require_paths:
266
265
  - lib
267
266
  required_ruby_version: !ruby/object:Gem::Requirement
268
- none: false
269
267
  requirements:
270
- - - ! '>='
268
+ - - ">="
271
269
  - !ruby/object:Gem::Version
272
270
  version: 1.8.6
273
271
  required_rubygems_version: !ruby/object:Gem::Requirement
274
- none: false
275
272
  requirements:
276
- - - ! '>='
273
+ - - ">="
277
274
  - !ruby/object:Gem::Version
278
275
  version: '0'
279
276
  requirements: []
280
277
  rubyforge_project:
281
- rubygems_version: 1.8.24
278
+ rubygems_version: 2.0.0.rc.2
282
279
  signing_key:
283
- specification_version: 3
280
+ specification_version: 4
284
281
  summary: Ruby Bindings for LibXML2
285
282
  test_files:
286
283
  - test/tc_attr.rb