# HG changeset patch # User Oleksandr Gavenko # Date 1357511841 -7200 # Node ID 82ae06b5d7c41ccb2eb4bfc564b1003aeef6f403 # Parent e88896e74332a036e8acf391db74662bcede13d6 Add function: "Encode string to percent encoding." diff -r e88896e74332 -r 82ae06b5d7c4 .emacs-my --- a/.emacs-my Thu Dec 20 23:42:25 2012 +0200 +++ b/.emacs-my Mon Jan 07 00:37:21 2013 +0200 @@ -945,12 +945,32 @@ (cdr s)) )) 'utf-8)) -(defun my-percent-decode-region (arg beg end) +(defun my-percent-decode-region (beg end &optional arg) "Convert percent encoded string to native." - (interactive "P\nr") + (interactive "r\nP") (let ( (result (my-percent-decode (buffer-substring-no-properties beg end))) ) (if (not arg) - (message result) + result + (delete-region beg end) + (insert result)) + ) ) + +(defun my-percent-encode (str) + (apply 'concat + (mapcar + (lambda (ch) (if (or (and (<= ?a ch) (>= ?z ch)) + (and (<= ?A ch) (>= ?Z ch)) + (memq ch '(?- ?_ ?. ?~))) + (char-to-string ch) + (format "%%%02X" ch))) + (encode-coding-string str 'utf-8) ))) + +(defun my-percent-encode-region (beg end &optional arg) + "Encode string to percent encoding." + (interactive "r\nP") + (let ( (result (my-percent-encode (buffer-substring-no-properties beg end))) ) + (if (not arg) + result (delete-region beg end) (insert result)) ) )