diff --git a/common/modules/dom.jsm b/common/modules/dom.jsm
index 58ec3284..dc364868 100644
--- a/common/modules/dom.jsm
+++ b/common/modules/dom.jsm
@@ -1501,11 +1501,14 @@ var DOM = Class("DOM", {
* entities.
*
* @param {string} str
+ * @param {boolean} simple If true, only escape for the simple case
+ * of text nodes.
* @returns {string}
*/
- escapeHTML: function escapeHTML(str) {
+ escapeHTML: function escapeHTML(str, simple) {
let map = { "'": "'", '"': """, "%": "%", "&": "&", "<": "<", ">": ">" };
- return str.replace(/['"&<>]/g, function (m) map[m]);
+ let regexp = simple ? /[<>]/g : /['"&<>]/g;
+ return str.replace(regexp, function (m) map[m]);
},
/**
diff --git a/common/modules/help.jsm b/common/modules/help.jsm
index 1564d161..8b63395c 100644
--- a/common/modules/help.jsm
+++ b/common/modules/help.jsm
@@ -2,7 +2,7 @@
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
-/* use strict */
+"use strict";
defineModule("help", {
exports: ["help"],
@@ -11,7 +11,7 @@ defineModule("help", {
lazyRequire("completion", ["completion"]);
lazyRequire("overlay", ["overlay"]);
-lazyRequire("template", ["template"]);
+lazyRequire("template", ["template", "template_"]);
var HelpBuilder = Class("HelpBuilder", {
init: function init() {
@@ -132,11 +132,8 @@ var Help = Module("Help", {
.map(function (m) m[1]).uniq().slice(-1)[0];
- default xml namespace = NS;
function rec(text, level, li) {
- XML.ignoreWhitespace = XML.prettyPrinting = false;
-
- let res = <>>;
+ let res = [];
let list, space, i = 0;
@@ -145,10 +142,13 @@ var Help = Module("Help", {
continue;
else if (match.char) {
if (!list)
- res += list =
;
- let li = ;
- li.* += rec(match.content.replace(RegExp("^" + match.space, "gm"), ""), level + 1, li);
- list.* += li;
+ res.push(list = ["ul", {}]);
+ let li = ["li", {}];
+ li.push(rec(match.content
+ .replace(RegExp("^" + match.space, "gm"), ""),
+ level + 1,
+ li));
+ list.push(li);
}
else if (match.par) {
let [, par, tags] = /([^]*?)\s*((?:\[[^\]]+\])*)\n*$/.exec(match.par);
@@ -158,57 +158,52 @@ var Help = Module("Help", {
let group = !tags.length ? "" :
!tags.some(function (t) t == beta) ? "HelpNewsOld" : "HelpNewsNew";
if (i === 0 && li) {
- li.@highlight = group;
+ li[1]["dactyl:highlight"] = group;
group = "";
}
list = null;
if (level == 0 && /^.*:\n$/.test(match.par)) {
let text = par.slice(0, -1);
- res +=
{template.linkifyHelp(text, true)}
;
+ res.push(["h2", { tag: "news-" + text },
+ template_.linkifyHelp(text, true)]);
}
else {
let [, a, b] = /^(IMPORTANT:?)?([^]*)/.exec(par);
- res +=