1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-30 10:42:28 +01:00

Some string highlighting stuff.

This commit is contained in:
Kris Maglione
2008-11-01 22:05:27 +00:00
parent 96f54b7c88
commit 9c3fb60bc3
2 changed files with 36 additions and 10 deletions

View File

@@ -76,24 +76,51 @@ const template = {
},
highlightFilter: function (str, filter)
{
if (typeof str == "xml")
return str;
return this.highlightSubstrings(str, (function ()
{
let lcstr = String.toLowerCase(str);
let lcfilter = filter.toLowerCase();
let start = 0;
while ((start = lcstr.indexOf(lcfilter, start)) > -1)
{
yield [start, filter.length];
start += filter.length;
}
})());
},
highlightRegexp: function (str, re)
{
if (typeof str == "xml")
return str;
return this.highlightSubstrings(str, (function ()
{
while (res = re.exec(str))
yield [res.index, res[0].length];
})());
},
highlightSubstrings: function (str, iter)
{
if (typeof str == "xml")
return str;
if (str == "")
return <>{str}</>;
let lcstr = String(str).toLowerCase();
let lcfilter = filter.toLowerCase();
XML.ignoreWhitespace = false;
str = String(str).replace(" ", "\u00a0");
let s = <></>;
let start = 0;
let i;
while ((i = lcstr.indexOf(lcfilter, start)) > -1)
for (let [i, length] in iter)
{
XML.ignoreWhitespace = false;
s += <>{str.substring(start, i)}</>;
s += <span class="hl-Filter">{str.substr(i, filter.length)}</span>;
start = i + filter.length;
s += <span class="hl-Filter">{str.substr(i, length)}</span>;
start = i + length;
}
return s + <>{str.substr(start)}</>;
},