aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--conf/preferences.json125
-rw-r--r--conf/snippets.json379
-rw-r--r--src/html-abbrev.el106
-rw-r--r--src/preferences.el566
-rw-r--r--src/snippets.el275
-rw-r--r--src/test.el196
-rwxr-xr-xtools/json2hash2
-rw-r--r--zencoding-mode.el947
9 files changed, 1776 insertions, 821 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f5711cb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+memo* \ No newline at end of file
diff --git a/conf/preferences.json b/conf/preferences.json
index d6352b3..8c6444b 100644
--- a/conf/preferences.json
+++ b/conf/preferences.json
@@ -1,4 +1,129 @@
{
+ "html": {
+ "tags": {
+ "a": {"block": false, "selfClosing": false, "defaultAttr": {"href": ""}},
+ "abbr": {"block": false, "selfClosing": false, "defaultAttr": {"title": ""}},
+ "acronym": {"block": false, "selfClosing": false, "defaultAttr": {"title": ""}},
+ "address": {"block": true, "selfClosing": false},
+ "applet": {"block": true, "selfClosing": false},
+ "area": {"block": false, "selfClosing": true, "defaultAttr": {"shape": "", "coords": "", "href": "", "alt": ""}},
+ "article": {"block": true, "selfClosing": false},
+ "aside": {"block": true, "selfClosing": false},
+ "audio": {"block": true, "selfClosing": false, "defaultAttr": {"src": ""}},
+ "b": {"block": false, "selfClosing": false},
+ "base": {"block": false, "selfClosing": true, "defaultAttr": {"href": ""}},
+ "basefont": {"block": false, "selfClosing": true},
+ "bdi": {"block": false, "selfClosing": false},
+ "bdo": {"block": true, "selfClosing": false, "defaultAttr": {"dir": ""}},
+ "big": {"block": false, "selfClosing": false},
+ "blockquote": {"block": true, "selfClosing": false},
+ "body": {"block": true, "selfClosing": false},
+ "br": {"block": false, "selfClosing": true},
+ "button": {"block": false, "selfClosing": false},
+ "canvas": {"block": false, "selfClosing": false},
+ "caption": {"block": false, "selfClosing": false},
+ "center": {"block": false, "selfClosing": false},
+ "cite": {"block": false, "selfClosing": false},
+ "code": {"block": false, "selfClosing": false},
+ "col": {"block": false, "selfClosing": true},
+ "colgroup": {"block": true, "selfClosing": false},
+ "command": {"block": false, "selfClosing": false},
+ "datalist": {"block": true, "selfClosing": false},
+ "dd": {"block": false, "selfClosing": false},
+ "del": {"block": false, "selfClosing": false},
+ "details": {"block": true, "selfClosing": false},
+ "dfn": {"block": false, "selfClosing": false},
+ "dialog": {"block": false, "selfClosing": false},
+ "dir": {"block": true, "selfClosing": false},
+ "div": {"block": true, "selfClosing": false},
+ "dl": {"block": true, "selfClosing": false},
+ "dt": {"block": false, "selfClosing": false},
+ "em": {"block": false, "selfClosing": false},
+ "embed": {"block": false, "selfClosing": true, "defaultAttr": {"src": "", "type": ""}},
+ "fieldset": {"block": true, "selfClosing": false},
+ "figcaption": {"block": false, "selfClosing": false},
+ "figure": {"block": true, "selfClosing": false},
+ "font": {"block": false, "selfClosing": false},
+ "footer": {"block": true, "selfClosing": false},
+ "form": {"block": true, "selfClosing": false, "defaultAttr": {"action": ""}},
+ "frame": {"block": false, "selfClosing": true},
+ "frameset": {"block": true, "selfClosing": false},
+ "head": {"block": true, "selfClosing": false},
+ "header": {"block": true, "selfClosing": false},
+ "hgroup": {"block": true, "selfClosing": false},
+ "h1": {"block": false, "selfClosing": false},
+ "h2": {"block": false, "selfClosing": false},
+ "h3": {"block": false, "selfClosing": false},
+ "h4": {"block": false, "selfClosing": false},
+ "h5": {"block": false, "selfClosing": false},
+ "h6": {"block": false, "selfClosing": false},
+ "hr": {"block": false, "selfClosing": true},
+ "html": {"block": true, "selfClosing": false},
+ "i": {"block": false, "selfClosing": false},
+ "iframe": {"block": false, "selfClosing": false, "defaultAttr": {"src": "", "frameborder": "0"}},
+ "img": {"block": false, "selfClosing": true, "defaultAttr": {"src": "", "alt": ""}},
+ "input": {"block": false, "selfClosing": true, "defaultAttr": {"type": "text", "name": "", "value": ""}},
+ "ins": {"block": false, "selfClosing": false},
+ "kbd": {"block": false, "selfClosing": false},
+ "keygen": {"block": false, "selfClosing": true},
+ "label": {"block": false, "selfClosing": false, "defaultAttr": {"for": ""}},
+ "legend": {"block": false, "selfClosing": false},
+ "li": {"block": false, "selfClosing": false},
+ "link": {"block": false, "selfClosing": true, "defaultAttr": {"rel": "stylesheet", "href": ""}},
+ "map": {"block": true, "selfClosing": false, "defaultAttr": {"name": ""}},
+ "mark": {"block": false, "selfClosing": false},
+ "menu": {"block": true, "selfClosing": false},
+ "meta": {"block": false, "selfClosing": true},
+ "meter": {"block": false, "selfClosing": false},
+ "nav": {"block": true, "selfClosing": false},
+ "noframes": {"block": false, "selfClosing": false},
+ "noscript": {"block": false, "selfClosing": false},
+ "object": {"block": false, "selfClosing": false, "defaultAttr": {"data": "", "type": ""}},
+ "ol": {"block": true, "selfClosing": false},
+ "optgroup": {"block": true, "selfClosing": false},
+ "option": {"block": false, "selfClosing": false, "defaultAttr": {"value": ""}},
+ "output": {"block": false, "selfClosing": false},
+ "p": {"block": false, "selfClosing": false},
+ "param": {"block": false, "selfClosing": true, "defaultAttr": {"name": "", "value": ""}},
+ "pre": {"block": true, "selfClosing": false},
+ "progress": {"block": false, "selfClosing": false},
+ "q": {"block": false, "selfClosing": false},
+ "rp": {"block": false, "selfClosing": false},
+ "rt": {"block": false, "selfClosing": false},
+ "ruby": {"block": false, "selfClosing": false},
+ "s": {"block": false, "selfClosing": false},
+ "samp": {"block": false, "selfClosing": false},
+ "script": {"block": true, "selfClosing": false},
+ "section": {"block": true, "selfClosing": false},
+ "select": {"block": true, "selfClosing": false, "defaultAttr": {"name": "", "id": ""}},
+ "small": {"block": false, "selfClosing": false},
+ "source": {"block": false, "selfClosing": true},
+ "span": {"block": false, "selfClosing": false},
+ "strike": {"block": false, "selfClosing": false},
+ "strong": {"block": false, "selfClosing": false},
+ "style": {"block": true, "selfClosing": false},
+ "sub": {"block": false, "selfClosing": false},
+ "summary": {"block": false, "selfClosing": false},
+ "sup": {"block": false, "selfClosing": false},
+ "table": {"block": true, "selfClosing": false},
+ "tbody": {"block": true, "selfClosing": false},
+ "td": {"block": false, "selfClosing": false},
+ "textarea": {"block": true, "selfClosing": false, "defaultAttr": {"name": "", "id": "", "cols": "30", "rows": "10"}},
+ "tfoot": {"block": true, "selfClosing": false},
+ "th": {"block": false, "selfClosing": false},
+ "thead": {"block": true, "selfClosing": false},
+ "time": {"block": false, "selfClosing": false},
+ "title": {"block": false, "selfClosing": false},
+ "tr": {"block": true, "selfClosing": false},
+ "track": {"block": false, "selfClosing": true},
+ "tt": {"block": false, "selfClosing": false},
+ "u": {"block": false, "selfClosing": false},
+ "ul": {"block": true, "selfClosing": false},
+ "var": {"block": false, "selfClosing": false},
+ "video": {"block": true, "selfClosing": false, "defaultAttr": {"src": ""}},
+ "wbr": {"block": false, "selfClosing": false}
+ }
+ },
"css": {
"vendorPrefixesProperties": {
"text-fill-color": ["webkit"],
diff --git a/conf/snippets.json b/conf/snippets.json
index 64a1c9e..e42a3db 100644
--- a/conf/snippets.json
+++ b/conf/snippets.json
@@ -1,13 +1,6 @@
{
- "variables": {
- "lang": "en",
- "locale": "en-US",
- "charset": "UTF-8",
- "indentation": "\t",
- "newline": "\n"
- },
"css": {
- "filters": "html",
+
"snippets": {
"@i": "@import url(|);",
"@import": "@import url(|);",
@@ -591,255 +584,135 @@
},
"html": {
- "filters": "html",
- "profile": "html",
- "snippets": {
- "!!!": "<!doctype html>",
- "!!!4t": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
- "!!!4s": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">",
- "!!!xt": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">",
- "!!!xs": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">",
- "!!!xxs": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">",
- "c": "<!-- |${child} -->",
- "cc:ie6": "<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->",
- "cc:ie": "<!--[if IE]>\n\t${child}|\n<![endif]-->",
+ "snippets": {
+ "!!!": "<!doctype html>",
+ "!!!4t": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
+ "!!!4s": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">",
+ "!!!xt": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">",
+ "!!!xs": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">",
+ "!!!xxs": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">",
+ "c": "<!-- |${child} -->",
+ "cc:ie6": "<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->",
+ "cc:ie": "<!--[if IE]>\n\t${child}|\n<![endif]-->",
"cc:noie": "<!--[if !IE]><!-->\n\t${child}|\n<!--<![endif]-->"
},
- "abbreviations": {
- "!": "html:5",
- "a": "<a href=\"\">",
- "a:link": "<a href=\"http://|\">",
- "a:mail": "<a href=\"mailto:|\">",
- "abbr": "<abbr title=\"\">",
- "acronym": "<acronym title=\"\">",
- "base": "<base href=\"\" />",
- "basefont": "<basefont/>",
- "br": "<br/>",
- "frame": "<frame/>",
- "hr": "<hr/>",
- "bdo": "<bdo dir=\"\">",
- "bdo:r": "<bdo dir=\"rtl\">",
- "bdo:l": "<bdo dir=\"ltr\">",
- "col": "<col/>",
- "link": "<link rel=\"stylesheet\" href=\"\" />",
- "link:css": "<link rel=\"stylesheet\" href=\"${1:style}.css\" />",
- "link:print": "<link rel=\"stylesheet\" href=\"${1:print}.css\" media=\"print\" />",
- "link:favicon": "<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"${1:favicon.ico}\" />",
- "link:touch": "<link rel=\"apple-touch-icon\" href=\"${1:favicon.png}\" />",
- "link:rss": "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"${1:rss.xml}\" />",
- "link:atom": "<link rel=\"alternate\" type=\"application/atom+xml\" title=\"Atom\" href=\"${1:atom.xml}\" />",
- "meta": "<meta/>",
- "meta:utf": "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\" />",
- "meta:win": "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\" />",
- "meta:vp": "<meta name=\"viewport\" content=\"width=${1:device-width}, user-scalable=${2:no}, initial-scale=${3:1.0}, maximum-scale=${4:1.0}, minimum-scale=${5:1.0}\" />",
- "meta:compat": "<meta http-equiv=\"X-UA-Compatible\" content=\"${1:IE=7}\" />",
- "style": "<style>",
- "script": "<script>",
- "script:src": "<script src=\"\">",
- "img": "<img src=\"\" alt=\"\" />",
- "iframe": "<iframe src=\"\" frameborder=\"0\">",
- "embed": "<embed src=\"\" type=\"\" />",
- "object": "<object data=\"\" type=\"\">",
- "param": "<param name=\"\" value=\"\" />",
- "map": "<map name=\"\">",
- "area": "<area shape=\"\" coords=\"\" href=\"\" alt=\"\" />",
- "area:d": "<area shape=\"default\" href=\"\" alt=\"\" />",
- "area:c": "<area shape=\"circle\" coords=\"\" href=\"\" alt=\"\" />",
- "area:r": "<area shape=\"rect\" coords=\"\" href=\"\" alt=\"\" />",
- "area:p": "<area shape=\"poly\" coords=\"\" href=\"\" alt=\"\" />",
- "form": "<form action=\"\">",
- "form:get": "<form action=\"\" method=\"get\">",
- "form:post": "<form action=\"\" method=\"post\">",
- "label": "<label for=\"\">",
- "input": "<input type=\"${1:text}\" />",
- "inp": "<input type=\"${1:text}\" name=\"\" id=\"\" />",
- "input:hidden": "input[type=hidden name]",
- "input:h": "input:hidden",
- "input:text": "inp",
- "input:t": "inp",
- "input:search": "inp[type=search]",
- "input:email": "inp[type=email]",
- "input:url": "inp[type=url]",
- "input:password": "inp[type=password]",
- "input:p": "input:password",
- "input:datetime": "inp[type=datetime]",
- "input:date": "inp[type=date]",
- "input:datetime-local": "inp[type=datetime-local]",
- "input:month": "inp[type=month]",
- "input:week": "inp[type=week]",
- "input:time": "inp[type=time]",
- "input:number": "inp[type=number]",
- "input:color": "inp[type=color]",
- "input:checkbox": "inp[type=checkbox]",
- "input:c": "input:checkbox",
- "input:radio": "inp[type=radio]",
- "input:r": "input:radio",
- "input:range": "inp[type=range]",
- "input:file": "inp[type=file]",
- "input:f": "input:file",
- "input:submit": "<input type=\"submit\" value=\"\" />",
- "input:s": "input:submit",
- "input:image": "<input type=\"image\" src=\"\" alt=\"\" />",
- "input:i": "input:image",
- "input:button": "<input type=\"button\" value=\"\" />",
- "input:b": "input:button",
- "isindex": "<isindex/>",
- "input:reset": "input:button[type=reset]",
- "select": "<select name=\"\" id=\"\">",
- "option": "<option value=\"\">",
- "textarea": "<textarea name=\"\" id=\"\" cols=\"${1:30}\" rows=\"${2:10}\">",
- "menu:context": "menu[type=context]>",
- "menu:c": "menu:context",
- "menu:toolbar": "menu[type=toolbar]>",
- "menu:t": "menu:toolbar",
- "video": "<video src=\"\">",
- "audio": "<audio src=\"\">",
- "html:xml": "<html xmlns=\"http://www.w3.org/1999/xhtml\">",
- "keygen": "<keygen/>",
- "command": "<command/>",
-
- "bq": "blockquote",
- "acr": "acronym",
- "fig": "figure",
- "figc": "figcaption",
- "ifr": "iframe",
- "emb": "embed",
- "obj": "object",
- "src": "source",
- "cap": "caption",
- "colg": "colgroup",
- "fst": "fieldset",
- "btn": "button",
- "btn:b": "button[type=button]",
- "btn:r": "button[type=reset]",
- "btn:s": "button[type=submit]",
- "optg": "optgroup",
- "opt": "option",
- "tarea": "textarea",
- "leg": "legend",
- "sect": "section",
- "art": "article",
- "hdr": "header",
- "ftr": "footer",
- "adr": "address",
- "dlg": "dialog",
- "str": "strong",
- "prog": "progress",
- "fset": "fieldset",
- "datag": "datagrid",
- "datal": "datalist",
- "kg": "keygen",
- "out": "output",
- "det": "details",
- "cmd": "command",
- "doc": "html>(head>meta[charset=UTF-8]+title{${1:Document}})+body",
- "doc4": "html>(head>meta[http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\"]+title{${1:Document}})",
-
- "html:4t": "!!!4t+doc4[lang=${lang}]",
- "html:4s": "!!!4s+doc4[lang=${lang}]",
- "html:xt": "!!!xt+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]",
- "html:xs": "!!!xs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]",
- "html:xxs": "!!!xxs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]",
- "html:5": "!!!+doc[lang=${lang}]",
-
- "ol+": "ol>li",
- "ul+": "ul>li",
- "dl+": "dl>dt+dd",
- "map+": "map>area",
- "table+": "table>tr>td",
- "colgroup+": "colgroup>col",
- "colg+": "colgroup>col",
- "tr+": "tr>td",
- "select+": "select>option",
- "optgroup+": "optgroup>option",
- "optg+": "optgroup>option"
- }
- },
-
- "xml": {
- "extends": "html",
- "profile": "xml",
- "filters": "html"
- },
-
- "xsl": {
- "extends": "html",
- "profile": "xml",
- "filters": "html, xsl",
- "abbreviations": {
- "tm": "<xsl:template match=\"\" mode=\"\">",
- "tmatch": "tm",
- "tn": "<xsl:template name=\"\">",
- "tname": "tn",
- "call": "<xsl:call-template name=\"\"/>",
- "ap": "<xsl:apply-templates select=\"\" mode=\"\"/>",
- "api": "<xsl:apply-imports/>",
- "imp": "<xsl:import href=\"\"/>",
- "inc": "<xsl:include href=\"\"/>",
-
- "ch": "<xsl:choose>",
- "xsl:when": "<xsl:when test=\"\">",
- "wh": "xsl:when",
- "ot": "<xsl:otherwise>",
- "if": "<xsl:if test=\"\">",
-
- "par": "<xsl:param name=\"\">",
- "pare": "<xsl:param name=\"\" select=\"\"/>",
- "var": "<xsl:variable name=\"\">",
- "vare": "<xsl:variable name=\"\" select=\"\"/>",
- "wp": "<xsl:with-param name=\"\" select=\"\"/>",
- "key": "<xsl:key name=\"\" match=\"\" use=\"\"/>",
-
- "elem": "<xsl:element name=\"\">",
- "attr": "<xsl:attribute name=\"\">",
- "attrs": "<xsl:attribute-set name=\"\">",
-
- "cp": "<xsl:copy select=\"\"/>",
- "co": "<xsl:copy-of select=\"\"/>",
- "val": "<xsl:value-of select=\"\"/>",
- "each": "<xsl:for-each select=\"\">",
- "for": "each",
- "tex": "<xsl:text></xsl:text>",
-
- "com": "<xsl:comment>",
- "msg": "<xsl:message terminate=\"no\">",
- "fall": "<xsl:fallback>",
- "num": "<xsl:number value=\"\"/>",
- "nam": "<namespace-alias stylesheet-prefix=\"\" result-prefix=\"\"/>",
- "pres": "<xsl:preserve-space elements=\"\"/>",
- "strip": "<xsl:strip-space elements=\"\"/>",
- "proc": "<xsl:processing-instruction name=\"\">",
- "sort": "<xsl:sort select=\"\" order=\"\"/>",
-
- "choose+": "xsl:choose>xsl:when+xsl:otherwise",
- "xsl": "!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\n|}"
- },
- "snippets": {
- "!!!": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "aliases": {
+ "a:link": "a href=http://",
+ "a:mail": "a href=mailto:",
+ "bdo:r": "bdo dir=rtl",
+ "bdo:l": "bdo dir=ltr",
+ "link:css": "link rel=stylesheet href=style.css",
+ "link:print": "link rel=stylesheet href=print.css media=print",
+ "link:favicon": "link icon rel=shortcut type=image/x-icon href=favicon.ico",
+ "link:touch": "link rel=apple-touch-icon href=favicon.png",
+ "link:rss": "link rel=alternate type=application/rss+xml title=RSS href=rss.xml",
+ "link:atom": "link rel=alternate type=\"application/atom+xml\" title=Atom href=atom.xml",
+ "meta:utf": "meta http-equiv=Content-Type content=\"text/html;charset=UTF-8\"",
+ "meta:win": "meta http-equiv=Content-Type content=\"text/html;charset=windows-1251\"",
+ "meta:vp": "meta name=viewport content=\"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\"",
+ "meta:compat": "meta http-equiv=X-UA-Compatible content=\"IE=edge,chrome=1\"",
+ "script:src": "script src",
+ "area:d": "area shape=default href alt",
+ "area:c": "area shape=circle coords href alt",
+ "area:r": "area shape=rect coords href alt",
+ "area:p": "area shape=poly coords href alt",
+ "form:get": "form action method=get",
+ "form:post": "form action method=post",
+ "input:text": "input",
+ "input:t": "input",
+ "input:hidden": "input type=hidden",
+ "input:h": "input:hidden",
+ "input:search": "input type=search",
+ "input:email": "input type=email",
+ "input:url": "input type=url",
+ "input:password": "input type=password",
+ "input:p": "input:password",
+ "input:datetime": "input type=datetime",
+ "input:date": "input type=date",
+ "input:datetime-local": "input type=datetime-local",
+ "input:month": "input type=month",
+ "input:week": "input type=week",
+ "input:time": "input type=time",
+ "input:number": "input type=number",
+ "input:color": "input type=color",
+ "input:checkbox": "input type=checkbox",
+ "input:c": "input:checkbox",
+ "input:radio": "input type=radio",
+ "input:r": "input:radio",
+ "input:range": "input type=range",
+ "input:file": "input type=file",
+ "input:f": "input:file",
+ "input:submit": "input type=submit",
+ "input:s": "input:submit",
+ "input:image": "input type=image src alt",
+ "input:i": "input:image",
+ "input:button": "input type=button",
+ "input:b": "input:button",
+ "input:reset": "input type=reset",
+ "menu:context": "menu type=context",
+ "menu:c": "menu:context",
+ "menu:toolbar": "menu type=toolbar",
+ "menu:t": "menu:toolbar",
+ "html:xml": "html xmlns=http://www.w3.org/1999/xhtml",
+
+ "bq": "blockquote",
+ "acr": "acronym",
+ "fig": "figure",
+ "figc": "figcaption",
+ "ifr": "iframe",
+ "emb": "embed",
+ "obj": "object",
+ "src": "source",
+ "cap": "caption",
+ "colg": "colgroup",
+ "fst": "fieldset",
+ "btn": "button",
+ "btn:b": "button type=button",
+ "btn:r": "button type=reset",
+ "btn:s": "button type=submit",
+ "optg": "optgroup",
+ "opt": "option",
+ "tarea": "textarea",
+ "leg": "legend",
+ "sect": "section",
+ "art": "article",
+ "hdr": "header",
+ "ftr": "footer",
+ "adr": "address",
+ "dlg": "dialog",
+ "str": "strong",
+ "prog": "progress",
+ "fset": "fieldset",
+ "datag": "datagrid",
+ "datal": "datalist",
+ "kg": "keygen",
+ "out": "output",
+ "det": "details",
+ "cmd": "command",
+ "doc": "html>(head>meta charset=UTF-8+title{Document})+body",
+ "doc4": "html>(head>meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"+title{Document})",
+
+ "!": "html:5",
+ "html:4t": "!!!4t+doc4 lang=en",
+ "html:4s": "!!!4s+doc4 lang=en",
+ "html:xt": "!!!xt+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en",
+ "html:xs": "!!!xs+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en",
+ "html:xxs": "!!!xxs+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en",
+ "html:5": "!!!+doc lang=en",
+
+ "ol+": "ol>li",
+ "ul+": "ul>li",
+ "dl+": "dl>dt+dd",
+ "map+": "map>area",
+ "table+": "table>tr>td",
+ "colgroup+": "colgroup>col",
+ "colg+": "colgroup>col",
+ "tr+": "tr>td",
+ "select+": "select>option",
+ "optgroup+": "optgroup>option",
+ "optg+": "optgroup>option"
}
- },
-
- "haml": {
- "filters": "haml",
- "extends": "html",
- "profile": "xml"
- },
-
- "scss": {
- "extends": "css"
- },
-
- "sass": {
- "extends": "css"
- },
-
- "less": {
- "extends": "css"
- },
-
- "stylus": {
- "extends": "css"
}
}
diff --git a/src/html-abbrev.el b/src/html-abbrev.el
index db2e83e..f5236f9 100644
--- a/src/html-abbrev.el
+++ b/src/html-abbrev.el
@@ -405,6 +405,10 @@
"Function to execute when expanding a leaf node in the
Zencoding AST.")
+(zencoding-defparameter
+ zencoding-tag-settings-table
+ (gethash "tags" (gethash "html" zencoding-preferences)))
+
(defvar zencoding-filters
'("html" (zencoding-primary-filter zencoding-make-html-tag)
"c" (zencoding-primary-filter zencoding-make-commented-html-tag)
@@ -440,43 +444,65 @@
(classes (pop tag-info))
(props (pop tag-info))
(txt (pop tag-info))
- (self-closing? (not (or txt content
- (and has-body?
- (not (member name zencoding-self-closing-tags)))))))
- (funcall tag-maker name id classes props txt self-closing?
+ (settings (gethash name zencoding-tag-settings-table)))
+ (funcall tag-maker name has-body? id classes props txt settings
(if content content
(if zencoding-leaf-function (funcall zencoding-leaf-function))))))
-(defun zencoding-make-html-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+(defun zencoding-hash-to-list (hash &optional proc)
+ (unless proc (setq proc #'cons))
+ (loop for key being the hash-keys of hash using (hash-values val)
+ collect (funcall proc key val)))
+
+(defun zencoding-merge-tag-props (default-table tag-props)
+ (if default-table
+ (let ((tbl (copy-hash-table default-table)))
+ (loop for prop in tag-props do
+ (puthash (symbol-name (car prop)) (cadr prop) tbl))
+ (zencoding-hash-to-list tbl 'list))
+ tag-props))
+
+(defun zencoding-make-html-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create HTML markup string"
- (let* ((id (zencoding-concat-or-empty " id=\"" tag-id "\""))
- (classes (zencoding-mapconcat-or-empty " class=\"" tag-classes " " "\""))
- (props (zencoding-mapconcat-or-empty " " tag-props " " nil
- (lambda (prop)
- (concat (symbol-name (car prop)) "=\"" (cadr prop) "\""))))
+ (let* ((id (zencoding-concat-or-empty " id=\"" tag-id "\""))
+ (classes (zencoding-mapconcat-or-empty " class=\"" tag-classes " " "\""))
+ (props (let* ((tag-props-default
+ (and settings (gethash "defaultAttr" settings)))
+ (merged-tag-props
+ (zencoding-merge-tag-props
+ tag-props-default
+ tag-props)))
+ (zencoding-mapconcat-or-empty
+ " " merged-tag-props " " nil
+ (lambda (prop)
+ (let ((key (car prop)))
+ (concat (if (symbolp key) (symbol-name key) key)
+ "=\"" (cadr prop) "\""))))))
(content-multiline? (and content (string-match "\n" content)))
- (block-tag? (or (member tag-name zencoding-block-tags)
- (and (> (length tag-name) 1)
- (not (member tag-name zencoding-inline-tags)))))
- (lf (if (or content-multiline? block-tag?)
- "\n")))
- (concat "<" tag-name id classes props (if self-closing?
- "/>"
- (concat ">"
- (if tag-txt
- (if (or content-multiline? block-tag?)
- (zencoding-indent tag-txt)
- tag-txt))
- (if content
- (if (or content-multiline? block-tag?)
- (zencoding-indent content)
- content))
- lf
- "</" tag-name ">")))))
-
-(defun zencoding-make-commented-html-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+ (block-tag? (and settings (gethash "block" settings)))
+ (self-closing? (and (not (or tag-txt content))
+ (or (not tag-has-body?)
+ (and settings (gethash "selfClosing" settings)))))
+ (lf (if (or content-multiline? block-tag?) "\n")))
+ ;(print (concat "block-tag? " tag-name))
+ ;(print (if block-tag? "yes" "no"))
+ (concat "<" tag-name id classes props
+ (if self-closing? "/>"
+ (concat ">"
+ (if tag-txt
+ (if (or content-multiline? block-tag?)
+ (zencoding-indent tag-txt)
+ tag-txt))
+ (if content
+ (if (or content-multiline? block-tag?)
+ (zencoding-indent content)
+ content))
+ lf
+ "</" tag-name ">")))))
+
+(defun zencoding-make-commented-html-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create HTML markup string with extra comments for elements with #id or .classes"
- (let ((body (zencoding-make-html-tag tag-name tag-id tag-classes tag-props tag-txt self-closing? content)))
+ (let ((body (zencoding-make-html-tag tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)))
(if (or tag-id tag-classes)
(let ((id (zencoding-concat-or-empty "#" tag-id))
(classes (zencoding-mapconcat-or-empty "." tag-classes ".")))
@@ -485,7 +511,7 @@
"\n<!-- /" id classes " -->"))
body)))
-(defun zencoding-make-haml-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+(defun zencoding-make-haml-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create HAML string"
(let ((name (if (and (equal tag-name "div")
(or tag-id tag-classes))
@@ -493,22 +519,24 @@
(concat "%" tag-name)))
(id (zencoding-concat-or-empty "#" tag-id))
(classes (zencoding-mapconcat-or-empty "." tag-classes "."))
- (props (zencoding-mapconcat-or-empty "{" tag-props ", " "}"
- (lambda (prop)
- (concat ":" (symbol-name (car prop)) " => \"" (cadr prop) "\"")))))
+ (props (zencoding-mapconcat-or-empty
+ "{" tag-props ", " "}"
+ (lambda (prop)
+ (concat ":" (symbol-name (car prop)) " => \"" (cadr prop) "\"")))))
(concat name id classes props
(if tag-txt
(zencoding-indent tag-txt))
(if content
(zencoding-indent content)))))
-(defun zencoding-make-hiccup-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+(defun zencoding-make-hiccup-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create Hiccup string"
(let* ((id (zencoding-concat-or-empty "#" tag-id))
(classes (zencoding-mapconcat-or-empty "." tag-classes "."))
- (props (zencoding-mapconcat-or-empty " {" tag-props ", " "}"
- (lambda (prop)
- (concat ":" (symbol-name (car prop)) " \"" (cadr prop) "\""))))
+ (props (zencoding-mapconcat-or-empty
+ " {" tag-props ", " "}"
+ (lambda (prop)
+ (concat ":" (symbol-name (car prop)) " \"" (cadr prop) "\""))))
(content-multiline? (and content (string-match "\n" content)))
(block-tag? (or (member tag-name zencoding-block-tags)
(and (> (length tag-name) 1)
diff --git a/src/preferences.el b/src/preferences.el
index e456b59..653c4e3 100644
--- a/src/preferences.el
+++ b/src/preferences.el
@@ -3,6 +3,572 @@
;; Don't edit.
(zencoding-defparameter zencoding-preferences
(let ((tbl (make-hash-table :test 'equal)))
+(puthash "html" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "tags" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "code" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "meter" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "tbody" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "font" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "noscript" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "style" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "img" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+(puthash "alt" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "title" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "menu" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "tt" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "tr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "param" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "name" "" tbl)
+(puthash "value" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "li" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "source" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "tfoot" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "th" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "input" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "type" "text" tbl)
+(puthash "name" "" tbl)
+(puthash "value" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "td" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dl" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "blockquote" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "fieldset" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "big" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dd" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "kbd" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "optgroup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "dt" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "wbr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "button" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "summary" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "p" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "small" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "output" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "div" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "dir" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "em" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "datalist" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "frame" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "hgroup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "meta" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "video" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "rt" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "canvas" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "rp" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "sub" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "bdo" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "dir" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "bdi" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "label" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "for" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "acronym" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "title" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "sup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "progress" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "body" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "basefont" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "base" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "href" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "br" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "address" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "article" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "strong" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "legend" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "ol" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "script" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "caption" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "s" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dialog" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "col" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h2" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h3" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h1" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h6" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h4" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h5" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "header" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "table" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "select" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "name" "" tbl)
+(puthash "id" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "noframes" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "span" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "area" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "shape" "" tbl)
+(puthash "href" "" tbl)
+(puthash "coords" "" tbl)
+(puthash "alt" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "mark" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dfn" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "strike" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "cite" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "thead" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "head" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "option" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "value" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "form" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "action" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "hr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "var" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "link" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "href" "" tbl)
+(puthash "rel" "stylesheet" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "ruby" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "b" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "colgroup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "keygen" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "ul" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "applet" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "del" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "iframe" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+(puthash "frameborder" "0" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "embed" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+(puthash "type" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "pre" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "frameset" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "figure" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "ins" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "aside" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "html" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "nav" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "details" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "u" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "samp" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "map" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "name" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "track" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "object" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "type" "" tbl)
+(puthash "data" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "figcaption" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "a" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "href" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "center" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "textarea" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "rows" "10" tbl)
+(puthash "cols" "30" tbl)
+(puthash "name" "" tbl)
+(puthash "id" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "footer" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "i" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "q" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "command" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "time" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "audio" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "section" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "abbr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "title" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+tbl) tbl)
+tbl) tbl)
(puthash "css" (let ((tbl (make-hash-table :test 'equal)))
(puthash "vendorPrefixesProperties" (let ((tbl (make-hash-table :test 'equal)))
(puthash "text-fill-color" (vector
diff --git a/src/snippets.el b/src/snippets.el
index 5ad56fb..d69919e 100644
--- a/src/snippets.el
+++ b/src/snippets.el
@@ -3,191 +3,132 @@
;; Don't edit.
(zencoding-defparameter zencoding-snippets
(let ((tbl (make-hash-table :test 'equal)))
-(puthash "xml" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "xml" tbl)
-(puthash "extends" "html" tbl)
-(puthash "filters" "html" tbl)
-tbl) tbl)
-(puthash "scss" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
-(puthash "sass" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
-(puthash "less" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
-(puthash "variables" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "lang" "en" tbl)
-(puthash "locale" "en-US" tbl)
-(puthash "charset" "UTF-8" tbl)
-(puthash "indentation" "\t" tbl)
-(puthash "newline" "\n" tbl)
-tbl) tbl)
-(puthash "stylus" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
(puthash "html" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "html" tbl)
-(puthash "abbreviations" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "a:link" "<a href=\"http://|\">" tbl)
-(puthash "doc4" "html>(head>meta[http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\"]+title{${1:Document}})" tbl)
-(puthash "input:datetime-local" "inp[type=datetime-local]" tbl)
-(puthash "input:reset" "input:button[type=reset]" tbl)
-(puthash "meta:vp" "<meta name=\"viewport\" content=\"width=${1:device-width}, user-scalable=${2:no}, initial-scale=${3:1.0}, maximum-scale=${4:1.0}, minimum-scale=${5:1.0}\" />" tbl)
+(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "c" "<!-- |${child} -->" tbl)
+(puthash "!!!" "<!doctype html>" tbl)
+(puthash "!!!xxs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" tbl)
+(puthash "cc:ie6" "<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->" tbl)
+(puthash "cc:ie" "<!--[if IE]>\n\t${child}|\n<![endif]-->" tbl)
+(puthash "!!!xs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" tbl)
+(puthash "!!!4t" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" tbl)
+(puthash "cc:noie" "<!--[if !IE]><!-->\n\t${child}|\n<!--<![endif]-->" tbl)
+(puthash "!!!4s" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" tbl)
+(puthash "!!!xt" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" tbl)
+tbl) tbl)
+(puthash "aliases" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "a:link" "a href=http://" tbl)
+(puthash "doc4" "html>(head>meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"+title{Document})" tbl)
+(puthash "input:datetime-local" "input type=datetime-local" tbl)
+(puthash "input:reset" "input type=reset" tbl)
+(puthash "meta:vp" "meta name=viewport content=\"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\"" tbl)
(puthash "colg" "colgroup" tbl)
-(puthash "figc" "figcaption" tbl)
-(puthash "btn:s" "button[type=submit]" tbl)
-(puthash "btn:r" "button[type=reset]" tbl)
-(puthash "style" "<style>" tbl)
+(puthash "btn:s" "button type=submit" tbl)
+(puthash "btn:r" "button type=reset" tbl)
+(puthash "tr+" "tr>td" tbl)
(puthash "adr" "address" tbl)
-(puthash "img" "<img src=\"\" alt=\"\" />" tbl)
-(puthash "bdo:l" "<bdo dir=\"ltr\">" tbl)
-(puthash "param" "<param name=\"\" value=\"\" />" tbl)
+(puthash "bdo:l" "bdo dir=ltr" tbl)
(puthash "colgroup+" "colgroup>col" tbl)
-(puthash "btn:b" "button[type=button]" tbl)
-(puthash "form:post" "<form action=\"\" method=\"post\">" tbl)
-(puthash "bdo:r" "<bdo dir=\"rtl\">" tbl)
+(puthash "btn:b" "button type=button" tbl)
+(puthash "form:post" "form action method=post" tbl)
+(puthash "bdo:r" "bdo dir=rtl" tbl)
(puthash "fig" "figure" tbl)
-(puthash "input:radio" "inp[type=radio]" tbl)
-(puthash "link:print" "<link rel=\"stylesheet\" href=\"${1:print}.css\" media=\"print\" />" tbl)
+(puthash "input:radio" "input type=radio" tbl)
+(puthash "link:print" "link rel=stylesheet href=print.css media=print" tbl)
(puthash "opt" "option" tbl)
(puthash "input:i" "input:image" tbl)
-(puthash "input:h" "input:hidden" tbl)
+(puthash "figc" "figcaption" tbl)
(puthash "input:f" "input:file" tbl)
(puthash "input:c" "input:checkbox" tbl)
(puthash "input:b" "input:button" tbl)
-(puthash "abbr" "<abbr title=\"\">" tbl)
-(puthash "colg+" "colgroup>col" tbl)
-(puthash "input:t" "inp" tbl)
+(puthash "input:t" "input" tbl)
(puthash "input:p" "input:password" tbl)
(puthash "input:s" "input:submit" tbl)
(puthash "input:r" "input:radio" tbl)
(puthash "ifr" "iframe" tbl)
(puthash "emb" "embed" tbl)
(puthash "optg+" "optgroup>option" tbl)
-(puthash "isindex" "<isindex/>" tbl)
-(puthash "html:5" "!!!+doc[lang=${lang}]" tbl)
-(puthash "link:atom" "<link rel=\"alternate\" type=\"application/atom+xml\" title=\"Atom\" href=\"${1:atom.xml}\" />" tbl)
-(puthash "table+" "table>tr>td" tbl)
(puthash "cmd" "command" tbl)
+(puthash "html:5" "!!!+doc lang=en" tbl)
+(puthash "link:atom" "link rel=alternate type=\"application/atom+xml\" title=Atom href=atom.xml" tbl)
+(puthash "table+" "table>tr>td" tbl)
(puthash "art" "article" tbl)
-(puthash "frame" "<frame/>" tbl)
-(puthash "area:r" "<area shape=\"rect\" coords=\"\" href=\"\" alt=\"\" />" tbl)
-(puthash "area:p" "<area shape=\"poly\" coords=\"\" href=\"\" alt=\"\" />" tbl)
-(puthash "input:date" "inp[type=date]" tbl)
-(puthash "meta" "<meta/>" tbl)
-(puthash "video" "<video src=\"\">" tbl)
-(puthash "input:button" "<input type=\"button\" value=\"\" />" tbl)
-(puthash "area:d" "<area shape=\"default\" href=\"\" alt=\"\" />" tbl)
-(puthash "area:c" "<area shape=\"circle\" coords=\"\" href=\"\" alt=\"\" />" tbl)
+(puthash "input:search" "input type=search" tbl)
+(puthash "area:r" "area shape=rect coords href alt" tbl)
+(puthash "area:p" "area shape=poly coords href alt" tbl)
+(puthash "input:date" "input type=date" tbl)
+(puthash "input:button" "input type=button" tbl)
+(puthash "area:d" "area shape=default href alt" tbl)
+(puthash "area:c" "area shape=circle coords href alt" tbl)
(puthash "out" "output" tbl)
(puthash "ftr" "footer" tbl)
(puthash "dlg" "dialog" tbl)
-(puthash "script:src" "<script src=\"\">" tbl)
-(puthash "form:get" "<form action=\"\" method=\"get\">" tbl)
-(puthash "meta:utf" "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\" />" tbl)
-(puthash "label" "<label for=\"\">" tbl)
-(puthash "basefont" "<basefont/>" tbl)
-(puthash "input:time" "inp[type=time]" tbl)
-(puthash "link:favicon" "<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"${1:favicon.ico}\" />" tbl)
-(puthash "menu:toolbar" "menu[type=toolbar]>" tbl)
+(puthash "script:src" "script src" tbl)
+(puthash "form:get" "form action method=get" tbl)
+(puthash "meta:utf" "meta http-equiv=Content-Type content=\"text/html;charset=UTF-8\"" tbl)
+(puthash "input:time" "input type=time" tbl)
+(puthash "menu:toolbar" "menu type=toolbar" tbl)
(puthash "prog" "progress" tbl)
-(puthash "input:email" "inp[type=email]" tbl)
-(puthash "str" "strong" tbl)
+(puthash "input:email" "input type=email" tbl)
+(puthash "input:submit" "input type=submit" tbl)
(puthash "leg" "legend" tbl)
-(puthash "acronym" "<acronym title=\"\">" tbl)
(puthash "ol+" "ol>li" tbl)
-(puthash "tr+" "tr>td" tbl)
(puthash "optgroup+" "optgroup>option" tbl)
-(puthash "base" "<base href=\"\" />" tbl)
(puthash "bq" "blockquote" tbl)
-(puthash "br" "<br/>" tbl)
(puthash "src" "source" tbl)
(puthash "obj" "object" tbl)
(puthash "dl+" "dl>dt+dd" tbl)
-(puthash "script" "<script>" tbl)
(puthash "acr" "acronym" tbl)
-(puthash "input:password" "inp[type=password]" tbl)
-(puthash "col" "<col/>" tbl)
-(puthash "html:4t" "!!!4t+doc4[lang=${lang}]" tbl)
-(puthash "input:file" "inp[type=file]" tbl)
-(puthash "html:4s" "!!!4s+doc4[lang=${lang}]" tbl)
+(puthash "input:password" "input type=password" tbl)
+(puthash "html:4t" "!!!4t+doc4 lang=en" tbl)
+(puthash "input:file" "input type=file" tbl)
+(puthash "html:4s" "!!!4s+doc4 lang=en" tbl)
(puthash "tarea" "textarea" tbl)
-(puthash "select" "<select name=\"\" id=\"\">" tbl)
-(puthash "input:number" "inp[type=number]" tbl)
-(puthash "input:range" "inp[type=range]" tbl)
-(puthash "area" "<area shape=\"\" coords=\"\" href=\"\" alt=\"\" />" tbl)
-(puthash "input:image" "<input type=\"image\" src=\"\" alt=\"\" />" tbl)
+(puthash "link:favicon" "link icon rel=shortcut type=image/x-icon href=favicon.ico" tbl)
+(puthash "input:number" "input type=number" tbl)
+(puthash "input:range" "input type=range" tbl)
+(puthash "input:image" "input type=image src alt" tbl)
(puthash "ul+" "ul>li" tbl)
-(puthash "input:search" "inp[type=search]" tbl)
-(puthash "html:xxs" "!!!xxs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]" tbl)
-(puthash "input:month" "inp[type=month]" tbl)
+(puthash "html:xxs" "!!!xxs+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en" tbl)
+(puthash "input:month" "input type=month" tbl)
(puthash "fset" "fieldset" tbl)
-(puthash "meta:win" "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\" />" tbl)
-(puthash "option" "<option value=\"\">" tbl)
-(puthash "form" "<form action=\"\">" tbl)
-(puthash "hr" "<hr/>" tbl)
+(puthash "meta:win" "meta http-equiv=Content-Type content=\"text/html;charset=windows-1251\"" tbl)
+(puthash "menu:t" "menu:toolbar" tbl)
(puthash "menu:c" "menu:context" tbl)
-(puthash "link" "<link rel=\"stylesheet\" href=\"\" />" tbl)
-(puthash "input" "<input type=\"${1:text}\" />" tbl)
-(puthash "link:rss" "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"${1:rss.xml}\" />" tbl)
+(puthash "link:rss" "link rel=alternate type=application/rss+xml title=RSS href=rss.xml" tbl)
(puthash "select+" "select>option" tbl)
(puthash "hdr" "header" tbl)
(puthash "cap" "caption" tbl)
(puthash "det" "details" tbl)
-(puthash "keygen" "<keygen/>" tbl)
-(puthash "link:touch" "<link rel=\"apple-touch-icon\" href=\"${1:favicon.png}\" />" tbl)
-(puthash "iframe" "<iframe src=\"\" frameborder=\"0\">" tbl)
-(puthash "link:css" "<link rel=\"stylesheet\" href=\"${1:style}.css\" />" tbl)
-(puthash "input:week" "inp[type=week]" tbl)
-(puthash "embed" "<embed src=\"\" type=\"\" />" tbl)
+(puthash "link:touch" "link rel=apple-touch-icon href=favicon.png" tbl)
+(puthash "str" "strong" tbl)
+(puthash "link:css" "link rel=stylesheet href=style.css" tbl)
+(puthash "input:week" "input type=week" tbl)
(puthash "optg" "optgroup" tbl)
-(puthash "input:datetime" "inp[type=datetime]" tbl)
-(puthash "inp" "<input type=\"${1:text}\" name=\"\" id=\"\" />" tbl)
-(puthash "datag" "datagrid" tbl)
-(puthash "menu:t" "menu:toolbar" tbl)
+(puthash "input:datetime" "input type=datetime" tbl)
+(puthash "input:h" "input:hidden" tbl)
(puthash "!" "html:5" tbl)
-(puthash "html:xml" "<html xmlns=\"http://www.w3.org/1999/xhtml\">" tbl)
+(puthash "html:xml" "html xmlns=http://www.w3.org/1999/xhtml" tbl)
(puthash "btn" "button" tbl)
-(puthash "input:url" "inp[type=url]" tbl)
-(puthash "menu:context" "menu[type=context]>" tbl)
-(puthash "fst" "fieldset" tbl)
-(puthash "map" "<map name=\"\">" tbl)
-(puthash "input:color" "inp[type=color]" tbl)
-(puthash "meta:compat" "<meta http-equiv=\"X-UA-Compatible\" content=\"${1:IE=7}\" />" tbl)
-(puthash "input:hidden" "input[type=hidden name]" tbl)
-(puthash "object" "<object data=\"\" type=\"\">" tbl)
-(puthash "a:mail" "<a href=\"mailto:|\">" tbl)
-(puthash "html:xs" "!!!xs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]" tbl)
-(puthash "html:xt" "!!!xt+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]" tbl)
-(puthash "a" "<a href=\"\">" tbl)
+(puthash "input:url" "input type=url" tbl)
+(puthash "menu:context" "menu type=context" tbl)
+(puthash "colg+" "colgroup>col" tbl)
+(puthash "input:color" "input type=color" tbl)
+(puthash "meta:compat" "meta http-equiv=X-UA-Compatible content=\"IE=edge,chrome=1\"" tbl)
+(puthash "input:hidden" "input type=hidden" tbl)
+(puthash "a:mail" "a href=mailto:" tbl)
+(puthash "html:xs" "!!!xs+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en" tbl)
+(puthash "html:xt" "!!!xt+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en" tbl)
(puthash "datal" "datalist" tbl)
(puthash "map+" "map>area" tbl)
(puthash "kg" "keygen" tbl)
-(puthash "textarea" "<textarea name=\"\" id=\"\" cols=\"${1:30}\" rows=\"${2:10}\">" tbl)
-(puthash "doc" "html>(head>meta[charset=UTF-8]+title{${1:Document}})+body" tbl)
-(puthash "input:submit" "<input type=\"submit\" value=\"\" />" tbl)
-(puthash "input:text" "inp" tbl)
-(puthash "input:checkbox" "inp[type=checkbox]" tbl)
-(puthash "command" "<command/>" tbl)
+(puthash "doc" "html>(head>meta charset=UTF-8+title{Document})+body" tbl)
+(puthash "datag" "datagrid" tbl)
+(puthash "input:text" "input" tbl)
+(puthash "input:checkbox" "input type=checkbox" tbl)
+(puthash "fst" "fieldset" tbl)
(puthash "sect" "section" tbl)
-(puthash "audio" "<audio src=\"\">" tbl)
-(puthash "bdo" "<bdo dir=\"\">" tbl)
-tbl) tbl)
-(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "c" "<!-- |${child} -->" tbl)
-(puthash "!!!" "<!doctype html>" tbl)
-(puthash "!!!xxs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" tbl)
-(puthash "cc:ie6" "<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->" tbl)
-(puthash "cc:ie" "<!--[if IE]>\n\t${child}|\n<![endif]-->" tbl)
-(puthash "!!!xs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" tbl)
-(puthash "!!!4t" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" tbl)
-(puthash "cc:noie" "<!--[if !IE]><!-->\n\t${child}|\n<!--<![endif]-->" tbl)
-(puthash "!!!4s" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" tbl)
-(puthash "!!!xt" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" tbl)
tbl) tbl)
-(puthash "filters" "html" tbl)
tbl) tbl)
(puthash "css" (let ((tbl (make-hash-table :test 'equal)))
(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
@@ -754,61 +695,5 @@ tbl) tbl)
(puthash "cps" "caption-side:|;" tbl)
(puthash "v:v" "visibility:visible;" tbl)
tbl) tbl)
-(puthash "filters" "html" tbl)
-tbl) tbl)
-(puthash "haml" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "xml" tbl)
-(puthash "extends" "html" tbl)
-(puthash "filters" "haml" tbl)
-tbl) tbl)
-(puthash "xsl" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "xml" tbl)
-(puthash "abbreviations" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "ch" "<xsl:choose>" tbl)
-(puthash "co" "<xsl:copy-of select=\"\"/>" tbl)
-(puthash "fall" "<xsl:fallback>" tbl)
-(puthash "vare" "<xsl:variable name=\"\" select=\"\"/>" tbl)
-(puthash "ap" "<xsl:apply-templates select=\"\" mode=\"\"/>" tbl)
-(puthash "api" "<xsl:apply-imports/>" tbl)
-(puthash "attrs" "<xsl:attribute-set name=\"\">" tbl)
-(puthash "strip" "<xsl:strip-space elements=\"\"/>" tbl)
-(puthash "cp" "<xsl:copy select=\"\"/>" tbl)
-(puthash "if" "<xsl:if test=\"\">" tbl)
-(puthash "par" "<xsl:param name=\"\">" tbl)
-(puthash "val" "<xsl:value-of select=\"\"/>" tbl)
-(puthash "for" "each" tbl)
-(puthash "tn" "<xsl:template name=\"\">" tbl)
-(puthash "imp" "<xsl:import href=\"\"/>" tbl)
-(puthash "tm" "<xsl:template match=\"\" mode=\"\">" tbl)
-(puthash "call" "<xsl:call-template name=\"\"/>" tbl)
-(puthash "var" "<xsl:variable name=\"\">" tbl)
-(puthash "inc" "<xsl:include href=\"\"/>" tbl)
-(puthash "proc" "<xsl:processing-instruction name=\"\">" tbl)
-(puthash "pres" "<xsl:preserve-space elements=\"\"/>" tbl)
-(puthash "sort" "<xsl:sort select=\"\" order=\"\"/>" tbl)
-(puthash "pare" "<xsl:param name=\"\" select=\"\"/>" tbl)
-(puthash "nam" "<namespace-alias stylesheet-prefix=\"\" result-prefix=\"\"/>" tbl)
-(puthash "xsl:when" "<xsl:when test=\"\">" tbl)
-(puthash "wh" "xsl:when" tbl)
-(puthash "tname" "tn" tbl)
-(puthash "key" "<xsl:key name=\"\" match=\"\" use=\"\"/>" tbl)
-(puthash "wp" "<xsl:with-param name=\"\" select=\"\"/>" tbl)
-(puthash "msg" "<xsl:message terminate=\"no\">" tbl)
-(puthash "tmatch" "tm" tbl)
-(puthash "attr" "<xsl:attribute name=\"\">" tbl)
-(puthash "tex" "<xsl:text></xsl:text>" tbl)
-(puthash "elem" "<xsl:element name=\"\">" tbl)
-(puthash "num" "<xsl:number value=\"\"/>" tbl)
-(puthash "choose+" "xsl:choose>xsl:when+xsl:otherwise" tbl)
-(puthash "each" "<xsl:for-each select=\"\">" tbl)
-(puthash "ot" "<xsl:otherwise>" tbl)
-(puthash "com" "<xsl:comment>" tbl)
-(puthash "xsl" "!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\n|}" tbl)
-tbl) tbl)
-(puthash "extends" "html" tbl)
-(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "!!!" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" tbl)
-tbl) tbl)
-(puthash "filters" "html, xsl" tbl)
tbl) tbl)
tbl))
diff --git a/src/test.el b/src/test.el
index 1433d86..dc731eb 100644
--- a/src/test.el
+++ b/src/test.el
@@ -56,10 +56,10 @@
;; XML-abbrev tests
(define-zencoding-transform-html-test-case Tags
- "a" ("<a></a>")
- "a.x" ("<a class=\"x\"></a>")
- "a#q.x" ("<a id=\"q\" class=\"x\"></a>")
- "a#q.x.y.z" ("<a id=\"q\" class=\"x y z\"></a>")
+ "a" ("<a href=\"\"></a>")
+ "a.x" ("<a class=\"x\" href=\"\"></a>")
+ "a#q.x" ("<a id=\"q\" class=\"x\" href=\"\"></a>")
+ "a#q.x.y.z" ("<a id=\"q\" class=\"x y z\" href=\"\"></a>")
"#q" ("<div id=\"q\">"
"</div>")
".x" ("<div class=\"x\">"
@@ -70,39 +70,38 @@
"</div>"))
(define-zencoding-transform-html-test-case Empty-tags
- "a/" ("<a/>")
- "a/.x" ("<a class=\"x\"/>")
- "a/#q.x" ("<a id=\"q\" class=\"x\"/>")
- "a/#q.x.y.z" ("<a id=\"q\" class=\"x y z\"/>"))
+ "a/" ("<a href=\"\"/>")
+ "a/.x" ("<a class=\"x\" href=\"\"/>")
+ "a/#q.x" ("<a id=\"q\" class=\"x\" href=\"\"/>")
+ "a/#q.x.y.z" ("<a id=\"q\" class=\"x y z\" href=\"\"/>"))
(define-zencoding-transform-html-test-case Self-closing-tags
- "input type=text" ("<input type=\"text\"/>")
- "img" ("<img/>")
- "img>metadata/*2" ("<img>"
+ "input type=text" ("<input type=\"text\" name=\"\" value=\"\"/>")
+ "img" ("<img src=\"\" alt=\"\"/>")
+ "img>metadata/*2" ("<img src=\"\" alt=\"\">"
" <metadata/>"
" <metadata/>"
"</img>"))
(define-zencoding-transform-html-test-case Siblings
- "a+b" ("<a></a>"
+ "a+b" ("<a href=\"\"></a>"
"<b></b>")
- "a+b+c" ("<a></a>"
+ "a+b+c" ("<a href=\"\"></a>"
"<b></b>"
"<c></c>")
- "a.x+b" ("<a class=\"x\"></a>"
+ "a.x+b" ("<a class=\"x\" href=\"\"></a>"
"<b></b>")
- "a#q.x+b" ("<a id=\"q\" class=\"x\"></a>"
+ "a#q.x+b" ("<a id=\"q\" class=\"x\" href=\"\"></a>"
"<b></b>")
- "a#q.x.y.z+b" ("<a id=\"q\" class=\"x y z\"></a>"
+ "a#q.x.y.z+b" ("<a id=\"q\" class=\"x y z\" href=\"\"></a>"
"<b></b>")
- "a#q.x.y.z+b#p.l.m.n" ("<a id=\"q\" class=\"x y z\"></a>"
+ "a#q.x.y.z+b#p.l.m.n" ("<a id=\"q\" class=\"x y z\" href=\"\"></a>"
"<b id=\"p\" class=\"l m n\"></b>"))
(define-zencoding-transform-html-test-case Tag-expansion
"table+" ("<table>"
" <tr>"
- " <td>"
- " </td>"
+ " <td></td>"
" </tr>"
"</table>")
"dl+" ("<dl>"
@@ -123,60 +122,60 @@
"</ul>"))
(define-zencoding-transform-html-test-case Parent-child
- "a>b" ("<a><b></b></a>")
- "a>b>c" ("<a><b><c></c></b></a>")
- "a.x>b" ("<a class=\"x\"><b></b></a>")
- "a#q.x>b" ("<a id=\"q\" class=\"x\"><b></b></a>")
- "a#q.x.y.z>b" ("<a id=\"q\" class=\"x y z\"><b></b></a>")
- "a#q.x.y.z>b#p.l.m.n" ("<a id=\"q\" class=\"x y z\"><b id=\"p\" class=\"l m n\"></b></a>")
+ "a>b" ("<a href=\"\"><b></b></a>")
+ "a>b>c" ("<a href=\"\"><b><c></c></b></a>")
+ "a.x>b" ("<a class=\"x\" href=\"\"><b></b></a>")
+ "a#q.x>b" ("<a id=\"q\" class=\"x\" href=\"\"><b></b></a>")
+ "a#q.x.y.z>b" ("<a id=\"q\" class=\"x y z\" href=\"\"><b></b></a>")
+ "a#q.x.y.z>b#p.l.m.n" ("<a id=\"q\" class=\"x y z\" href=\"\"><b id=\"p\" class=\"l m n\"></b></a>")
"#q>.x" ("<div id=\"q\">"
" <div class=\"x\">"
" </div>"
"</div>")
- "a>b+c" ("<a>"
+ "a>b+c" ("<a href=\"\">"
" <b></b>"
" <c></c>"
"</a>")
- "a>b+c>d" ("<a>"
+ "a>b+c>d" ("<a href=\"\">"
" <b></b>"
" <c><d></d></c>"
"</a>"))
(define-zencoding-transform-html-test-case Multiplication
- "a*1" ("<a></a>")
- "a*2" ("<a></a>"
- "<a></a>")
- "a/*2" ("<a/>"
- "<a/>")
- "a*2+b*2" ("<a></a>"
- "<a></a>"
+ "a*1" ("<a href=\"\"></a>")
+ "a*2" ("<a href=\"\"></a>"
+ "<a href=\"\"></a>")
+ "a/*2" ("<a href=\"\"/>"
+ "<a href=\"\"/>")
+ "a*2+b*2" ("<a href=\"\"></a>"
+ "<a href=\"\"></a>"
"<b></b>"
"<b></b>")
- "a*2>b*2" ("<a>"
+ "a*2>b*2" ("<a href=\"\">"
" <b></b>"
" <b></b>"
"</a>"
- "<a>"
+ "<a href=\"\">"
" <b></b>"
" <b></b>"
"</a>")
- "a>b*2" ("<a>"
+ "a>b*2" ("<a href=\"\">"
" <b></b>"
" <b></b>"
"</a>")
- "a#q.x>b#q.x*2" ("<a id=\"q\" class=\"x\">"
+ "a#q.x>b#q.x*2" ("<a id=\"q\" class=\"x\" href=\"\">"
" <b id=\"q\" class=\"x\"></b>"
" <b id=\"q\" class=\"x\"></b>"
"</a>")
- "a#q.x>b/#q.x*2" ("<a id=\"q\" class=\"x\">"
+ "a#q.x>b/#q.x*2" ("<a id=\"q\" class=\"x\" href=\"\">"
" <b id=\"q\" class=\"x\"/>"
" <b id=\"q\" class=\"x\"/>"
"</a>"))
(define-zencoding-transform-html-test-case Numbering
- "a.$x*3" ("<a class=\"1x\"></a>"
- "<a class=\"2x\"></a>"
- "<a class=\"3x\"></a>")
+ "a.$x*3" ("<a class=\"1x\" href=\"\"></a>"
+ "<a class=\"2x\" href=\"\"></a>"
+ "<a class=\"3x\" href=\"\"></a>")
"ul>li.item$*3" ("<ul>"
" <li class=\"item1\"></li>"
" <li class=\"item2\"></li>"
@@ -195,12 +194,12 @@
" <li class=\"item1001\"></li>"
" <li class=\"item1000\"></li>"
"</ul>")
- "a.$*2>b.$$@-*3" ("<a class=\"1\">"
+ "a.$*2>b.$$@-*3" ("<a class=\"1\" href=\"\">"
" <b class=\"03\"></b>"
" <b class=\"02\"></b>"
" <b class=\"01\"></b>"
"</a>"
- "<a class=\"2\">"
+ "<a class=\"2\" href=\"\">"
" <b class=\"03\"></b>"
" <b class=\"02\"></b>"
" <b class=\"01\"></b>"
@@ -208,14 +207,14 @@
"(div>(a#id$$*2)+b.c$@-3+c#d$)*2"
("<div>"
- " <a id=\"id01\"></a>"
- " <a id=\"id02\"></a>"
+ " <a id=\"id01\" href=\"\"></a>"
+ " <a id=\"id02\" href=\"\"></a>"
" <b class=\"c4\"></b>"
" <c id=\"d1\"></c>"
"</div>"
"<div>"
- " <a id=\"id01\"></a>"
- " <a id=\"id02\"></a>"
+ " <a id=\"id01\" href=\"\"></a>"
+ " <a id=\"id02\" href=\"\"></a>"
" <b class=\"c3\"></b>"
" <c id=\"d2\"></c>"
"</div>")
@@ -233,66 +232,66 @@
"</ul>"))
(define-zencoding-transform-html-test-case Properties
- "a x" ("<a x=\"\"></a>")
- "a x=" ("<a x=\"\"></a>")
- "a x=\"\"" ("<a x=\"\"></a>")
- "a x=y" ("<a x=\"y\"></a>")
- "a x=\"y\"" ("<a x=\"y\"></a>")
- "a x=\"()\"" ("<a x=\"()\"></a>")
- "a x m" ("<a x=\"\" m=\"\"></a>")
- "a x= m=\"\"" ("<a x=\"\" m=\"\"></a>")
- "a x=y m=l" ("<a x=\"y\" m=\"l\"></a>")
- "a/ x=y m=l" ("<a x=\"y\" m=\"l\"/>")
- "a#foo x=y m=l" ("<a id=\"foo\" x=\"y\" m=\"l\"></a>")
- "a.foo x=y m=l" ("<a class=\"foo\" x=\"y\" m=\"l\"></a>")
- "a#foo.bar.mu x=y m=l" ("<a id=\"foo\" class=\"bar mu\" x=\"y\" m=\"l\"></a>")
- "a/#foo.bar.mu x=y m=l" ("<a id=\"foo\" class=\"bar mu\" x=\"y\" m=\"l\"/>")
- "a x=y+b" ("<a x=\"y\"></a>"
+ "a x" ("<a href=\"\" x=\"\"></a>")
+ "a x=" ("<a href=\"\" x=\"\"></a>")
+ "a x=\"\"" ("<a href=\"\" x=\"\"></a>")
+ "a x=y" ("<a href=\"\" x=\"y\"></a>")
+ "a x=\"y\"" ("<a href=\"\" x=\"y\"></a>")
+ "a x=\"()\"" ("<a href=\"\" x=\"()\"></a>")
+ "a x m" ("<a href=\"\" x=\"\" m=\"\"></a>")
+ "a x= m=\"\"" ("<a href=\"\" x=\"\" m=\"\"></a>")
+ "a x=y m=l" ("<a href=\"\" x=\"y\" m=\"l\"></a>")
+ "a/ x=y m=l" ("<a href=\"\" x=\"y\" m=\"l\"/>")
+ "a#foo x=y m=l" ("<a id=\"foo\" href=\"\" x=\"y\" m=\"l\"></a>")
+ "a.foo x=y m=l" ("<a class=\"foo\" href=\"\" x=\"y\" m=\"l\"></a>")
+ "a#foo.bar.mu x=y m=l" ("<a id=\"foo\" class=\"bar mu\" href=\"\" x=\"y\" m=\"l\"></a>")
+ "a/#foo.bar.mu x=y m=l" ("<a id=\"foo\" class=\"bar mu\" href=\"\" x=\"y\" m=\"l\"/>")
+ "a x=y+b" ("<a href=\"\" x=\"y\"></a>"
"<b></b>")
- "a x=y+b x=y" ("<a x=\"y\"></a>"
+ "a x=y+b x=y" ("<a href=\"\" x=\"y\"></a>"
"<b x=\"y\"></b>")
- "a x=y>b" ("<a x=\"y\"><b></b></a>")
- "a x=y>b x=y" ("<a x=\"y\"><b x=\"y\"></b></a>")
- "a x=y>b x=y+c x=y" ("<a x=\"y\">"
+ "a x=y>b" ("<a href=\"\" x=\"y\"><b></b></a>")
+ "a x=y>b x=y" ("<a href=\"\" x=\"y\"><b x=\"y\"></b></a>")
+ "a x=y>b x=y+c x=y" ("<a href=\"\" x=\"y\">"
" <b x=\"y\"></b>"
" <c x=\"y\"></c>"
"</a>"))
(define-zencoding-transform-html-test-case Parentheses
- "(a)" ("<a></a>")
- "(a)+(b)" ("<a></a>"
+ "(a)" ("<a href=\"\"></a>")
+ "(a)+(b)" ("<a href=\"\"></a>"
"<b></b>")
- "a>(b)" ("<a><b></b></a>")
- "(a>b)>c" ("<a><b></b></a>")
- "(a>b)+c" ("<a><b></b></a>"
+ "a>(b)" ("<a href=\"\"><b></b></a>")
+ "(a>b)>c" ("<a href=\"\"><b></b></a>")
+ "(a>b)+c" ("<a href=\"\"><b></b></a>"
"<c></c>")
"z+(a>b)+c+k" ("<z></z>"
- "<a><b></b></a>"
+ "<a href=\"\"><b></b></a>"
"<c></c>"
"<k></k>")
- "(a)*2" ("<a></a>"
- "<a></a>")
- "((a)*2)" ("<a></a>"
- "<a></a>")
- "((a))*2" ("<a></a>"
- "<a></a>")
- "(a>b)*2" ("<a><b></b></a>"
- "<a><b></b></a>")
- "(a+b)*2" ("<a></a>"
+ "(a)*2" ("<a href=\"\"></a>"
+ "<a href=\"\"></a>")
+ "((a)*2)" ("<a href=\"\"></a>"
+ "<a href=\"\"></a>")
+ "((a))*2" ("<a href=\"\"></a>"
+ "<a href=\"\"></a>")
+ "(a>b)*2" ("<a href=\"\"><b></b></a>"
+ "<a href=\"\"><b></b></a>")
+ "(a+b)*2" ("<a href=\"\"></a>"
"<b></b>"
- "<a></a>"
+ "<a href=\"\"></a>"
"<b></b>"))
(define-zencoding-transform-html-test-case Text
- "a{Click me}" ("<a>Click me</a>")
- "a>{Click me}*3" ("<a>"
+ "a{Click me}" ("<a href=\"\">Click me</a>")
+ "a>{Click me}*3" ("<a href=\"\">"
" Click me"
" Click me"
" Click me"
"</a>")
- "a{click}+b{here}" ("<a>click</a>"
+ "a{click}+b{here}" ("<a href=\"\">click</a>"
"<b>here</b>")
- "a>{click}+b{here}" ("<a>"
+ "a>{click}+b{here}" ("<a href=\"\">"
" click"
" <b>here</b>"
"</a>")
@@ -300,30 +299,28 @@
"p>{Click }+a{here}+{ to continue}"
("<p>"
" Click "
- " <a>here</a>"
+ " <a href=\"\">here</a>"
" to continue"
"</p>")
"p{Click }+a{here}+{ to continue}"
- ("<p>"
- " Click "
- "</p>"
- "<a>here</a>"
+ ("<p>Click </p>"
+ "<a href=\"\">here</a>"
" to continue"))
(define-zencoding-transform-html-test-case Climb-up
- "a>b>c^d" ("<a>"
+ "a>b>c^d" ("<a href=\"\">"
" <b><c></c></b>"
" <d></d>"
"</a>")
- "a>b>c^^d" ("<a><b><c></c></b></a>"
+ "a>b>c^^d" ("<a href=\"\"><b><c></c></b></a>"
"<d></d>")
- "a*2>b*2>c^d" ("<a>"
+ "a*2>b*2>c^d" ("<a href=\"\">"
" <b><c></c></b>"
" <b><c></c></b>"
" <d></d>"
"</a>"
- "<a>"
+ "<a href=\"\">"
" <b><c></c></b>"
" <b><c></c></b>"
" <d></d>"
@@ -332,14 +329,13 @@
"div+a>p>span{foo}+em>b^^^p"
("<div>"
"</div>"
- "<a>"
+ "<a href=\"\">"
" <p>"
" <span>foo</span>"
" <em><b></b></em>"
" </p>"
"</a>"
- "<p>"
- "</p>")
+ "<p></p>")
"div+div>p>span+em^blockquote{foo}"
("<div>"
@@ -356,7 +352,7 @@
(define-zencoding-transform-html-test-case Filter-comment
"a.b|c" ("<!-- .b -->"
- "<a class=\"b\"></a>"
+ "<a class=\"b\" href=\"\"></a>"
"<!-- /.b -->")
"#a>.b|c" ("<!-- #a -->"
"<div id=\"a\">"
diff --git a/tools/json2hash b/tools/json2hash
index 0accbcd..8dbe9ae 100755
--- a/tools/json2hash
+++ b/tools/json2hash
@@ -37,6 +37,8 @@ class Processor(object):
self._print(v)
self.out.write('\n')
self.out.write(')\n')
+ elif _type is bool:
+ self.out.write('t' if data else 'nil')
elif (_type is str or _type is unicode):
self.out.write(pystr2elstrexp(data))
else: # number ?
diff --git a/zencoding-mode.el b/zencoding-mode.el
index 98c4a02..5fee90a 100644
--- a/zencoding-mode.el
+++ b/zencoding-mode.el
@@ -131,191 +131,132 @@
;; Don't edit.
(zencoding-defparameter zencoding-snippets
(let ((tbl (make-hash-table :test 'equal)))
-(puthash "xml" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "xml" tbl)
-(puthash "extends" "html" tbl)
-(puthash "filters" "html" tbl)
-tbl) tbl)
-(puthash "scss" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
-(puthash "sass" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
-(puthash "less" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
-(puthash "variables" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "lang" "en" tbl)
-(puthash "locale" "en-US" tbl)
-(puthash "charset" "UTF-8" tbl)
-(puthash "indentation" "\t" tbl)
-(puthash "newline" "\n" tbl)
-tbl) tbl)
-(puthash "stylus" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "extends" "css" tbl)
-tbl) tbl)
(puthash "html" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "html" tbl)
-(puthash "abbreviations" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "a:link" "<a href=\"http://|\">" tbl)
-(puthash "doc4" "html>(head>meta[http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\"]+title{${1:Document}})" tbl)
-(puthash "input:datetime-local" "inp[type=datetime-local]" tbl)
-(puthash "input:reset" "input:button[type=reset]" tbl)
-(puthash "meta:vp" "<meta name=\"viewport\" content=\"width=${1:device-width}, user-scalable=${2:no}, initial-scale=${3:1.0}, maximum-scale=${4:1.0}, minimum-scale=${5:1.0}\" />" tbl)
+(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "c" "<!-- |${child} -->" tbl)
+(puthash "!!!" "<!doctype html>" tbl)
+(puthash "!!!xxs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" tbl)
+(puthash "cc:ie6" "<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->" tbl)
+(puthash "cc:ie" "<!--[if IE]>\n\t${child}|\n<![endif]-->" tbl)
+(puthash "!!!xs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" tbl)
+(puthash "!!!4t" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" tbl)
+(puthash "cc:noie" "<!--[if !IE]><!-->\n\t${child}|\n<!--<![endif]-->" tbl)
+(puthash "!!!4s" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" tbl)
+(puthash "!!!xt" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" tbl)
+tbl) tbl)
+(puthash "aliases" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "a:link" "a href=http://" tbl)
+(puthash "doc4" "html>(head>meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"+title{Document})" tbl)
+(puthash "input:datetime-local" "input type=datetime-local" tbl)
+(puthash "input:reset" "input type=reset" tbl)
+(puthash "meta:vp" "meta name=viewport content=\"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\"" tbl)
(puthash "colg" "colgroup" tbl)
-(puthash "figc" "figcaption" tbl)
-(puthash "btn:s" "button[type=submit]" tbl)
-(puthash "btn:r" "button[type=reset]" tbl)
-(puthash "style" "<style>" tbl)
+(puthash "btn:s" "button type=submit" tbl)
+(puthash "btn:r" "button type=reset" tbl)
+(puthash "tr+" "tr>td" tbl)
(puthash "adr" "address" tbl)
-(puthash "img" "<img src=\"\" alt=\"\" />" tbl)
-(puthash "bdo:l" "<bdo dir=\"ltr\">" tbl)
-(puthash "param" "<param name=\"\" value=\"\" />" tbl)
+(puthash "bdo:l" "bdo dir=ltr" tbl)
(puthash "colgroup+" "colgroup>col" tbl)
-(puthash "btn:b" "button[type=button]" tbl)
-(puthash "form:post" "<form action=\"\" method=\"post\">" tbl)
-(puthash "bdo:r" "<bdo dir=\"rtl\">" tbl)
+(puthash "btn:b" "button type=button" tbl)
+(puthash "form:post" "form action method=post" tbl)
+(puthash "bdo:r" "bdo dir=rtl" tbl)
(puthash "fig" "figure" tbl)
-(puthash "input:radio" "inp[type=radio]" tbl)
-(puthash "link:print" "<link rel=\"stylesheet\" href=\"${1:print}.css\" media=\"print\" />" tbl)
+(puthash "input:radio" "input type=radio" tbl)
+(puthash "link:print" "link rel=stylesheet href=print.css media=print" tbl)
(puthash "opt" "option" tbl)
(puthash "input:i" "input:image" tbl)
-(puthash "input:h" "input:hidden" tbl)
+(puthash "figc" "figcaption" tbl)
(puthash "input:f" "input:file" tbl)
(puthash "input:c" "input:checkbox" tbl)
(puthash "input:b" "input:button" tbl)
-(puthash "abbr" "<abbr title=\"\">" tbl)
-(puthash "colg+" "colgroup>col" tbl)
-(puthash "input:t" "inp" tbl)
+(puthash "input:t" "input" tbl)
(puthash "input:p" "input:password" tbl)
(puthash "input:s" "input:submit" tbl)
(puthash "input:r" "input:radio" tbl)
(puthash "ifr" "iframe" tbl)
(puthash "emb" "embed" tbl)
(puthash "optg+" "optgroup>option" tbl)
-(puthash "isindex" "<isindex/>" tbl)
-(puthash "html:5" "!!!+doc[lang=${lang}]" tbl)
-(puthash "link:atom" "<link rel=\"alternate\" type=\"application/atom+xml\" title=\"Atom\" href=\"${1:atom.xml}\" />" tbl)
-(puthash "table+" "table>tr>td" tbl)
(puthash "cmd" "command" tbl)
+(puthash "html:5" "!!!+doc lang=en" tbl)
+(puthash "link:atom" "link rel=alternate type=\"application/atom+xml\" title=Atom href=atom.xml" tbl)
+(puthash "table+" "table>tr>td" tbl)
(puthash "art" "article" tbl)
-(puthash "frame" "<frame/>" tbl)
-(puthash "area:r" "<area shape=\"rect\" coords=\"\" href=\"\" alt=\"\" />" tbl)
-(puthash "area:p" "<area shape=\"poly\" coords=\"\" href=\"\" alt=\"\" />" tbl)
-(puthash "input:date" "inp[type=date]" tbl)
-(puthash "meta" "<meta/>" tbl)
-(puthash "video" "<video src=\"\">" tbl)
-(puthash "input:button" "<input type=\"button\" value=\"\" />" tbl)
-(puthash "area:d" "<area shape=\"default\" href=\"\" alt=\"\" />" tbl)
-(puthash "area:c" "<area shape=\"circle\" coords=\"\" href=\"\" alt=\"\" />" tbl)
+(puthash "input:search" "input type=search" tbl)
+(puthash "area:r" "area shape=rect coords href alt" tbl)
+(puthash "area:p" "area shape=poly coords href alt" tbl)
+(puthash "input:date" "input type=date" tbl)
+(puthash "input:button" "input type=button" tbl)
+(puthash "area:d" "area shape=default href alt" tbl)
+(puthash "area:c" "area shape=circle coords href alt" tbl)
(puthash "out" "output" tbl)
(puthash "ftr" "footer" tbl)
(puthash "dlg" "dialog" tbl)
-(puthash "script:src" "<script src=\"\">" tbl)
-(puthash "form:get" "<form action=\"\" method=\"get\">" tbl)
-(puthash "meta:utf" "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\" />" tbl)
-(puthash "label" "<label for=\"\">" tbl)
-(puthash "basefont" "<basefont/>" tbl)
-(puthash "input:time" "inp[type=time]" tbl)
-(puthash "link:favicon" "<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"${1:favicon.ico}\" />" tbl)
-(puthash "menu:toolbar" "menu[type=toolbar]>" tbl)
+(puthash "script:src" "script src" tbl)
+(puthash "form:get" "form action method=get" tbl)
+(puthash "meta:utf" "meta http-equiv=Content-Type content=\"text/html;charset=UTF-8\"" tbl)
+(puthash "input:time" "input type=time" tbl)
+(puthash "menu:toolbar" "menu type=toolbar" tbl)
(puthash "prog" "progress" tbl)
-(puthash "input:email" "inp[type=email]" tbl)
-(puthash "str" "strong" tbl)
+(puthash "input:email" "input type=email" tbl)
+(puthash "input:submit" "input type=submit" tbl)
(puthash "leg" "legend" tbl)
-(puthash "acronym" "<acronym title=\"\">" tbl)
(puthash "ol+" "ol>li" tbl)
-(puthash "tr+" "tr>td" tbl)
(puthash "optgroup+" "optgroup>option" tbl)
-(puthash "base" "<base href=\"\" />" tbl)
(puthash "bq" "blockquote" tbl)
-(puthash "br" "<br/>" tbl)
(puthash "src" "source" tbl)
(puthash "obj" "object" tbl)
(puthash "dl+" "dl>dt+dd" tbl)
-(puthash "script" "<script>" tbl)
(puthash "acr" "acronym" tbl)
-(puthash "input:password" "inp[type=password]" tbl)
-(puthash "col" "<col/>" tbl)
-(puthash "html:4t" "!!!4t+doc4[lang=${lang}]" tbl)
-(puthash "input:file" "inp[type=file]" tbl)
-(puthash "html:4s" "!!!4s+doc4[lang=${lang}]" tbl)
+(puthash "input:password" "input type=password" tbl)
+(puthash "html:4t" "!!!4t+doc4 lang=en" tbl)
+(puthash "input:file" "input type=file" tbl)
+(puthash "html:4s" "!!!4s+doc4 lang=en" tbl)
(puthash "tarea" "textarea" tbl)
-(puthash "select" "<select name=\"\" id=\"\">" tbl)
-(puthash "input:number" "inp[type=number]" tbl)
-(puthash "input:range" "inp[type=range]" tbl)
-(puthash "area" "<area shape=\"\" coords=\"\" href=\"\" alt=\"\" />" tbl)
-(puthash "input:image" "<input type=\"image\" src=\"\" alt=\"\" />" tbl)
+(puthash "link:favicon" "link icon rel=shortcut type=image/x-icon href=favicon.ico" tbl)
+(puthash "input:number" "input type=number" tbl)
+(puthash "input:range" "input type=range" tbl)
+(puthash "input:image" "input type=image src alt" tbl)
(puthash "ul+" "ul>li" tbl)
-(puthash "input:search" "inp[type=search]" tbl)
-(puthash "html:xxs" "!!!xxs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]" tbl)
-(puthash "input:month" "inp[type=month]" tbl)
+(puthash "html:xxs" "!!!xxs+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en" tbl)
+(puthash "input:month" "input type=month" tbl)
(puthash "fset" "fieldset" tbl)
-(puthash "meta:win" "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1251\" />" tbl)
-(puthash "option" "<option value=\"\">" tbl)
-(puthash "form" "<form action=\"\">" tbl)
-(puthash "hr" "<hr/>" tbl)
+(puthash "meta:win" "meta http-equiv=Content-Type content=\"text/html;charset=windows-1251\"" tbl)
+(puthash "menu:t" "menu:toolbar" tbl)
(puthash "menu:c" "menu:context" tbl)
-(puthash "link" "<link rel=\"stylesheet\" href=\"\" />" tbl)
-(puthash "input" "<input type=\"${1:text}\" />" tbl)
-(puthash "link:rss" "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"${1:rss.xml}\" />" tbl)
+(puthash "link:rss" "link rel=alternate type=application/rss+xml title=RSS href=rss.xml" tbl)
(puthash "select+" "select>option" tbl)
(puthash "hdr" "header" tbl)
(puthash "cap" "caption" tbl)
(puthash "det" "details" tbl)
-(puthash "keygen" "<keygen/>" tbl)
-(puthash "link:touch" "<link rel=\"apple-touch-icon\" href=\"${1:favicon.png}\" />" tbl)
-(puthash "iframe" "<iframe src=\"\" frameborder=\"0\">" tbl)
-(puthash "link:css" "<link rel=\"stylesheet\" href=\"${1:style}.css\" />" tbl)
-(puthash "input:week" "inp[type=week]" tbl)
-(puthash "embed" "<embed src=\"\" type=\"\" />" tbl)
+(puthash "link:touch" "link rel=apple-touch-icon href=favicon.png" tbl)
+(puthash "str" "strong" tbl)
+(puthash "link:css" "link rel=stylesheet href=style.css" tbl)
+(puthash "input:week" "input type=week" tbl)
(puthash "optg" "optgroup" tbl)
-(puthash "input:datetime" "inp[type=datetime]" tbl)
-(puthash "inp" "<input type=\"${1:text}\" name=\"\" id=\"\" />" tbl)
-(puthash "datag" "datagrid" tbl)
-(puthash "menu:t" "menu:toolbar" tbl)
+(puthash "input:datetime" "input type=datetime" tbl)
+(puthash "input:h" "input:hidden" tbl)
(puthash "!" "html:5" tbl)
-(puthash "html:xml" "<html xmlns=\"http://www.w3.org/1999/xhtml\">" tbl)
+(puthash "html:xml" "html xmlns=http://www.w3.org/1999/xhtml" tbl)
(puthash "btn" "button" tbl)
-(puthash "input:url" "inp[type=url]" tbl)
-(puthash "menu:context" "menu[type=context]>" tbl)
-(puthash "fst" "fieldset" tbl)
-(puthash "map" "<map name=\"\">" tbl)
-(puthash "input:color" "inp[type=color]" tbl)
-(puthash "meta:compat" "<meta http-equiv=\"X-UA-Compatible\" content=\"${1:IE=7}\" />" tbl)
-(puthash "input:hidden" "input[type=hidden name]" tbl)
-(puthash "object" "<object data=\"\" type=\"\">" tbl)
-(puthash "a:mail" "<a href=\"mailto:|\">" tbl)
-(puthash "html:xs" "!!!xs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]" tbl)
-(puthash "html:xt" "!!!xt+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]" tbl)
-(puthash "a" "<a href=\"\">" tbl)
+(puthash "input:url" "input type=url" tbl)
+(puthash "menu:context" "menu type=context" tbl)
+(puthash "colg+" "colgroup>col" tbl)
+(puthash "input:color" "input type=color" tbl)
+(puthash "meta:compat" "meta http-equiv=X-UA-Compatible content=\"IE=edge,chrome=1\"" tbl)
+(puthash "input:hidden" "input type=hidden" tbl)
+(puthash "a:mail" "a href=mailto:" tbl)
+(puthash "html:xs" "!!!xs+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en" tbl)
+(puthash "html:xt" "!!!xt+doc4 xmlns=http://www.w3.org/1999/xhtml xml:lang=en" tbl)
(puthash "datal" "datalist" tbl)
(puthash "map+" "map>area" tbl)
(puthash "kg" "keygen" tbl)
-(puthash "textarea" "<textarea name=\"\" id=\"\" cols=\"${1:30}\" rows=\"${2:10}\">" tbl)
-(puthash "doc" "html>(head>meta[charset=UTF-8]+title{${1:Document}})+body" tbl)
-(puthash "input:submit" "<input type=\"submit\" value=\"\" />" tbl)
-(puthash "input:text" "inp" tbl)
-(puthash "input:checkbox" "inp[type=checkbox]" tbl)
-(puthash "command" "<command/>" tbl)
+(puthash "doc" "html>(head>meta charset=UTF-8+title{Document})+body" tbl)
+(puthash "datag" "datagrid" tbl)
+(puthash "input:text" "input" tbl)
+(puthash "input:checkbox" "input type=checkbox" tbl)
+(puthash "fst" "fieldset" tbl)
(puthash "sect" "section" tbl)
-(puthash "audio" "<audio src=\"\">" tbl)
-(puthash "bdo" "<bdo dir=\"\">" tbl)
tbl) tbl)
-(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "c" "<!-- |${child} -->" tbl)
-(puthash "!!!" "<!doctype html>" tbl)
-(puthash "!!!xxs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" tbl)
-(puthash "cc:ie6" "<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->" tbl)
-(puthash "cc:ie" "<!--[if IE]>\n\t${child}|\n<![endif]-->" tbl)
-(puthash "!!!xs" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" tbl)
-(puthash "!!!4t" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" tbl)
-(puthash "cc:noie" "<!--[if !IE]><!-->\n\t${child}|\n<!--<![endif]-->" tbl)
-(puthash "!!!4s" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" tbl)
-(puthash "!!!xt" "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" tbl)
-tbl) tbl)
-(puthash "filters" "html" tbl)
tbl) tbl)
(puthash "css" (let ((tbl (make-hash-table :test 'equal)))
(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
@@ -882,62 +823,6 @@ tbl) tbl)
(puthash "cps" "caption-side:|;" tbl)
(puthash "v:v" "visibility:visible;" tbl)
tbl) tbl)
-(puthash "filters" "html" tbl)
-tbl) tbl)
-(puthash "haml" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "xml" tbl)
-(puthash "extends" "html" tbl)
-(puthash "filters" "haml" tbl)
-tbl) tbl)
-(puthash "xsl" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "profile" "xml" tbl)
-(puthash "abbreviations" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "ch" "<xsl:choose>" tbl)
-(puthash "co" "<xsl:copy-of select=\"\"/>" tbl)
-(puthash "fall" "<xsl:fallback>" tbl)
-(puthash "vare" "<xsl:variable name=\"\" select=\"\"/>" tbl)
-(puthash "ap" "<xsl:apply-templates select=\"\" mode=\"\"/>" tbl)
-(puthash "api" "<xsl:apply-imports/>" tbl)
-(puthash "attrs" "<xsl:attribute-set name=\"\">" tbl)
-(puthash "strip" "<xsl:strip-space elements=\"\"/>" tbl)
-(puthash "cp" "<xsl:copy select=\"\"/>" tbl)
-(puthash "if" "<xsl:if test=\"\">" tbl)
-(puthash "par" "<xsl:param name=\"\">" tbl)
-(puthash "val" "<xsl:value-of select=\"\"/>" tbl)
-(puthash "for" "each" tbl)
-(puthash "tn" "<xsl:template name=\"\">" tbl)
-(puthash "imp" "<xsl:import href=\"\"/>" tbl)
-(puthash "tm" "<xsl:template match=\"\" mode=\"\">" tbl)
-(puthash "call" "<xsl:call-template name=\"\"/>" tbl)
-(puthash "var" "<xsl:variable name=\"\">" tbl)
-(puthash "inc" "<xsl:include href=\"\"/>" tbl)
-(puthash "proc" "<xsl:processing-instruction name=\"\">" tbl)
-(puthash "pres" "<xsl:preserve-space elements=\"\"/>" tbl)
-(puthash "sort" "<xsl:sort select=\"\" order=\"\"/>" tbl)
-(puthash "pare" "<xsl:param name=\"\" select=\"\"/>" tbl)
-(puthash "nam" "<namespace-alias stylesheet-prefix=\"\" result-prefix=\"\"/>" tbl)
-(puthash "xsl:when" "<xsl:when test=\"\">" tbl)
-(puthash "wh" "xsl:when" tbl)
-(puthash "tname" "tn" tbl)
-(puthash "key" "<xsl:key name=\"\" match=\"\" use=\"\"/>" tbl)
-(puthash "wp" "<xsl:with-param name=\"\" select=\"\"/>" tbl)
-(puthash "msg" "<xsl:message terminate=\"no\">" tbl)
-(puthash "tmatch" "tm" tbl)
-(puthash "attr" "<xsl:attribute name=\"\">" tbl)
-(puthash "tex" "<xsl:text></xsl:text>" tbl)
-(puthash "elem" "<xsl:element name=\"\">" tbl)
-(puthash "num" "<xsl:number value=\"\"/>" tbl)
-(puthash "choose+" "xsl:choose>xsl:when+xsl:otherwise" tbl)
-(puthash "each" "<xsl:for-each select=\"\">" tbl)
-(puthash "ot" "<xsl:otherwise>" tbl)
-(puthash "com" "<xsl:comment>" tbl)
-(puthash "xsl" "!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\n|}" tbl)
-tbl) tbl)
-(puthash "extends" "html" tbl)
-(puthash "snippets" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "!!!" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" tbl)
-tbl) tbl)
-(puthash "filters" "html, xsl" tbl)
tbl) tbl)
tbl))
;; src/preferences.el
@@ -945,6 +830,572 @@ tbl))
;; Don't edit.
(zencoding-defparameter zencoding-preferences
(let ((tbl (make-hash-table :test 'equal)))
+(puthash "html" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "tags" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "code" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "meter" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "tbody" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "font" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "noscript" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "style" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "img" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+(puthash "alt" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "title" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "menu" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "tt" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "tr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "param" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "name" "" tbl)
+(puthash "value" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "li" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "source" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "tfoot" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "th" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "input" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "type" "text" tbl)
+(puthash "name" "" tbl)
+(puthash "value" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "td" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dl" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "blockquote" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "fieldset" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "big" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dd" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "kbd" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "optgroup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "dt" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "wbr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "button" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "summary" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "p" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "small" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "output" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "div" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "dir" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "em" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "datalist" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "frame" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "hgroup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "meta" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "video" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "rt" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "canvas" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "rp" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "sub" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "bdo" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "dir" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "bdi" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "label" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "for" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "acronym" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "title" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "sup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "progress" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "body" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "basefont" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "base" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "href" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "br" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "address" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "article" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "strong" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "legend" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "ol" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "script" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "caption" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "s" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dialog" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "col" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h2" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h3" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h1" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h6" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h4" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "h5" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "header" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "table" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "select" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "name" "" tbl)
+(puthash "id" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "noframes" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "span" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "area" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "shape" "" tbl)
+(puthash "href" "" tbl)
+(puthash "coords" "" tbl)
+(puthash "alt" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "mark" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "dfn" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "strike" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "cite" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "thead" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "head" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "option" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "value" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "form" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "action" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "hr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "var" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "link" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "href" "" tbl)
+(puthash "rel" "stylesheet" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "ruby" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "b" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "colgroup" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "keygen" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "ul" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "applet" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "del" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "iframe" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+(puthash "frameborder" "0" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "embed" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+(puthash "type" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "pre" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "frameset" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "figure" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "ins" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "aside" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "html" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "nav" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "details" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "u" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "samp" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "map" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "name" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "track" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" t tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "object" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "type" "" tbl)
+(puthash "data" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "figcaption" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "a" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "href" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "center" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "textarea" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "rows" "10" tbl)
+(puthash "cols" "30" tbl)
+(puthash "name" "" tbl)
+(puthash "id" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "footer" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "i" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "q" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "command" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "time" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+(puthash "audio" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "src" "" tbl)
+tbl) tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "section" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "block" t tbl)
+tbl) tbl)
+(puthash "abbr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "selfClosing" nil tbl)
+(puthash "defaultAttr" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "title" "" tbl)
+tbl) tbl)
+(puthash "block" nil tbl)
+tbl) tbl)
+tbl) tbl)
+tbl) tbl)
(puthash "css" (let ((tbl (make-hash-table :test 'equal)))
(puthash "vendorPrefixesProperties" (let ((tbl (make-hash-table :test 'equal)))
(puthash "text-fill-color" (vector
@@ -2318,6 +2769,10 @@ tbl))
"Function to execute when expanding a leaf node in the
Zencoding AST.")
+(zencoding-defparameter
+ zencoding-tag-settings-table
+ (gethash "tags" (gethash "html" zencoding-preferences)))
+
(defvar zencoding-filters
'("html" (zencoding-primary-filter zencoding-make-html-tag)
"c" (zencoding-primary-filter zencoding-make-commented-html-tag)
@@ -2353,43 +2808,65 @@ tbl))
(classes (pop tag-info))
(props (pop tag-info))
(txt (pop tag-info))
- (self-closing? (not (or txt content
- (and has-body?
- (not (member name zencoding-self-closing-tags)))))))
- (funcall tag-maker name id classes props txt self-closing?
+ (settings (gethash name zencoding-tag-settings-table)))
+ (funcall tag-maker name has-body? id classes props txt settings
(if content content
(if zencoding-leaf-function (funcall zencoding-leaf-function))))))
-(defun zencoding-make-html-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+(defun zencoding-hash-to-list (hash &optional proc)
+ (unless proc (setq proc #'cons))
+ (loop for key being the hash-keys of hash using (hash-values val)
+ collect (funcall proc key val)))
+
+(defun zencoding-merge-tag-props (default-table tag-props)
+ (if default-table
+ (let ((tbl (copy-hash-table default-table)))
+ (loop for prop in tag-props do
+ (puthash (symbol-name (car prop)) (cadr prop) tbl))
+ (zencoding-hash-to-list tbl 'list))
+ tag-props))
+
+(defun zencoding-make-html-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create HTML markup string"
- (let* ((id (zencoding-concat-or-empty " id=\"" tag-id "\""))
- (classes (zencoding-mapconcat-or-empty " class=\"" tag-classes " " "\""))
- (props (zencoding-mapconcat-or-empty " " tag-props " " nil
- (lambda (prop)
- (concat (symbol-name (car prop)) "=\"" (cadr prop) "\""))))
+ (let* ((id (zencoding-concat-or-empty " id=\"" tag-id "\""))
+ (classes (zencoding-mapconcat-or-empty " class=\"" tag-classes " " "\""))
+ (props (let* ((tag-props-default
+ (and settings (gethash "defaultAttr" settings)))
+ (merged-tag-props
+ (zencoding-merge-tag-props
+ tag-props-default
+ tag-props)))
+ (zencoding-mapconcat-or-empty
+ " " merged-tag-props " " nil
+ (lambda (prop)
+ (let ((key (car prop)))
+ (concat (if (symbolp key) (symbol-name key) key)
+ "=\"" (cadr prop) "\""))))))
(content-multiline? (and content (string-match "\n" content)))
- (block-tag? (or (member tag-name zencoding-block-tags)
- (and (> (length tag-name) 1)
- (not (member tag-name zencoding-inline-tags)))))
- (lf (if (or content-multiline? block-tag?)
- "\n")))
- (concat "<" tag-name id classes props (if self-closing?
- "/>"
- (concat ">"
- (if tag-txt
- (if (or content-multiline? block-tag?)
- (zencoding-indent tag-txt)
- tag-txt))
- (if content
- (if (or content-multiline? block-tag?)
- (zencoding-indent content)
- content))
- lf
- "</" tag-name ">")))))
-
-(defun zencoding-make-commented-html-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+ (block-tag? (and settings (gethash "block" settings)))
+ (self-closing? (and (not (or tag-txt content))
+ (or (not tag-has-body?)
+ (and settings (gethash "selfClosing" settings)))))
+ (lf (if (or content-multiline? block-tag?) "\n")))
+ ;(print (concat "block-tag? " tag-name))
+ ;(print (if block-tag? "yes" "no"))
+ (concat "<" tag-name id classes props
+ (if self-closing? "/>"
+ (concat ">"
+ (if tag-txt
+ (if (or content-multiline? block-tag?)
+ (zencoding-indent tag-txt)
+ tag-txt))
+ (if content
+ (if (or content-multiline? block-tag?)
+ (zencoding-indent content)
+ content))
+ lf
+ "</" tag-name ">")))))
+
+(defun zencoding-make-commented-html-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create HTML markup string with extra comments for elements with #id or .classes"
- (let ((body (zencoding-make-html-tag tag-name tag-id tag-classes tag-props tag-txt self-closing? content)))
+ (let ((body (zencoding-make-html-tag tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)))
(if (or tag-id tag-classes)
(let ((id (zencoding-concat-or-empty "#" tag-id))
(classes (zencoding-mapconcat-or-empty "." tag-classes ".")))
@@ -2398,7 +2875,7 @@ tbl))
"\n<!-- /" id classes " -->"))
body)))
-(defun zencoding-make-haml-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+(defun zencoding-make-haml-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create HAML string"
(let ((name (if (and (equal tag-name "div")
(or tag-id tag-classes))
@@ -2406,22 +2883,24 @@ tbl))
(concat "%" tag-name)))
(id (zencoding-concat-or-empty "#" tag-id))
(classes (zencoding-mapconcat-or-empty "." tag-classes "."))
- (props (zencoding-mapconcat-or-empty "{" tag-props ", " "}"
- (lambda (prop)
- (concat ":" (symbol-name (car prop)) " => \"" (cadr prop) "\"")))))
+ (props (zencoding-mapconcat-or-empty
+ "{" tag-props ", " "}"
+ (lambda (prop)
+ (concat ":" (symbol-name (car prop)) " => \"" (cadr prop) "\"")))))
(concat name id classes props
(if tag-txt
(zencoding-indent tag-txt))
(if content
(zencoding-indent content)))))
-(defun zencoding-make-hiccup-tag (tag-name tag-id tag-classes tag-props tag-txt self-closing? content)
+(defun zencoding-make-hiccup-tag (tag-name tag-has-body? tag-id tag-classes tag-props tag-txt settings content)
"Create Hiccup string"
(let* ((id (zencoding-concat-or-empty "#" tag-id))
(classes (zencoding-mapconcat-or-empty "." tag-classes "."))
- (props (zencoding-mapconcat-or-empty " {" tag-props ", " "}"
- (lambda (prop)
- (concat ":" (symbol-name (car prop)) " \"" (cadr prop) "\""))))
+ (props (zencoding-mapconcat-or-empty
+ " {" tag-props ", " "}"
+ (lambda (prop)
+ (concat ":" (symbol-name (car prop)) " \"" (cadr prop) "\""))))
(content-multiline? (and content (string-match "\n" content)))
(block-tag? (or (member tag-name zencoding-block-tags)
(and (> (length tag-name) 1)