diff --git a/sms.fnl b/sms.fnl index c5ea156..308b752 100644 --- a/sms.fnl +++ b/sms.fnl @@ -20,12 +20,12 @@ (test= (+ 5 4) 9) -(fn escape-for-logging [s] - (s:gsub "%c" (fn [x] (.. "{" (string.byte x) "}")))) +(fn escape-readably [s] + (s:gsub "%c" (fn [x] (string.format "\\u{%.3x}" (string.byte x))))) (fn tx [fd s] (write fd s) - (print (.. ">>> " (escape-for-logging s))) + (print (.. ">>> " (escape-readably s))) (nanosleep {:tv_sec 0 :tv_nsec (* 10 1000 1000)})) (fn chars [i] @@ -38,18 +38,21 @@ (fn unicode->gsm [s] (s:gsub "." (fn [c] (chars (. gsm-char (string.byte c)))))) -;(print (escape-for-logging (unicode-to-gsm "hello"))) -;(print (escape-for-logging (unicode-to-gsm "{he@llo}€"))) +(test= (unicode->gsm "abc123") "abc123") +(test= (unicode->gsm "abc{123}") "abc\x1b(123\x1b)") + +;(print (escape-readably(unicode-to-gsm "hello"))) +;(print (escape-readably(unicode-to-gsm "{he@llo}€"))) (fn expect [fd pattern fail-pattern] (let [b (read fd 1024)] (if (> (# b) 0) (do - (print (.. "<<< " (escape-for-logging b))) + (print (.. "<<< " (escape-readably b))) (if (string.find b pattern) (do (print "found" pattern) true) (and fail-pattern (string.find b fail-pattern)) - (error (.. "Expected " pattern ", got " (escape-for-logging b))) + (error (.. "Expected " pattern ", got " (escape-readably b))) (expect fd pattern))) nil)))