clj 0.0.4.1 → 0.0.4.2

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.
Files changed (2) hide show
  1. data/lib/clj/parser.rb +23 -9
  2. metadata +6 -6
@@ -147,20 +147,34 @@ class Parser < StringScanner
147
147
  ?u => nil,
148
148
  })
149
149
 
150
+ EMPTY_8BIT_STRING = ''
151
+
152
+ if EMPTY_8BIT_STRING.respond_to? :force_encoding
153
+ EMPTY_8BIT_STRING.force_encoding Encoding::ASCII_8BIT
154
+ end
155
+
150
156
  def parse_string
151
157
  return '' if self[1].empty?
152
158
 
153
159
  self[1].gsub(%r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n) do |c|
154
160
  if u = UNESCAPE_MAP[$&[1]]
155
- u
156
- else # \uXXXX
157
- bytes = EMPTY_8BIT_STRING.dup
158
- i = 0
159
- while c[6 * i] == ?\\ && c[6 * i + 1] == ?u
160
- bytes << c[6 * i + 2, 2].to_i(16) << c[6 * i + 4, 2].to_i(16)
161
- i += 1
162
- end
163
- JSON.iconv('utf-8', 'utf-16be', bytes)
161
+ next u
162
+ end
163
+
164
+ bytes = EMPTY_8BIT_STRING.dup
165
+
166
+ i = 0
167
+ while c[6 * i] == ?\\ && c[6 * i + 1] == ?u
168
+ bytes << c[6 * i + 2, 2].to_i(16) << c[6 * i + 4, 2].to_i(16)
169
+
170
+ i += 1
171
+ end
172
+
173
+ if bytes.respond_to? :force_encoding
174
+ bytes.force_encoding 'UTF-16be'
175
+ bytes.encode 'UTF-8'
176
+ else
177
+ bytes
164
178
  end
165
179
  end
166
180
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.1
4
+ version: 0.0.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-03 00:00:00.000000000 Z
12
+ date: 2012-02-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &15412780 !ruby/object:Gem::Requirement
16
+ requirement: &15415840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *15412780
24
+ version_requirements: *15415840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &15412180 !ruby/object:Gem::Requirement
27
+ requirement: &15414800 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *15412180
35
+ version_requirements: *15414800
36
36
  description:
37
37
  email: meh@paranoici.org
38
38
  executables: []