rexml 3.3.8 → 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 +21 -0
- data/lib/rexml/parsers/baseparser.rb +8 -3
- 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,26 @@
|
|
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
|
+
|
3
24
|
## 3.3.8 - 2024-09-29 {#version-3-3-8}
|
4
25
|
|
5
26
|
### Improvements
|
@@ -150,7 +150,7 @@ 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|
|
@@ -167,6 +167,7 @@ module REXML
|
|
167
167
|
@entity_expansion_count = 0
|
168
168
|
@entity_expansion_limit = Security.entity_expansion_limit
|
169
169
|
@entity_expansion_text_limit = Security.entity_expansion_text_limit
|
170
|
+
@source.ensure_buffer
|
170
171
|
end
|
171
172
|
|
172
173
|
def add_listener( listener )
|
@@ -569,8 +570,12 @@ module REXML
|
|
569
570
|
return rv if matches.size == 0
|
570
571
|
rv.gsub!( Private::CHARACTER_REFERENCES ) {
|
571
572
|
m=$1
|
572
|
-
|
573
|
-
|
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*')
|
574
579
|
}
|
575
580
|
matches.collect!{|x|x[0]}.compact!
|
576
581
|
if filter
|
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
|