| @@ -8,9 +8,9 @@ · 7 unmodified lines |
| 8 | (when (equal? m "!") | 8 | (when (equal? m "!") |
| 9 | (return (void (read s)))) | 9 | (return (void (read s)))) |
| 10 | `(cons ',(case m ("$" 'usd) ("€" 'eur)) ,(read s))) | 10 | `(cons ',(case m ("$" 'usd) ("€" 'eur)) ,(read s))) |
| 11 | (set-reader-macro! #\$ capital) | 11 | (assert (void? (set-reader-macro! #\$ capital))) |
| 12 | (set-reader-macro! #\€ capital) | 12 | (assert (void? (set-reader-macro! #\€ capital))) |
| 13 | (set-reader-macro! #\! capital) | 13 | (assert (void? (set-reader-macro! #\! capital))) |
| 14 | (assert (eq? (get-reader-macro #\$) capital)) | 14 | (assert (eq? (get-reader-macro #\$) capital)) |
| 15 | (assert (eq? (get-reader-macro #\€) capital)) | 15 | (assert (eq? (get-reader-macro #\€) capital)) |
| 16 | (assert (eq? (get-reader-macro #\!) capital))) | 16 | (assert (eq? (get-reader-macro #\!) capital))) |
| @@ -19,7 +19,7 @@ · 2 unmodified lines |
| 19 | (assert (equal? €20 '(eur . 20))) | 19 | (assert (equal? €20 '(eur . 20))) |
| 20 | (assert (equal? (list $10 !10) '((usd . 10)))) | 20 | (assert (equal? (list $10 !10) '((usd . 10)))) |
| 21 | (assert (not (list !10))) | 21 | (assert (not (list !10))) |
| 22 | (set-reader-macro! "$" NIL)) ; the fall of the US empire | 22 | (assert (void? (set-reader-macro! "$" NIL)))) ; the fall of the US empire |
| 23 | #.(begin | 23 | #.(begin |
| 24 | (assert (equal? $10 'nothing))) | 24 | (assert (equal? $10 'nothing))) |
| 25 | | 25 | |
| @@ -31,8 +31,8 @@ · 5 unmodified lines |
| 31 | (subseq m 1) | 31 | (subseq m 1) |
| 32 | (str (subseq m 1) (read s)))]} | 32 | (str (subseq m 1) (read s)))]} |
| 33 | `(cons 'path ,path))) | 33 | `(cons 'path ,path))) |
| 34 | (set-reader-macro! "@." to-path) | 34 | (assert (void? (set-reader-macro! "@." to-path))) |
| 35 | (set-reader-macro! "@/" to-path) | 35 | (assert (void? (set-reader-macro! "@/" to-path))) |
| 36 | (assert (eq? (get-reader-macro "@.") to-path)) | 36 | (assert (eq? (get-reader-macro "@.") to-path)) |
| 37 | (assert (eq? (get-reader-macro "@/") to-path))) | 37 | (assert (eq? (get-reader-macro "@/") to-path))) |
| 38 | #.(begin | 38 | #.(begin |
| @@ -49,16 +49,16 @@ · 10 unmodified lines |
| 49 | | 49 | |
| 50 | ;; read-list-until and reader macros | 50 | ;; read-list-until and reader macros |
| 51 | #.(begin | 51 | #.(begin |
| 52 | (set-reader-macro! "<<" | 52 | (assert (void? (set-reader-macro! "<<" |
| 53 | (λ (s m) `(list ,@(read-list-until ">>" s)))) | 53 | (λ (s m) `(list ,@(read-list-until ">>" s)))))) |
| 54 | (def s (buffer "<<€1 €2 €3>>1 2")) | 54 | (def s (buffer "<<€1 €2 €3>>1 2")) |
| 55 | (assert (equal? (eval (read s)) '((eur . 1) (eur . 2) (eur . 3)))) | 55 | (assert (equal? (eval (read s)) '((eur . 1) (eur . 2) (eur . 3)))) |
| 56 | (assert (equal? (read s) 1))) | 56 | (assert (equal? (read s) 1))) |
| 57 | | 57 | |
| 58 | ;; two reader macros with read-list-until within each other | 58 | ;; two reader macros with read-list-until within each other |
| 59 | #.(begin | 59 | #.(begin |
| 60 | (set-reader-macro! "%%" | 60 | (assert (void? (set-reader-macro! "%%" |
| 61 | (λ (s r) `(list ,@(read-list-until "$$" s)))) | 61 | (λ (s r) `(list ,@(read-list-until "$$" s)))))) |
| 62 | (def s (buffer "<<%%1$$>>")) | 62 | (def s (buffer "<<%%1$$>>")) |
| 63 | (assert (equal? (eval (read s)) '((1)))) | 63 | (assert (equal? (eval (read s)) '((1)))) |
| 64 | (def s (buffer "<<%% 1 >> $$")) | 64 | (def s (buffer "<<%% 1 >> $$")) |