(munge s)
user> (defn foo [] (println "foo"))
#'user/foo
user> foo
#<user$foo user$foo@a0dc71>
user> (munge foo)
"user_DOLLARSIGN_foo_CIRCA_a0dc71"
(doseq [c (remove #(Character/isLetterOrDigit %) (map char (range 32 127)))]
(println c "->" (munge c)))
;; Prints:
->
! -> _BANG_
" -> _DOUBLEQUOTE_
# -> _SHARP_
$ -> $
% -> _PERCENT_
& -> _AMPERSAND_
' -> _SINGLEQUOTE_
( -> (
) -> )
* -> _STAR_
+ -> _PLUS_
, -> ,
- -> _
. -> .
/ -> _SLASH_
: -> _COLON_
; -> ;
< -> _LT_
= -> _EQ_
> -> _GT_
? -> _QMARK_
@ -> _CIRCA_
[ -> _LBRACK_
\\ -> _BSLASH_
] -> _RBRACK_
^ -> _CARET_
_ -> _
` -> `
{ -> _LBRACE_
| -> _BAR_
} -> _RBRACE_
~ -> _TILDE_