Diff
1diff --git a/plugins/urltools/urltools.plugin.zsh b/plugins/urltools/urltools.plugin.zsh
2index 4ddfff8ce23b6b0e5d0f6ab6c16ce5ada14389dd..22327334d369677644d599bb950522d88dd51fa0 100644
3--- a/plugins/urltools/urltools.plugin.zsh
4+++ b/plugins/urltools/urltools.plugin.zsh
5@@ -14,6 +14,9 @@ if [[ $(whence node) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD
6 elif [[ $(whence python) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xpython" ) ]]; then
7 alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1])"'
8 alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'
9+elif [[ $(whence xxd) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xshell" ) ]]; then
10+ function urlencode() {echo $@ | tr -d "\n" | xxd -plain | sed "s/\(..\)/%\1/g"}
11+ function urldecode() {printf $(echo -n $@ | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g')"\n"}
12 elif [[ $(whence ruby) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHOD" = "xruby" ) ]]; then
13 alias urlencode='ruby -r cgi -e "puts CGI.escape(ARGV[0])"'
14 alias urldecode='ruby -r cgi -e "puts CGI.unescape(ARGV[0])"'
15@@ -33,4 +36,4 @@ elif [[ $(whence perl) != "" && ( "x$URLTOOLS_METHOD" = "x" || "x$URLTOOLS_METHO
16 fi
17 fi
18
19-unset URLTOOLS_METHOD
20+unset URLTOOLS_METHOD