libxml-ruby 3.2.1 → 3.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY +22 -0
  3. data/Rakefile +24 -16
  4. data/ext/libxml/ruby_libxml.h +0 -22
  5. data/ext/libxml/ruby_xml.c +6 -0
  6. data/ext/libxml/ruby_xml_document.c +6 -0
  7. data/ext/libxml/ruby_xml_encoding.h +2 -0
  8. data/ext/libxml/ruby_xml_error.h +2 -0
  9. data/ext/libxml/ruby_xml_html_parser.c +2 -0
  10. data/ext/libxml/ruby_xml_html_parser_context.c +1 -0
  11. data/ext/libxml/ruby_xml_html_parser_options.c +2 -0
  12. data/ext/libxml/ruby_xml_namespace.c +1 -0
  13. data/ext/libxml/ruby_xml_node.c +12 -4
  14. data/ext/libxml/ruby_xml_parser_context.c +2 -0
  15. data/ext/libxml/ruby_xml_reader.c +3 -0
  16. data/ext/libxml/ruby_xml_reader.h +0 -3
  17. data/ext/libxml/ruby_xml_relaxng.c +2 -0
  18. data/ext/libxml/ruby_xml_relaxng.h +0 -2
  19. data/ext/libxml/ruby_xml_schema.c +223 -81
  20. data/ext/libxml/ruby_xml_schema.h +4 -788
  21. data/ext/libxml/ruby_xml_schema_attribute.c +69 -71
  22. data/ext/libxml/ruby_xml_schema_attribute.h +25 -3
  23. data/ext/libxml/ruby_xml_schema_element.c +28 -54
  24. data/ext/libxml/ruby_xml_schema_element.h +0 -3
  25. data/ext/libxml/ruby_xml_schema_facet.c +19 -21
  26. data/ext/libxml/ruby_xml_schema_facet.h +0 -4
  27. data/ext/libxml/ruby_xml_schema_type.c +56 -37
  28. data/ext/libxml/ruby_xml_version.h +3 -3
  29. data/ext/libxml/ruby_xml_writer.c +4 -0
  30. data/ext/libxml/ruby_xml_writer.h +0 -4
  31. data/ext/libxml/ruby_xml_xinclude.c +4 -0
  32. data/ext/libxml/ruby_xml_xpath.c +1 -0
  33. data/ext/libxml/ruby_xml_xpath.h +2 -0
  34. data/ext/libxml/ruby_xml_xpath_context.c +2 -0
  35. data/ext/libxml/ruby_xml_xpath_object.c +1 -0
  36. data/ext/libxml/ruby_xml_xpointer.c +5 -1
  37. data/lib/libxml-ruby.rb +1 -1
  38. data/libxml-ruby.gemspec +1 -1
  39. data/test/model/shiporder.rnc +2 -2
  40. data/test/model/shiporder.rng +2 -2
  41. data/test/model/shiporder.xsd +7 -3
  42. data/test/model/shiporder_bad.xsd +40 -0
  43. data/test/model/shiporder_import.xsd +45 -0
  44. data/test/test_document.rb +2 -1
  45. data/test/test_dtd.rb +2 -1
  46. data/test/test_helper.rb +6 -0
  47. data/test/test_parser.rb +1 -1
  48. data/test/test_parser_context.rb +1 -7
  49. data/test/test_reader.rb +2 -1
  50. data/test/test_sax_parser.rb +13 -6
  51. data/test/test_schema.rb +92 -29
  52. data/test/test_xml.rb +17 -4
  53. metadata +11 -10
  54. data/test/test.xml +0 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8b07d4dd732e06fdc8d4ffefcc9f9ea4a2a70faf8504bfdc1ef064e466656f9
4
- data.tar.gz: 31fb804f2d87c2b3db049eb24eb2086bbaadc8a3850314060bc066fa87b078f9
3
+ metadata.gz: 4f06b4949ffd040a0587458c5e06af9638a8bbd5138d9febdade9c1ffe89f9e9
4
+ data.tar.gz: d4e6ba9273e3b897fe09710e56a6e13faf9b37b99ac409dfac950f9ebce8cca7
5
5
  SHA512:
6
- metadata.gz: 21126d00b18029300b5d49d32d4534071453d1dfb76e51fbc86d311e47779e606885fe792ca3bc58aab98bafe8dc3e4153cefce5f9bdb41db47755fba00ed44f
7
- data.tar.gz: f510878992373c898082dfd6291bf6fb4d1b8d096095d08ec2a2550ca99f3b0bcc22b53d230f314e05a3e3fed17e8caf3fea9cc49f5fa682b6c39d44ece876db
6
+ metadata.gz: 87a83e5460f26c7ee1678587b2123ca5663cb45af60f2f8aef4e49486e7c77c6f0b7d74f15c9c6e45f025d3206e9f0b986bc416a18077af1cc35c9ce5f2c7d52
7
+ data.tar.gz: c6bb25a27405a90be3ce34cffea4c79c2a359daebd82041dd1f2c2b536a1c064bcedeb75157b440ca2cc629c6c86cbaad7d58eaba1a877c383f6cffc8930fd05
data/HISTORY CHANGED
@@ -1,5 +1,27 @@
1
1
  = Release History
2
2
 
3
+ == 3.2.4 / 2022-10-29
4
+
5
+ * Support libxml2 version 2.10.2 (Charlie Savage)
6
+ * Reduce number of globally included C header files (Charlie Savage)
7
+
8
+ == 3.2.3 / 2022-05-22
9
+
10
+ * Change some getter methods to instance variables with attr_accessors for easier debuggability (David Hansen)
11
+ * Add a number of tests related to schemas (David Hansen)
12
+ * Add schema.imported_elements so we can find imported elements (David Hansen)
13
+ * Fix segfault under windows when dereferencing a pre-existing error where the node has already been freed (David Hansen)
14
+ * Update to change name from imported_elements to imported_ns_elements and return a hash of hashes for namespaced elements (David Hansen)
15
+ * Only call xmlGetFeaturesList if LIBXML_LEGACY_ENABLED is defined. Most distros still ship libxml2 with legacy features enabled, but this will change (Nick Wellnhofer)
16
+ * Update GitHub Actions to use ruby/setup-ruby (Greg)
17
+ * Fix memory leak in rxml_node_path, node.path (vovanmozg)
18
+
19
+ == 3.2.2 / 2022-01-15
20
+ * Switch to Github actions for CI/CD (Greg)
21
+ * Test fixes (Greg, Sergio Durigan Junior)
22
+ * Fix typo on test/test_sax_parser.rb (Sergio Durigan Junior)
23
+ * Update homepage in gemspec (Pirate Praveen Arimbrathodiyil)
24
+
3
25
  == 3.2.1 / 2020-11-05
4
26
 
5
27
  * Fix incorrect handling of encodings when using XMLWriter.io (Charlie Savage)
data/Rakefile CHANGED
@@ -16,21 +16,29 @@ spec = Gem::Specification.load("#{GEM_NAME}.gemspec")
16
16
  task :default => [:test]
17
17
 
18
18
  # Setup compile tasks
19
- if RUBY_PLATFORM.match(/mswin32|mswin64|mingw32/)
20
- Rake::ExtensionTask.new do |ext|
21
- ext.gem_spec = spec
22
- ext.name = SO_NAME
23
- ext.ext_dir = "ext/libxml"
24
- ext.lib_dir = "lib/#{RUBY_VERSION.sub(/\.\d$/, '')}"
25
- ext.config_options << "--with-xml2-include=C:/msys64/mingw64/include/libxml2"
26
- end
27
- else
28
- Rake::ExtensionTask.new do |ext|
29
- ext.gem_spec = spec
30
- ext.name = SO_NAME
31
- ext.ext_dir = "ext/libxml"
32
- ext.lib_dir = "lib/#{RUBY_VERSION.sub(/\.\d$/, '')}"
33
- ext.config_options << "--with-xml2-include=/usr/include/libxml2"
19
+ Rake::ExtensionTask.new do |ext|
20
+ ext.gem_spec = spec
21
+ ext.name = SO_NAME
22
+ ext.ext_dir = "ext/libxml"
23
+ ext.lib_dir = "lib/#{RUBY_VERSION.sub(/\.\d$/, '')}"
24
+ if RUBY_PLATFORM.match(/mswin|mingw/)
25
+ ext.config_options <<
26
+ if (dir = ENV['WINDOWS_XML2_INCLUDE'])
27
+ "--with-xml2-include=#{dir}"
28
+ else
29
+ case RUBY_PLATFORM
30
+ when 'i386-mingw32'
31
+ '--with-xml2-include=C:/msys64/mingw32/include/libxml2'
32
+ when 'x64-mingw32'
33
+ '--with-xml2-include=C:/msys64/mingw64/include/libxml2'
34
+ when 'x64-mingw-ucrt'
35
+ '--with-xml2-include=C:/msys64/ucrt64/include/libxml2'
36
+ else
37
+ raise "Unknown Windows Ruby, please set ENV['WINDOWS_XML2_INCLUDE']"
38
+ end
39
+ end
40
+ else
41
+ ext.config_options << '--with-xml2-include=/usr/include/libxml2'
34
42
  end
35
43
  end
36
44
 
@@ -41,7 +49,7 @@ Gem::PackageTask.new(spec) do |pkg|
41
49
  end
42
50
 
43
51
  # Setup Windows Gem
44
- if RUBY_PLATFORM.match(/mswin32|mswin64|mingw32/)
52
+ if RUBY_PLATFORM.match(/mswin|mingw/)
45
53
  binaries = (FileList['lib/**/*.so',
46
54
  'lib/**/*dll'])
47
55
 
@@ -4,29 +4,7 @@
4
4
  #define __RUBY_LIBXML_H__
5
5
 
6
6
  #include <ruby.h>
7
- #include <libxml/parser.h>
8
- #include <libxml/parserInternals.h>
9
- #include <libxml/debugXML.h>
10
7
  #include <libxml/xmlversion.h>
11
- #include <libxml/xmlmemory.h>
12
- #include <libxml/xpath.h>
13
- #include <libxml/valid.h>
14
- #include <libxml/catalog.h>
15
- #include <libxml/HTMLparser.h>
16
- #include <libxml/xmlreader.h>
17
- #include <libxml/c14n.h>
18
-
19
- #include <ruby/encoding.h>
20
-
21
- #ifdef LIBXML_DEBUG_ENABLED
22
- #include <libxml/xpathInternals.h>
23
- #endif
24
- #ifdef LIBXML_XINCLUDE_ENABLED
25
- #include <libxml/xinclude.h>
26
- #endif
27
- #ifdef LIBXML_XPTR_ENABLED
28
- #include <libxml/xpointer.h>
29
- #endif
30
8
 
31
9
  #include "ruby_xml_version.h"
32
10
  #include "ruby_xml.h"
@@ -1,6 +1,8 @@
1
1
  #include "ruby_libxml.h"
2
2
  #include "ruby_xml.h"
3
3
 
4
+ #include <libxml/catalog.h>
5
+
4
6
  VALUE mXML;
5
7
 
6
8
  /*
@@ -764,6 +766,9 @@ static VALUE rxml_default_save_no_empty_tags_set(VALUE klass, VALUE value)
764
766
  */
765
767
  static VALUE rxml_features(VALUE klass)
766
768
  {
769
+ #ifndef LIBXML_LEGACY_ENABLED
770
+ return Qnil;
771
+ #else
767
772
  VALUE arr, str;
768
773
  int i, len = MAX_LIBXML_FEATURES_LEN;
769
774
  char **list = NULL;
@@ -788,6 +793,7 @@ static VALUE rxml_features(VALUE klass)
788
793
 
789
794
  ruby_xfree(list);
790
795
  return (arr);
796
+ #endif /* LIBXML_LEGACY_ENABLED */
791
797
  }
792
798
 
793
799
  /*
@@ -52,6 +52,12 @@
52
52
  #include "ruby_libxml.h"
53
53
  #include "ruby_xml_document.h"
54
54
 
55
+ #include <libxml/c14n.h>
56
+ #include <libxml/debugXML.h>
57
+ #include <libxml/relaxng.h>
58
+ #include <libxml/xmlschemas.h>
59
+ #include <libxml/xinclude.h>
60
+
55
61
  VALUE cXMLDocument;
56
62
 
57
63
  void rxml_document_free(xmlDocPtr xdoc)
@@ -3,6 +3,8 @@
3
3
  #ifndef __RXML_ENCODING__
4
4
  #define __RXML_ENCODING__
5
5
 
6
+ #include <ruby/encoding.h>
7
+
6
8
  extern VALUE mXMLEncoding;
7
9
 
8
10
  void rxml_init_encoding();
@@ -3,6 +3,8 @@
3
3
  #ifndef __RXML_ERROR__
4
4
  #define __RXML_ERROR__
5
5
 
6
+ #include <libxml/xmlerror.h>
7
+
6
8
  extern VALUE eXMLError;
7
9
 
8
10
  void rxml_init_error();
@@ -2,6 +2,8 @@
2
2
 
3
3
  #include "ruby_libxml.h"
4
4
 
5
+ #include <libxml/HTMLparser.h>
6
+
5
7
  /* Document-class: LibXML::XML::HTMLParser
6
8
  *
7
9
  * The HTML parser implements an HTML 4.0 non-verifying parser with an API
@@ -3,6 +3,7 @@
3
3
  #include "ruby_libxml.h"
4
4
  #include "ruby_xml_html_parser_context.h"
5
5
 
6
+ #include <libxml/parserInternals.h>
6
7
 
7
8
  /*
8
9
  * Document-class: LibXML::XML::HTMLParser::Context
@@ -2,6 +2,8 @@
2
2
 
3
3
  #include "ruby_libxml.h"
4
4
 
5
+ #include <libxml/HTMLparser.h>
6
+
5
7
  /* Document-class: LibXML::XML::HTMLParser::Options
6
8
  *
7
9
  * Options to control the operation of the HTMLParser. The easiest
@@ -52,6 +52,7 @@ static VALUE rxml_namespace_initialize(VALUE self, VALUE node, VALUE prefix,
52
52
 
53
53
  Check_Type(node, T_DATA);
54
54
  Data_Get_Struct(node, xmlNode, xnode);
55
+ xmlResetLastError();
55
56
 
56
57
  /* Prefix can be null - that means its the default namespace */
57
58
  xmlPrefix = NIL_P(prefix) ? NULL : (xmlChar *)StringValuePtr(prefix);
@@ -2,6 +2,10 @@
2
2
  #include "ruby_xml_node.h"
3
3
  #include <assert.h>
4
4
 
5
+ #include <libxml/debugXML.h>
6
+ #include <libxml/parserInternals.h>
7
+ #include <libxml/xlink.h>
8
+
5
9
  VALUE cXMLNode;
6
10
 
7
11
  /* Document-class: LibXML::XML::Node
@@ -983,14 +987,18 @@ static VALUE rxml_node_path(VALUE self)
983
987
  {
984
988
  xmlNodePtr xnode;
985
989
  xmlChar *path;
990
+ VALUE result = Qnil;
986
991
 
987
992
  xnode = rxml_get_xnode(self);
988
993
  path = xmlGetNodePath(xnode);
989
994
 
990
- if (path == NULL)
991
- return (Qnil);
992
- else
993
- return (rxml_new_cstr( path, NULL));
995
+ if (path)
996
+ {
997
+ result = rxml_new_cstr( path, NULL);
998
+ xmlFree(path);
999
+ }
1000
+
1001
+ return result;
994
1002
  }
995
1003
 
996
1004
  /*
@@ -3,6 +3,8 @@
3
3
  #include "ruby_libxml.h"
4
4
  #include "ruby_xml_parser_context.h"
5
5
 
6
+ #include <libxml/parserInternals.h>
7
+
6
8
  VALUE cXMLParserContext;
7
9
  static ID IO_ATTR;
8
10
 
@@ -4,6 +4,9 @@
4
4
  #include "ruby_libxml.h"
5
5
  #include "ruby_xml_reader.h"
6
6
 
7
+ #include <libxml/xmlreader.h>
8
+ #include <libxml/xmlschemas.h>
9
+
7
10
  /*
8
11
  * Document-class: LibXML::XML::Reader
9
12
  *
@@ -4,9 +4,6 @@
4
4
  #ifndef __RXML_READER__
5
5
  #define __RXML_READER__
6
6
 
7
- #include <libxml/xmlreader.h>
8
- #include <libxml/xmlschemas.h>
9
-
10
7
  extern VALUE cXMLReader;
11
8
 
12
9
  void rxml_init_reader(void);
@@ -1,6 +1,8 @@
1
1
  #include "ruby_libxml.h"
2
2
  #include "ruby_xml_relaxng.h"
3
3
 
4
+ #include <libxml/relaxng.h>
5
+
4
6
  /*
5
7
  * Document-class: LibXML::XML::RelaxNG
6
8
  *
@@ -1,8 +1,6 @@
1
1
  #ifndef __RXML_RELAXNG__
2
2
  #define __RXML_RELAXNG__
3
3
 
4
- #include <libxml/relaxng.h>
5
-
6
4
  extern VALUE cXMLRelaxNG;
7
5
 
8
6
  void rxml_init_relaxng(void);