clj 0.0.4.1 → 0.0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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: []