xmlhash 1.3.3 → 1.3.4
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.txt +4 -0
- data/ext/xmlhash/xmlhash.c +2 -0
- data/lib/xmlhash.rb +1 -1
- data/test/test_xmlhash.rb +31 -0
- metadata +4 -4
data/History.txt
CHANGED
data/ext/xmlhash/xmlhash.c
CHANGED
@@ -199,6 +199,8 @@ static VALUE parse_xml_hash(VALUE self, VALUE rb_xml)
|
|
199
199
|
Check_Type(rb_xml, T_STRING);
|
200
200
|
#ifdef HAVE_RUBY_ENCODING_H
|
201
201
|
m_current_encoding = rb_enc_get(rb_xml);
|
202
|
+
if (m_current_encoding == rb_ascii8bit_encoding() || m_current_encoding == rb_usascii_encoding())
|
203
|
+
m_current_encoding = rb_utf8_encoding();
|
202
204
|
#endif
|
203
205
|
|
204
206
|
data = (char*)calloc(RSTRING_LEN(rb_xml), sizeof(char));
|
data/lib/xmlhash.rb
CHANGED
data/test/test_xmlhash.rb
CHANGED
@@ -124,4 +124,35 @@ eos
|
|
124
124
|
ret = Xmlhash.parse(xml)
|
125
125
|
assert_equal ret.elements('files'), []
|
126
126
|
end
|
127
|
+
|
128
|
+
def test_utf8
|
129
|
+
xml = '<package name="libconfig" project="home:coolo">
|
130
|
+
<title>libconfig – C/C++ Configuration File Library</title>
|
131
|
+
<description>Libconfig is a simple library for processing structured configuration files, like this one: test.cfg. This file format is more compact and more readable than XML. And unlike XML, it is type-aware, so it is not necessary to do string parsing in application code.
|
132
|
+
|
133
|
+
Libconfig is very compact — just 38K for the stripped C shared library (less than one-fourth the size of the expat XML parser library) and 66K for the stripped C++ shared library. This makes it well-suited for memory-constrained systems like handheld devices.
|
134
|
+
|
135
|
+
The library includes bindings for both the C and C++ languages. It works on POSIX-compliant UNIX systems (GNU/Linux, Mac OS X, Solaris, FreeBSD) and Windows (2000, XP and later).</description>
|
136
|
+
</package>'
|
137
|
+
xh = Xmlhash.parse(xml)
|
138
|
+
assert_equal "UTF-8", xh['title'].encoding.to_s
|
139
|
+
|
140
|
+
# now try with different input encoding
|
141
|
+
xml.encode!('US-ASCII')
|
142
|
+
xh = Xmlhash.parse(xml)
|
143
|
+
assert_equal "UTF-8", xh['title'].encoding.to_s
|
144
|
+
|
145
|
+
xml = '<?xml version="1.0" encoding="ISO-8859-1"?>
|
146
|
+
<package><title>Äöß</title></package>'
|
147
|
+
xml.encode!('ISO-8859-1')
|
148
|
+
xh = Xmlhash.parse(xml)
|
149
|
+
assert_equal "ISO-8859-1", xh['title'].encoding.to_s
|
150
|
+
|
151
|
+
xml = '<?xml version="1.0" encoding="ISO-8859-1"?>
|
152
|
+
<package><title>äÓþ</title></package>'
|
153
|
+
xml.encode!('US-ASCII')
|
154
|
+
xh = Xmlhash.parse(xml)
|
155
|
+
assert_equal "UTF-8", xh['title'].encoding.to_s
|
156
|
+
|
157
|
+
end
|
127
158
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xmlhash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pkg-config
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '3.
|
69
|
+
version: '3.3'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '3.
|
77
|
+
version: '3.3'
|
78
78
|
description: ! 'A small C module that wraps libxml2''s xmlreader to parse a XML
|
79
79
|
|
80
80
|
string into a ruby hash'
|