aboutsummaryrefslogtreecommitdiffstats
path: root/zencoding-mode.el
diff options
context:
space:
mode:
authorRon Panduwana <panduwana@gmail.com>2011-02-21 12:21:03 +0700
committerRon Panduwana <panduwana@gmail.com>2011-02-21 12:21:03 +0700
commit97d7af96844481083b4bbebcf9af71bfbdcccfd2 (patch)
tree83ea751ba7df06e7f01b96e7900f2fe45e960841 /zencoding-mode.el
parent8ba7c90eaf2d1255a667bf43a376b2de580ef421 (diff)
downloademmet-mode-97d7af96844481083b4bbebcf9af71bfbdcccfd2.tar.lz
emmet-mode-97d7af96844481083b4bbebcf9af71bfbdcccfd2.tar.xz
emmet-mode-97d7af96844481083b4bbebcf9af71bfbdcccfd2.zip
Added filter: escape XML-unsafe characters (|e).
Diffstat (limited to 'zencoding-mode.el')
-rw-r--r--zencoding-mode.el18
1 files changed, 17 insertions, 1 deletions
diff --git a/zencoding-mode.el b/zencoding-mode.el
index 123cdb3..3ae06d8 100644
--- a/zencoding-mode.el
+++ b/zencoding-mode.el
@@ -392,7 +392,8 @@
'("html" (zencoding-primary-filter zencoding-make-html-tag)
"c" (zencoding-primary-filter zencoding-make-commented-html-tag)
"haml" (zencoding-primary-filter zencoding-make-haml-tag)
- "hic" (zencoding-primary-filter zencoding-make-hiccup-tag)))
+ "hic" (zencoding-primary-filter zencoding-make-hiccup-tag)
+ "e" (zencoding-escape-xml)))
(defun zencoding-primary-filter (input proc)
"Process filter that needs to be executed first, ie. not given output from other filter."
@@ -507,6 +508,18 @@
(concat prefix body suffix))
""))
+(defun zencoding-escape-xml (input proc)
+ "Escapes XML-unsafe characters: <, > and &."
+ (replace-regexp-in-string
+ "<" "&lt;"
+ (replace-regexp-in-string
+ ">" "&gt;"
+ (replace-regexp-in-string
+ "&" "&amp;"
+ (if (stringp input)
+ input
+ (zencoding-process-filter (zencoding-default-filter) input))))))
+
(defun zencoding-transform (ast-with-filters)
"Transform AST (containing filter data) into string."
(let ((filters (cadr ast-with-filters))
@@ -739,6 +752,9 @@
" [:a [:b]]"
" [:p"
" [:b]]]")
+ ;; Filter: escape
+ ("script src=&quot;|e" "&lt;script src=\"&amp;quot;\"&gt;"
+ "&lt;/script&gt;")
)))
(mapc (lambda (input)
(let ((expected (mapconcat 'identity (cdr input) "\n"))