[前][次][番号順一覧][スレッド一覧]

ruby-changes:41504

From: nobu <ko1@a...>
Date: Mon, 18 Jan 2016 22:49:17 +0900 (JST)
Subject: [ruby-changes:41504] nobu:r53578 (trunk): ruby-additional.el: ruby-decode-unicode

nobu	2016-01-18 22:49:51 +0900 (Mon, 18 Jan 2016)

  New Revision: 53578

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53578

  Log:
    ruby-additional.el: ruby-decode-unicode
    
    * misc/ruby-additional.el (ruby-decode-unicode): new function to
      convert escaped Unicode to raw string.

  Modified files:
    trunk/misc/ruby-additional.el
Index: misc/ruby-additional.el
===================================================================
--- misc/ruby-additional.el	(revision 53577)
+++ misc/ruby-additional.el	(revision 53578)
@@ -106,7 +106,7 @@ Emacs to Ruby." https://github.com/ruby/ruby/blob/trunk/misc/ruby-additional.el#L106
                      (t (when ruby-insert-encoding-magic-comment
                           (insert "# -*- coding: " coding-system " -*-\n"))))))))
 
-     (define-key ruby-mode-map "\C-cU" 'ruby-encode-unicode)
+     (define-key ruby-mode-map "\C-cU" 'ruby-encode-decode-unicode)
 
      (defun ruby-encode-unicode (beg end)
        "Convert non-ascii string in the given region to \\u{} form."
@@ -131,6 +131,32 @@ Emacs to Ruby." https://github.com/ruby/ruby/blob/trunk/misc/ruby-additional.el#L131
 	   (setq str (mapconcat f str sep))
 	   (delete-region (match-beginning 0) (match-end 0))
 	   (insert b str e))))
+
+     (defun ruby-decode-unicode (beg end)
+       "Convert escaped Unicode in the given region to raw string."
+       (interactive "r")
+       (setq end (set-marker (make-marker) end))
+       (goto-char beg)
+       (while (and (< (point) end)
+		   (re-search-forward "\\\\u\\([0-9a-fA-F]\\{4\\}\\)\\|\\\\u{\\([0-9a-fA-F \t]+\\)}" end t))
+	 (let ((b (match-beginning 0)) (e (match-end 0))
+	       (s (match-string-no-properties 1)))
+	   (if s
+	       (setq s (cons s nil))
+	     (goto-char (match-beginning 2))
+	     (while (looking-at "[ \t]*\\([0-9a-fA-F]+\\)")
+	       (setq s (cons (match-string-no-properties 1) s))
+	       (goto-char (match-end 0))))
+	   (setq s (mapconcat (lambda (c) (format "%c" (string-to-int c 16)))
+			      (nreverse s) ""))
+	   (delete-region b e)
+	   (insert s))
+	 ))
+
+     (defun ruby-encode-decode-unicode (dec beg end)
+       "Convert Unicode <-> \\u{} in the given region."
+       (interactive "P\nr")
+       (if dec (ruby-decode-unicode beg end) (ruby-encode-unicode beg end)))
      ))
 
 ;; monkey-patching ruby-mode.el in Emacs 24, as r49872.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]