Encode any text instead of going through a pretty-printer.

This commit is contained in:
Eli Barzilay 2010-10-14 13:44:03 -04:00
parent dc25ef2d26
commit 42e76eaaf4
5 changed files with 122 additions and 103 deletions

View File

@ -1,12 +1,35 @@
#lang s-exp framework/private/decode #lang s-exp framework/private/decode
bVTbjtsgEP2VqatIdlWyadSLtFIv6lOf+wErgZkYthi8gJPN33cAO3GyfonjM2fOXDi49vgy
ao9QGy2g6j3KbQhV+Vc1E9waHkLCZ2C0Oi7fo3Om5EkfWoU9Vg3FJB60RfBOiDMTkp9/Eh8j jVTJbtswEL3rK6YujJBFmbhGFyBAF/TUc69BAlDiWGJCkSpJ2/HfdyhKka04TXmwoZk3bxa+Y
1LWEOmDrrAzsh+SR6rej92gjm+CmSQLcEvE7CRGF9c5GBbKBb80VJNEE7Qt/Kih0x0Rf0m+K c E 8 / t l q j
9/wfMieesY1Eij0fNlCLURvJBk7ideuMoaB2tgAVN50zX3c0aSXk9nnoqptKRsdocL0YTfqB 9 \ B \ \ \ \ \6V\ \ \ \ \OB\ \l9\ \ \ \ \YD\xq\jI\yh\ P
Rk2x1boPaQeUNHXbYWQnLaNq4HOzGlWoOxVTOHfQruky2W5A9JmR84kWKDe03CDstvsv+WcR F j a 3 U E 5 Y e v 6 J z h R c
lZ6fWEmei+1gd5c+xd8fmll88O6oJUI6+l+XhbDkjIJBrfvB+QizJR4T/ERUfH2LswKGp+tu EUb\rRF \8K\4s\ \ D6J\U8v \C9\AG\ \AGI 7AbB \ \ \ \ S xg5\awK
B8UDfoKj0/IO3N+BZQ8WT7k8O3je4wbCOKDfECvbd3qlrqxCT02mjYoxxnzUFk2aOFGYtiFy 4 p u S E Y F V W + / R R j
G3W25dJVmZwErvGCbdI1uBhhRdjwnkyRrJYl8BibxU1YnqLU3LhuA9UfPgxn+K19VGSnj/A3 G \YO\b/\ lBK\cA\ \ \ \aQ\ \ \n8\ \ \ FVi\Ci\db\Z2\ \ID\i8\ I
WetdlY4g9bTM6TEE3tHE0/HJu/jc5J3mRVIuGgS8nDwE5U65HtQvo0vbEM5L9AtzTZxYLkWI V P R q J O p j W n M +
ZzLZTJZIE6Jsmit/ZTet4rZD1iq6hPQBuLaS9kafgjDv3UxCJ0Wsm4t2MRKpP+BrpEqP5bHw Utd\S3\ \ \ \ \ \ \Kt\hg\YTqvo\D2\vl\Aw\pX\ 3mM\VC\ \R1\b2\ S 1
A6x6JG/zPw== H H 3 n L r T Z K d J
L \yscoZ\Qyjtb\DY\sp\Km\d+\ \ \ \bxacF\iU\ \ \ 6 \vK\+q\ \ \ x
e n y Y 2 O 0 e A r + W k U
7 \ \ 2 \ \gW\Zf\tK\KU\eH\ \ \ \Xa\ \ X \ BEV\/u\ \ \ \ D
m q M Y q 9 V b D h 8 5 P 8 d 0
aCum5h\ \C+O0s\ 6EZ\V5\6o\Rq\lp\ \ \ \C2Y \ \6Xk \ \ p \ l 7
W s I H o g y V N A i r y / W
n /uc\cT\ \ H \ \m5F5lu \ LGY\ \Fq\5c\IB\+Db \ \ \ \ z \ R
G A C u i H 3 H m 3 0 w
ohK\e3\HNHWR\ \ dFh\ka\ \ \wF\ \Mt\53\ z \ \ \ \SZ\eh\arDF6\ 2
S / I z a G j 8 8 d
I \ht\DDxgusWt\kw\A+\ w \c1\rN\re\ u \5N\c/\M4r4v\Qm\y8\ \ \bH\EJY
d u h X / Y d s
L \wx\2Z\Jb\Yto26\Gl\10\p2U2x\ \ \h7\ \ \eV\k0Q8u\sB\ w ttQ5Q2\ 6
n 5 N + O j L e Y f Z 5
ODhg \ \ \ \x0HZM\8kJnas \zN\H2\ \Qv6 \ \ \ \ \ \ Mly\2p\Nq1
D 8 g P u 4 o n O p n 0 +
F \o3S \0rh6C\ Ytf\su\ \ s \ \O8\ \FP\72J D03\8P\vt\AZ\vFula\ b
2 d 6 P S F o M Q R Z 0 w Q H
o \ \ah\ \ \ \ \/g\Yc\ \ e \ \59\ \ \ \ mekqmzi \ zHvD 5
C P C o T Q u H 2 q 8 f x K
5 \XP\BSucV\ \ \+j\no\lC\P2\ \ \78\Lk\iw\da\kw\u6\ \ \PZ\ob\ q s
m Z o 5 7
fBFSNtDWKqqHXiB7IqWDy0btkw9A+GJ7Z2L4h2Oy9YU9ipwxX+Bgp23X+OxIsnBVxmgMv/gI=

View File

@ -1,32 +1,34 @@
#lang s-exp framework/private/decode #lang s-exp framework/private/decode
XY9BD TY+9Ds
sIgEEWv IwDIT3P
8pfMgqRV MWN9hCJA
E3Whn hIwAA
qXtT +CGN
GOjg rGFR
AE08 UkRW
fYWp lA4u
62Nu 1JaF
897D K6ne
PMxjx /zz1n
heAwtc R0w/v
7G3Lzfs 3gis73R
CN4 d0m j6s8Zto
4K0G giGp jxn oU0
R+8w JgC4 k2Cl yEjX
MA0w rvkk OwFR cmBh
XCTR 5GkC mBVA Dwmg
56T Peux i6lD RKO0
e8Yo PtsJ gzOj Pk1l
E5X7 jWeY +/Je XNDZ
E74T 1gWf Zr6m iThT
ryiR 4OjH OwM6 glKb
y/tK Waem toML NyTJ
1XMZ aIU9 sPz3 05XJ
ttXK LuXV jZd4 kaCE
1hU2 x7WO iot+ UbDD
f75G vdLLj ZhUb Cp/f
9Xuc CD6A yLxa YX1Y
\\\\ A== 8vnh zCug
WvD5 +7J/C
+wj/ \wI=;;

View File

@ -1,6 +1,6 @@
#lang scheme/base #lang racket/base
(require (for-syntax scheme/base file/gunzip net/base64)) (require (for-syntax racket/base file/gunzip net/base64))
(provide (except-out (all-from-out scheme/base) #%module-begin) (provide (except-out (all-from-out racket/base) #%module-begin)
(rename-out [module-begin #%module-begin])) (rename-out [module-begin #%module-begin]))
(define-syntax (module-begin stx) (define-syntax (module-begin stx)

View File

@ -1,43 +1,34 @@
#lang scheme/base #lang racket/base
(require scheme/cmdline scheme/string scheme/match scheme/pretty (require racket/cmdline racket/string file/gzip file/gunzip net/base64)
file/gzip file/gunzip net/base64)
(define (encode-exprs exprs) (define do-lang? #f)
(define in
(open-input-string
(string-join (map (lambda (x) (format "~s" x)) exprs) " ")))
(define out (open-output-bytes))
(deflate in out)
(base64-encode (get-output-bytes out)))
(define (encode-module) (define (encode/decode-text who lang-from lang-to convert1 convert2)
(define mod (parameterize ([read-accept-reader #t]) (read))) (when do-lang?
(when (eof-object? mod) (error 'encode-module "missing module")) (let ([l (cadr (or (regexp-match #rx"^ *#lang +(.*[^ ]) *$" (read-line))
(match mod (error who "missing #lang line")))])
[(list 'module m 'scheme/base (list '#%module-begin exprs ...)) (if (equal? l lang-from)
(write-bytes #"#lang s-exp framework/private/decode\n") (printf "#lang ~a\n" lang-to)
(write-bytes (regexp-replace* #rx"\r\n" (encode-exprs exprs) #"\n"))] (error who "bad #lang: expected ~s, got ~s" lang-from l))))
[else (error 'encode-module "cannot parse module, must use scheme/base")])) (define O (open-output-bytes))
(convert1 (current-input-port) O)
(convert2 (open-input-bytes (get-output-bytes O)) (current-output-port))
(flush-output))
(define (decode-module) (define (encode-text)
(define mod (parameterize ([read-accept-reader #t]) (read))) (encode/decode-text
(when (eof-object? mod) (error 'encode-module "missing module")) 'encode-text "racket/base" "s-exp framework/private/decode"
(match mod deflate base64-encode-stream))
[(list 'module m 'framework/private/decode
(list '#%module-begin exprs ...))
(write-bytes #"#lang scheme/base\n")
(let* ([data (format "~a" exprs)]
[data (substring data 1 (sub1 (string-length data)))]
[data (string->bytes/utf-8 data)]
[in (open-input-bytes (base64-decode data))]
[out (open-output-string)]
[out (begin (inflate in out) (get-output-string out))]
[exprs (read (open-input-string (string-append "(" out ")")))])
(for ([expr (in-list exprs)])
(pretty-print expr)))]
[else (error 'decode-module "cannot parse module, must use scheme/base")]))
(command-line #:once-any (define (decode-text)
["-e" "encode" (encode-module) (exit)] (encode/decode-text
["-d" "decode" (decode-module) (exit)]) 'decode-text "s-exp framework/private/decode" "racket/base"
base64-decode-stream inflate))
(command-line
#:once-each
["-l" "translate lang line" (set! do-lang? #t)]
#:once-any
["-e" "encode" (encode-text) (exit)]
["-d" "decode" (decode-text) (exit)])
(printf "Use `-h' for help\n") (printf "Use `-h' for help\n")

View File

@ -1,22 +1,25 @@
#lang s-exp framework/private/decode #lang s-exp framework/private/decode
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
2PGeTmarKfxtVmQYsuJC8qTG/hfDl/Mf +x3+xSQWcbusz0i6U2rypHsKkJAVBKFQd3TdDolA6CrOkpoW4Usr5sGqpQQUcvMQnSXrILQ3
4Z6hyYp0e6e5V4jPRYoamot3NRXrisn3YkhPPDMdNRpBc9SW1sIVFXA6GvYZXbl2mEqte3i7
rFSI+7v+1RrJ5n3b6Atdb4Ljw73qR8SkKQy2mlIsCMOPsFFihwqSv+EffmabUJAn3dBzvrxw
JqiQ6zw/mTWYvZV7YQUJaoTlFOjlbm/Bh/28h8773BnTHhw4sua5Qwmv5uafRv8B