rexml 3.3.7 → 3.3.9
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.
- checksums.yaml +4 -4
- data/NEWS.md +42 -0
- data/lib/rexml/parsers/baseparser.rb +11 -5
- data/lib/rexml/parsers/sax2parser.rb +2 -0
- data/lib/rexml/rexml.rb +1 -1
- data/lib/rexml/source.rb +8 -2
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9d8de4465de1e9548d66ad026772932f724b9747dc8b1c62960d8efeaeaa8412
|
|
4
|
+
data.tar.gz: 1cb29aaa36dcef98ba8bd4e9fa249959405f67fdb6bed54d12b466fdf43f57af
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 78c881a10f12e46e1b6710d6ec75e42e4311c233376a7587756bc098063d21f52a4d82bcac8201001bf7e39079b3db4015482dae5b4ba46e561ef75fa15b15a0
|
|
7
|
+
data.tar.gz: 8d7a4b94937ce7b0bdf6ed83152fe207098dfe45333498a64e50d5fe9a686dffa2f66913c1edf265470b2b6a04cfae20857f1cffa404c278249784eeb533d594
|
data/NEWS.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# News
|
|
2
2
|
|
|
3
|
+
## 3.3.9 - 2024-10-24 {#version-3-3-9}
|
|
4
|
+
|
|
5
|
+
### Improvements
|
|
6
|
+
|
|
7
|
+
* Improved performance.
|
|
8
|
+
* GH-210
|
|
9
|
+
* Patch by NAITOH Jun.
|
|
10
|
+
|
|
11
|
+
### Fixes
|
|
12
|
+
|
|
13
|
+
* Fixed a parse bug for text only invalid XML.
|
|
14
|
+
* GH-215
|
|
15
|
+
* Patch by NAITOH Jun.
|
|
16
|
+
|
|
17
|
+
* Fixed a parse bug that `�x...;` is accepted as a character
|
|
18
|
+
reference.
|
|
19
|
+
|
|
20
|
+
### Thanks
|
|
21
|
+
|
|
22
|
+
* NAITOH Jun
|
|
23
|
+
|
|
24
|
+
## 3.3.8 - 2024-09-29 {#version-3-3-8}
|
|
25
|
+
|
|
26
|
+
### Improvements
|
|
27
|
+
|
|
28
|
+
* SAX2: Improve parse performance.
|
|
29
|
+
* GH-207
|
|
30
|
+
* Patch by NAITOH Jun.
|
|
31
|
+
|
|
32
|
+
### Fixes
|
|
33
|
+
|
|
34
|
+
* Fixed a bug that unexpected attribute namespace conflict error for
|
|
35
|
+
the predefined "xml" namespace is reported.
|
|
36
|
+
* GH-208
|
|
37
|
+
* Patch by KITAITI Makoto
|
|
38
|
+
|
|
39
|
+
### Thanks
|
|
40
|
+
|
|
41
|
+
* NAITOH Jun
|
|
42
|
+
|
|
43
|
+
* KITAITI Makoto
|
|
44
|
+
|
|
3
45
|
## 3.3.7 - 2024-09-04 {#version-3-3-7}
|
|
4
46
|
|
|
5
47
|
### Improvements
|
|
@@ -150,12 +150,13 @@ module REXML
|
|
|
150
150
|
PEDECL_PATTERN = "\\s+(%)\\s+#{NAME}\\s+#{PEDEF}\\s*>"
|
|
151
151
|
ENTITYDECL_PATTERN = /(?:#{GEDECL_PATTERN})|(?:#{PEDECL_PATTERN})/um
|
|
152
152
|
CARRIAGE_RETURN_NEWLINE_PATTERN = /\r\n?/
|
|
153
|
-
CHARACTER_REFERENCES = /&#
|
|
153
|
+
CHARACTER_REFERENCES = /&#((?:\d+)|(?:x[a-fA-F0-9]+));/
|
|
154
154
|
DEFAULT_ENTITIES_PATTERNS = {}
|
|
155
155
|
default_entities = ['gt', 'lt', 'quot', 'apos', 'amp']
|
|
156
156
|
default_entities.each do |term|
|
|
157
157
|
DEFAULT_ENTITIES_PATTERNS[term] = /&#{term};/
|
|
158
158
|
end
|
|
159
|
+
XML_PREFIXED_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
|
|
159
160
|
end
|
|
160
161
|
private_constant :Private
|
|
161
162
|
|
|
@@ -166,6 +167,7 @@ module REXML
|
|
|
166
167
|
@entity_expansion_count = 0
|
|
167
168
|
@entity_expansion_limit = Security.entity_expansion_limit
|
|
168
169
|
@entity_expansion_text_limit = Security.entity_expansion_text_limit
|
|
170
|
+
@source.ensure_buffer
|
|
169
171
|
end
|
|
170
172
|
|
|
171
173
|
def add_listener( listener )
|
|
@@ -185,7 +187,7 @@ module REXML
|
|
|
185
187
|
@tags = []
|
|
186
188
|
@stack = []
|
|
187
189
|
@entities = []
|
|
188
|
-
@namespaces = {}
|
|
190
|
+
@namespaces = {"xml" => Private::XML_PREFIXED_NAMESPACE}
|
|
189
191
|
@namespaces_restore_stack = []
|
|
190
192
|
end
|
|
191
193
|
|
|
@@ -568,8 +570,12 @@ module REXML
|
|
|
568
570
|
return rv if matches.size == 0
|
|
569
571
|
rv.gsub!( Private::CHARACTER_REFERENCES ) {
|
|
570
572
|
m=$1
|
|
571
|
-
|
|
572
|
-
|
|
573
|
+
if m.start_with?("x")
|
|
574
|
+
code_point = Integer(m[1..-1], 16)
|
|
575
|
+
else
|
|
576
|
+
code_point = Integer(m, 10)
|
|
577
|
+
end
|
|
578
|
+
[code_point].pack('U*')
|
|
573
579
|
}
|
|
574
580
|
matches.collect!{|x|x[0]}.compact!
|
|
575
581
|
if filter
|
|
@@ -790,7 +796,7 @@ module REXML
|
|
|
790
796
|
@source.match(/\s*/um, true)
|
|
791
797
|
if prefix == "xmlns"
|
|
792
798
|
if local_part == "xml"
|
|
793
|
-
if value !=
|
|
799
|
+
if value != Private::XML_PREFIXED_NAMESPACE
|
|
794
800
|
msg = "The 'xml' prefix must not be bound to any other namespace "+
|
|
795
801
|
"(http://www.w3.org/TR/REC-xml-names/#ns-decl)"
|
|
796
802
|
raise REXML::ParseException.new( msg, @source, self )
|
|
@@ -259,6 +259,8 @@ module REXML
|
|
|
259
259
|
end
|
|
260
260
|
|
|
261
261
|
def get_namespace( prefix )
|
|
262
|
+
return nil if @namespace_stack.empty?
|
|
263
|
+
|
|
262
264
|
uris = (@namespace_stack.find_all { |ns| not ns[prefix].nil? }) ||
|
|
263
265
|
(@namespace_stack.find { |ns| not ns[nil].nil? })
|
|
264
266
|
uris[-1][prefix] unless uris.nil? or 0 == uris.size
|
data/lib/rexml/rexml.rb
CHANGED
data/lib/rexml/source.rb
CHANGED
|
@@ -77,6 +77,7 @@ module REXML
|
|
|
77
77
|
detect_encoding
|
|
78
78
|
end
|
|
79
79
|
@line = 0
|
|
80
|
+
@term_encord = {}
|
|
80
81
|
end
|
|
81
82
|
|
|
82
83
|
# The current buffer (what we're going to read next)
|
|
@@ -227,7 +228,7 @@ module REXML
|
|
|
227
228
|
|
|
228
229
|
def read_until(term)
|
|
229
230
|
pattern = Private::PRE_DEFINED_TERM_PATTERNS[term] || /#{Regexp.escape(term)}/
|
|
230
|
-
term = encode(term)
|
|
231
|
+
term = @term_encord[term] ||= encode(term)
|
|
231
232
|
until str = @scanner.scan_until(pattern)
|
|
232
233
|
break if @source.nil?
|
|
233
234
|
break if @source.eof?
|
|
@@ -294,14 +295,19 @@ module REXML
|
|
|
294
295
|
|
|
295
296
|
private
|
|
296
297
|
def readline(term = nil)
|
|
297
|
-
str = @source.readline(term || @line_break)
|
|
298
298
|
if @pending_buffer
|
|
299
|
+
begin
|
|
300
|
+
str = @source.readline(term || @line_break)
|
|
301
|
+
rescue IOError
|
|
302
|
+
end
|
|
299
303
|
if str.nil?
|
|
300
304
|
str = @pending_buffer
|
|
301
305
|
else
|
|
302
306
|
str = @pending_buffer + str
|
|
303
307
|
end
|
|
304
308
|
@pending_buffer = nil
|
|
309
|
+
else
|
|
310
|
+
str = @source.readline(term || @line_break)
|
|
305
311
|
end
|
|
306
312
|
return nil if str.nil?
|
|
307
313
|
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rexml
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.3.
|
|
4
|
+
version: 3.3.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kouhei Sutou
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2024-
|
|
10
|
+
date: 2024-10-24 00:00:00.000000000 Z
|
|
11
11
|
dependencies: []
|
|
12
12
|
description: An XML toolkit for Ruby
|
|
13
13
|
email:
|
|
@@ -102,7 +102,7 @@ homepage: https://github.com/ruby/rexml
|
|
|
102
102
|
licenses:
|
|
103
103
|
- BSD-2-Clause
|
|
104
104
|
metadata:
|
|
105
|
-
changelog_uri: https://github.com/ruby/rexml/releases/tag/v3.3.
|
|
105
|
+
changelog_uri: https://github.com/ruby/rexml/releases/tag/v3.3.9
|
|
106
106
|
rdoc_options:
|
|
107
107
|
- "--main"
|
|
108
108
|
- README.md
|