From e6d3da4e084a8247e29e7d287831697f82646411 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 4 Jul 2016 18:13:18 +0300 Subject: [PATCH] Fix the rest of bugs; output is now correct on TESTCASE.txt --- htmLawed.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/htmLawed.js b/htmLawed.js index bc4520e..d25de23 100644 --- a/htmLawed.js +++ b/htmLawed.js @@ -89,7 +89,7 @@ var htmLawed = module.exports = m = x.replace(/\s+/g, '').split(';'); for (v in m) { - x = v.split(':', 2); + x = m[v].split(':', 2); if (x[1]) C.schemes[x[0]] = htmLawed._flip(x[1].split(',')); } @@ -304,7 +304,7 @@ var htmLawed = module.exports = else { var add = ''; // Nesting - close open tags that need to be - for (var j = 0, cj = q.length; j < cj; j++) + while (q.length) { var d = q.pop(); if (d == e) @@ -368,18 +368,20 @@ var htmLawed = module.exports = for (var k = 0, kc = q.length; k < kc; k++) { d = q[k]; - var ok2 = []; if (cont.S[d]) { q2.push(d); continue; } - ok2 = cont.I[d] ? el.I : el.F; + var ok2 = cont.I[d] ? el.I : el.F; if (cont.O[d]) ok2 = { ...ok2, ...cont.O[d] }; if (cont.N[d]) + { + ok2 = { ...ok2 }; for (var _k in cont.N[d]) delete ok2[_k]; + } if (!ok2[e]) { if (!k && !inOk[e]) @@ -838,7 +840,7 @@ var htmLawed = module.exports = 'R':'r', 'R':'r', 'r':'r', 'r':'r', 'L':'l', 'L':'l', 'l':'l', 'l':'l', '(':'(', '(':'(', ')':')', ')':')', - ':':':', ':':':', '"':'"', '"':'"', + ':':':', ':':':', '"':'"', '"':'"', // FIXME PHP version has bug here: bad codes for ':' ''':"'", ''':"'", '/':'/', '/':'/', '*':'*', '*':'*', '\':'\\', '\':'\\' }, @@ -1165,7 +1167,7 @@ var htmLawed = module.exports = else if ((m = htmLawed.FONT_SIZE[m[4]])) a2 += ' font-size: '+m.replace(/"/g, "'")+';'; // ' } - while ((m = /(^|\s)face\s*=\s*('|")?([^=]+?)\2/i.exec(a) || /(^|\s)face\s*=(\s*)(\S+)/i.exec(a))) // ' + while ((m = /(^|\s)face\s*=\s*('|")([^=]+)\2/i.exec(a) || /(^|\s)face\s*=(\s*)(\S+)/i.exec(a))) // FIXME: PHP version has bug here: ("|')? { a = a.replace(m[0], ' '); a2 += ' font-family: '+m[3].trim().replace(/"/g, "'")+';'; // '