From 42e76eaaf4a34dd439bc34d586144ab6127e7b72 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Thu, 14 Oct 2010 13:44:03 -0400 Subject: [PATCH] Encode any text instead of going through a pretty-printer. --- collects/algol60/bd-tool.rkt | 45 +++++++++++++----- collects/framework/private/bday.rkt | 62 +++++++++++++------------ collects/framework/private/decode.rkt | 6 +-- collects/framework/private/encode.rkt | 67 ++++++++++++--------------- collects/htdp/show-queen.rkt | 45 +++++++++--------- 5 files changed, 122 insertions(+), 103 deletions(-) diff --git a/collects/algol60/bd-tool.rkt b/collects/algol60/bd-tool.rkt index 5d04df0aed..fd94bdb1e7 100644 --- a/collects/algol60/bd-tool.rkt +++ b/collects/algol60/bd-tool.rkt @@ -1,12 +1,35 @@ #lang s-exp framework/private/decode -bVTbjtsgEP2VqatIdlWyadSLtFIv6lOf+wErgZkYthi8gJPN33cAO3GyfonjM2fOXDi49vgy -ao9QGy2g6j3KbQhV+Vc1E9waHkLCZ2C0Oi7fo3Om5EkfWoU9Vg3FJB60RfBOiDMTkp9/Eh8j -1LWEOmDrrAzsh+SR6rej92gjm+CmSQLcEvE7CRGF9c5GBbKBb80VJNEE7Qt/Kih0x0Rf0m+K -9/wfMieesY1Eij0fNlCLURvJBk7ideuMoaB2tgAVN50zX3c0aSXk9nnoqptKRsdocL0YTfqB -Rk2x1boPaQeUNHXbYWQnLaNq4HOzGlWoOxVTOHfQruky2W5A9JmR84kWKDe03CDstvsv+WcR -lZ6fWEmei+1gd5c+xd8fmll88O6oJUI6+l+XhbDkjIJBrfvB+QizJR4T/ERUfH2LswKGp+tu -B8UDfoKj0/IO3N+BZQ8WT7k8O3je4wbCOKDfECvbd3qlrqxCT02mjYoxxnzUFk2aOFGYtiFy -G3W25dJVmZwErvGCbdI1uBhhRdjwnkyRrJYl8BibxU1YnqLU3LhuA9UfPgxn+K19VGSnj/A3 -WetdlY4g9bTM6TEE3tHE0/HJu/jc5J3mRVIuGgS8nDwE5U65HtQvo0vbEM5L9AtzTZxYLkWI -ZzLZTJZIE6Jsmit/ZTet4rZD1iq6hPQBuLaS9kafgjDv3UxCJ0Wsm4t2MRKpP+BrpEqP5bHw -A6x6JG/zPw== + +jVTJbtswEL3rK6YujJBFmbhGFyBAF/TUc69BAlDiWGJCkSpJ2/HfdyhKka04TXmwoZk3bxa+Y + c E 8 / t l q j +9 \ B \ \ \ \ \6V\ \ \ \ \OB\ \l9\ \ \ \ \YD\xq\jI\yh\ P +F j a 3 U E 5 Y e v 6 J z h R c +EUb\rRF \8K\4s\ \ D6J\U8v \C9\AG\ \AGI 7AbB \ \ \ \ S xg5\awK +4 p u S E Y F V W + / R R j +G \YO\b/\ lBK\cA\ \ \ \aQ\ \ \n8\ \ \ FVi\Ci\db\Z2\ \ID\i8\ I +V P R q J O p j W n M + +Utd\S3\ \ \ \ \ \ \Kt\hg\YTqvo\D2\vl\Aw\pX\ 3mM\VC\ \R1\b2\ S 1 +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= diff --git a/collects/framework/private/bday.rkt b/collects/framework/private/bday.rkt index 42dabb813e..7f6e68903b 100644 --- a/collects/framework/private/bday.rkt +++ b/collects/framework/private/bday.rkt @@ -1,32 +1,34 @@ #lang s-exp framework/private/decode - XY9BD - sIgEEWv - 8pfMgqRV - E3Whn - qXtT - GOjg - AE08 - fYWp - 62Nu - 897D - PMxjx - heAwtc - 7G3Lzfs - CN4 d0m - 4K0G giGp - R+8w JgC4 - MA0w rvkk - XCTR 5GkC - 56T Peux - e8Yo PtsJ - E5X7 jWeY - E74T 1gWf - ryiR 4OjH - y/tK Waem - 1XMZ aIU9 - ttXK LuXV - 1hU2 x7WO - f75G vdLLj - 9Xuc CD6A - \\\\ A== + TY+9Ds + IwDIT3P + MWN9hCJA + hIwAA + +CGN + rGFR + UkRW + lA4u + 1JaF + K6ne + /zz1n + R0w/v + 3gis73R + j6s8Zto + jxn oU0 + k2Cl yEjX + OwFR cmBh + mBVA Dwmg + i6lD RKO0 + gzOj Pk1l + +/Je XNDZ + Zr6m iThT + OwM6 glKb + toML NyTJ + sPz3 05XJ + jZd4 kaCE + iot+ UbDD + ZhUb Cp/f + yLxa YX1Y + 8vnh zCug + WvD5 +7J/C + +wj/ \wI=;; diff --git a/collects/framework/private/decode.rkt b/collects/framework/private/decode.rkt index 0944528ec1..6f21e0793a 100644 --- a/collects/framework/private/decode.rkt +++ b/collects/framework/private/decode.rkt @@ -1,6 +1,6 @@ -#lang scheme/base -(require (for-syntax scheme/base file/gunzip net/base64)) -(provide (except-out (all-from-out scheme/base) #%module-begin) +#lang racket/base +(require (for-syntax racket/base file/gunzip net/base64)) +(provide (except-out (all-from-out racket/base) #%module-begin) (rename-out [module-begin #%module-begin])) (define-syntax (module-begin stx) diff --git a/collects/framework/private/encode.rkt b/collects/framework/private/encode.rkt index 4e3c455c02..31b876d4be 100644 --- a/collects/framework/private/encode.rkt +++ b/collects/framework/private/encode.rkt @@ -1,43 +1,34 @@ -#lang scheme/base -(require scheme/cmdline scheme/string scheme/match scheme/pretty - file/gzip file/gunzip net/base64) +#lang racket/base +(require racket/cmdline racket/string file/gzip file/gunzip net/base64) -(define (encode-exprs exprs) - (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 do-lang? #f) -(define (encode-module) - (define mod (parameterize ([read-accept-reader #t]) (read))) - (when (eof-object? mod) (error 'encode-module "missing module")) - (match mod - [(list 'module m 'scheme/base (list '#%module-begin exprs ...)) - (write-bytes #"#lang s-exp framework/private/decode\n") - (write-bytes (regexp-replace* #rx"\r\n" (encode-exprs exprs) #"\n"))] - [else (error 'encode-module "cannot parse module, must use scheme/base")])) +(define (encode/decode-text who lang-from lang-to convert1 convert2) + (when do-lang? + (let ([l (cadr (or (regexp-match #rx"^ *#lang +(.*[^ ]) *$" (read-line)) + (error who "missing #lang line")))]) + (if (equal? l lang-from) + (printf "#lang ~a\n" lang-to) + (error who "bad #lang: expected ~s, got ~s" lang-from l)))) + (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 mod (parameterize ([read-accept-reader #t]) (read))) - (when (eof-object? mod) (error 'encode-module "missing module")) - (match mod - [(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")])) +(define (encode-text) + (encode/decode-text + 'encode-text "racket/base" "s-exp framework/private/decode" + deflate base64-encode-stream)) -(command-line #:once-any - ["-e" "encode" (encode-module) (exit)] - ["-d" "decode" (decode-module) (exit)]) +(define (decode-text) + (encode/decode-text + '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") diff --git a/collects/htdp/show-queen.rkt b/collects/htdp/show-queen.rkt index bde960a47f..b5c73df7cf 100644 --- a/collects/htdp/show-queen.rkt +++ b/collects/htdp/show-queen.rkt @@ -1,22 +1,25 @@ #lang s-exp framework/private/decode -rVbbjqQ2EP2VSq9WgnTIzGjzsFql038QKV8QGSja7oDNGNOXfci3p8rGYJieVTbKE7gup8rl -43JlFl9HZRGyVpWw6yzWPw/DLvzt8klctWIYWJ6TpLfmomqEQZpr8ToiahLW2CiN0Fu8KDMO -RWNFh/ChWVTVR8g8DlRCX8RAy0ZhW0N2KUojbA0fMoYf1FeE53x2fOrHslUVZEorB96SrdD9 -ANGRkhxc8dsFK2csZJ3oYSUJTnl08xGyoCta1CcnIxTbGF30QmmXpmDVRThyOqEDBed8drfY -rP5jSionq5yTlmgpb3IsqlahdoUPz+u6yucadCoUqzvzd4lsLmgtV5vTwgv5A14c6SujyS3j -/Q5IvySFjg5Gn455IiIHis9CPkvKPstIfEssOJMba2lx38jvLG/MqOvCaDxOqTW0VxSVLAba -tzKagEVX1oJ2C2e4wR2cVENxDR9JHleJZCU4418PZBFS2NNfsGRUUtwh5LCPEHI5tDQL3v+o -WyQuBVDisGiPdDKdyufVGbrz7E71VfP/2Z/gcs4+ygSYxFnH0MYFeP+zQvYnF6H9YoO9VLVF -Ec8oFIUOkBC68/fAPeJG0MczrivPVabYfzuxgflqWmMHIKxd2YrqL+oKrTpJd7LivoskI21t -xZXIXzmhTy1+gwDL7VF0a5y0SJdKY12U92OowqR+J/rUkt7RGkvxcZdvM8O2Vf2AgW/ZU8zt -Mxsy06JIBtGP0eDT0y/LUvplvuJyyDg7RN4dUso9yvBkqVm+qdz/mt+KIHPbenP+TWBKcRHt -iMTwLLsCn9OmTeVL17gWg8MestfRONbDFYIFZHKrkrBybo0hLVHtmQQ36rgNAXamHluToNxC -0493jqvqVTGBadeeOl/RmiMEqBxiavv495JvY5997Ps6tpxj37exzw9iyzT2fYot59hyFbuB -925WyGhP2pf8EeIzZMW0YLBNN8wTBLVBuKUItxXC0mgjRYaxR1tovCaE2RK3979Q+k9CW7bq -+RZ4gZPIq4KfXCAY6p62qPzd9lYTyksgCM0NplXxNV7wSjsOMkH064eYwTIktcVMtvKN9pJc -XoY4xNfhEJ+GA1cw2BZTew7S/STdR2ka8sHM4yedlShbxqZ5mJlUf1KJSjwpvXl5uAjH2ZhE -PODMHfyWr8xui0lpDD03mmWU5Tzf0KORFC4Z4nZ466k/YA3Cz09gmvk7YQ1A21G6H91PcDLu -C/yNuwU5tEY9tu2S7vvR6JQDFHQjBSmRwobh6apoIhP+seToXEhqkrukGSneb5jcluEuKdqb -Ch0g9UkK8q/qwalOrlQLXpmR5qpQHWegE66SwB026tlauiEuldaT+fC2cEmX1Uh09YOuHzM8 -o5ZXJ9GGmcgTjpyu4fcj77nEFna/wx+8h4EfG9o45f3pmTugRH7A/WIeYCaSehge0nthuYnH -2PGeTmarKfxtVmQYsuJC8qTG/hfDl/Mf +zVdLk6M2EL77V3TY2lrIhJrZ2hxSqUx8yTlVObt8kKFt5BUSI4Qfe8hvT7cEWGA8u8ec0ONT +61PTz1V6MrKEZLUC+MvA1XRgUSh1hbPQDpwBZcxXEDSsZAuFKXG9WiXZapVafOukRagtlmBF +8RXdc6FE2/JmY81JlghtZc75W4eoebXEvdQIjcWTNF2b762oET7so73iIzFJvRwohD6Jlhdo +aS9RlbA55TsjbAmfPqTZFjat/Ibwss0CJsh4brqdkgWkUksHHh72CdGi+wkGGamSrcv/PGHh +jIW0Fg1MVsLRbHrY35gGRK5QH1w1CLwhjc4bIbXLZsSsPAlHxw/oQMIxGwVZ3E/GA0WZEaoX +InWFll5Eh/NCSdQu92R4XhZZrKa0lqxW+h75O2VhTmgt/xymiSeSA3hyI/fC6LIfA2xS1kyL +umQM1PRX9WGdRUt0nFjxYjaeIs3SA9MN7V8iKBO98F+jyXW2fuX1vel0mRuNa2K9jeTxw0gz +KIoqb0lL0uh4k+4T9a4UpCM4wgWu3lrzc/hUE0GMPleoIRV0ffrHK+EDzycahXNZ5jeuEIg+ +DQKrLJvLGswipu4WQJ1WSCYdLiXPEWpNFlDT/x1mR6iPC+KHC+iPynd2j2QnS7s3S5xxHxjd +iE+PTxlr4wJZP1jgOZJkb35EcWkvJriN7G60DoUiGF1kXuEHkmnShfUxm9w+uS6Wv33gB6sZ +kX4eTLgsvLeyg90M8rEx/rghMsu8MMrYFuiSZKcohCaQKHmo3MGKazJDkzoIV1pxpghROKEP +Cr9zRVDTEGymHiMp4LiKgr1DjWW+u66DMu+hj7lS5E9+FGssMcZkZjnTd6FSsmlxLpEdM30e +3vnbnfF5Bx0A1RLg5+Hwl+dfH21WfjNbUCB7QNBN+jo47euSvz56+8FSAkz+9y8fQ8QsX/UO +MTd62Eeukp+E6pDCxSY9Q5UFp4myVOw9wbPOeeuwgfStM45hcIYAhE0136pgJqOXQsUJwTaS +SgDYXCgd70lybcpOmUjcZawQhrNDbOPf6VGz2BcY9przrvINrVlDuCKDgfvTMPqcZdv72BZR +PHqK1ynFaqR4nVO8I3pcInpPt4rpXnu61Ui3eoduL2wPP5REx7v9+57oyOcHkB54T+sF0ryf +MKN3T09y8EL6GWjIhzQWfqMncPkOgUldEDtJ2zVoc428fCtgZzGg8UPY+Q8fHP2ecQ2HF7/g +KuRZzgUokCBKyTYvfHj2qF7OZ/jUGiVDqTkRtbNdW0XC/HxRXEAGRqO4+AXvpYU4GHJp+BoK +Ez9YrkFoh7Qcqt28T9ge7/8Wrz4NqxMat+Zg7A18PzDtF9Jbh3Er9ae1C+tgPe0DbuQIwXX/ +mLcv2eRUP2XIzhgqRTSvEf+44E+pjvCqHKnE1yR4aShgUpMkfHsBZj9+e5kt0LOkbjr3CxyM ++x3+xSQWcbusz0i6U2rypHsKkJAVBKFQd3TdDolA6CrOkpoW4Usr5sGqpQQUcvMQnSXrILQ3 +4Z6hyYp0e6e5V4jPRYoamot3NRXrisn3YkhPPDMdNRpBc9SW1sIVFXA6GvYZXbl2mEqte3i7 +rFSI+7v+1RrJ5n3b6Atdb4Ljw73qR8SkKQy2mlIsCMOPsFFihwqSv+EffmabUJAn3dBzvrxw +JqiQ6zw/mTWYvZV7YQUJaoTlFOjlbm/Bh/28h8773BnTHhw4sua5Qwmv5uafRv8B