diff --git a/demo.html b/demo.html index b4a63e2..c93a72c 100644 --- a/demo.html +++ b/demo.html @@ -26,6 +26,9 @@

Pure JavaScript HTML5 Parser


+
+ +
@@ -57,23 +60,25 @@

Pure JavaScript HTML5 Parser

- diff --git a/htmlparser.js b/htmlparser.js index 625eee2..8b1e73c 100644 --- a/htmlparser.js +++ b/htmlparser.js @@ -266,6 +266,67 @@ return results; }; + this.HTMLtoJSON = function (html) { + var results = ""; + var level = 0; + HTMLParser(html, { + level: 0, + spar: '', + paths:[0], + moveLevel: function (step) { + this.level += step; + var topchar = this.paths[this.paths.length - 1] + if(step == 1){ + if( topchar != 'c' && topchar != 0){ + this.paths.push('c'); + results += ',\r\n' + this.spar + '"children":[' ; + }else if(topchar != 0){ + results += ',' + } + this.paths.push(this.level) + } else { + if(topchar =='c'){ + this.paths.pop(); + results += ']' ; + } + this.paths.pop() + } + this.spar = new Array(this.level + 1).join('\t'); + }, + start: function (tag, attrs, unary) { + this.moveLevel(1) + results += "{" + attrs.unshift({ + name:'component', + escaped:tag + }) + for (var i = 0; i < attrs.length; i++){ + results += '\r\n' + this.spar + '"' + attrs[i].name + '":"' + attrs[i].escaped + '"'; + if(i"; + } + }); + + return results; + }; + this.HTMLtoDOM = function (html, doc) { // There can be only one of these elements var one = makeMap("html,head,body,title");