queue_classic 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/queue_classic/okjson.rb +40 -15
- data/readme.md +2 -1
- metadata +3 -3
data/lib/queue_classic/okjson.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module QC
|
2
|
-
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# Copyright 2011, 2012 Keith Rarick
|
3
5
|
#
|
4
6
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
7
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -261,6 +263,12 @@ module OkJson
|
|
261
263
|
def unquote(q)
|
262
264
|
q = q[1...-1]
|
263
265
|
a = q.dup # allocate a big enough string
|
266
|
+
rubydoesenc = false
|
267
|
+
# In ruby >= 1.9, a[w] is a codepoint, not a byte.
|
268
|
+
if a.class.method_defined?(:force_encoding)
|
269
|
+
a.force_encoding('UTF-8')
|
270
|
+
rubydoesenc = true
|
271
|
+
end
|
264
272
|
r, w = 0, 0
|
265
273
|
while r < q.length
|
266
274
|
c = q[r]
|
@@ -298,7 +306,12 @@ module OkJson
|
|
298
306
|
end
|
299
307
|
end
|
300
308
|
end
|
301
|
-
|
309
|
+
if rubydoesenc
|
310
|
+
a[w] = '' << uchar
|
311
|
+
w += 1
|
312
|
+
else
|
313
|
+
w += ucharenc(a, w, uchar)
|
314
|
+
end
|
302
315
|
else
|
303
316
|
raise Error, "invalid escape char #{q[r]} in \"#{q}\""
|
304
317
|
end
|
@@ -308,6 +321,8 @@ module OkJson
|
|
308
321
|
# Copy anything else byte-for-byte.
|
309
322
|
# Valid UTF-8 will remain valid UTF-8.
|
310
323
|
# Invalid UTF-8 will remain invalid UTF-8.
|
324
|
+
# In ruby >= 1.9, c is a codepoint, not a byte,
|
325
|
+
# in which case this is still what we want.
|
311
326
|
a[w] = c
|
312
327
|
r += 1
|
313
328
|
w += 1
|
@@ -442,6 +457,10 @@ module OkJson
|
|
442
457
|
t = StringIO.new
|
443
458
|
t.putc(?")
|
444
459
|
r = 0
|
460
|
+
|
461
|
+
# In ruby >= 1.9, s[r] is a codepoint, not a byte.
|
462
|
+
rubydoesenc = s.class.method_defined?(:encoding)
|
463
|
+
|
445
464
|
while r < s.length
|
446
465
|
case s[r]
|
447
466
|
when ?" then t.print('\\"')
|
@@ -456,21 +475,13 @@ module OkJson
|
|
456
475
|
case true
|
457
476
|
when Spc <= c && c <= ?~
|
458
477
|
t.putc(c)
|
459
|
-
when
|
478
|
+
when rubydoesenc
|
479
|
+
u = c.ord
|
480
|
+
surrenc(t, u)
|
481
|
+
else
|
460
482
|
u, size = uchardec(s, r)
|
461
483
|
r += size - 1 # we add one more at the bottom of the loop
|
462
|
-
|
463
|
-
t.print('\\u')
|
464
|
-
hexenc4(t, u)
|
465
|
-
else
|
466
|
-
u1, u2 = unsubst(u)
|
467
|
-
t.print('\\u')
|
468
|
-
hexenc4(t, u1)
|
469
|
-
t.print('\\u')
|
470
|
-
hexenc4(t, u2)
|
471
|
-
end
|
472
|
-
else
|
473
|
-
# invalid byte; skip it
|
484
|
+
surrenc(t, u)
|
474
485
|
end
|
475
486
|
end
|
476
487
|
r += 1
|
@@ -480,6 +491,20 @@ module OkJson
|
|
480
491
|
end
|
481
492
|
|
482
493
|
|
494
|
+
def surrenc(t, u)
|
495
|
+
if u < 0x10000
|
496
|
+
t.print('\\u')
|
497
|
+
hexenc4(t, u)
|
498
|
+
else
|
499
|
+
u1, u2 = unsubst(u)
|
500
|
+
t.print('\\u')
|
501
|
+
hexenc4(t, u1)
|
502
|
+
t.print('\\u')
|
503
|
+
hexenc4(t, u2)
|
504
|
+
end
|
505
|
+
end
|
506
|
+
|
507
|
+
|
483
508
|
def hexenc4(t, u)
|
484
509
|
t.putc(Hex[(u>>12)&0xf])
|
485
510
|
t.putc(Hex[(u>>8)&0xf])
|
data/readme.md
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: queue_classic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-08-22 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pg
|
16
|
-
requirement: &
|
16
|
+
requirement: &15604460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 0.11.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *15604460
|
25
25
|
description: queue_classic is a queueing library for Ruby apps. (Rails, Sinatra, Etc...)
|
26
26
|
queue_classic features asynchronous job polling, database maintained locks and no
|
27
27
|
ridiculous dependencies. As a matter of fact, queue_classic only requires pg.
|