Revision: 12659
Updated Code
at March 24, 2009 16:12 by postream
Updated Code
/* --------------------------------------------------------------- * YQL2DOM Plugin * * Convert YQL Jason results to a complete HTML Dom * Note: unfortunatly the YQL JSON format is lossy * Info: http://developer.yahoo.com/yql/guide/output-xml-json-conversion.html * * Warning: this plugin doesn't work in the right manner * The problem is that there's no way to extract the attributes in the right order * So for example: <p>just a <strong>test</strong></p> may arbitrary become <p><strong>test</strong>just a </p> * * @return: dom object * -------------------------------------------------------------*/ // in some cases we can only distinguish between tags and attributes by the name var YQL2DOM_CONTENT_TAGS = ['a','p','h1','h2','h3','h4','h5','h6','div','span','td', 'strong','em','i','b'] $.YQL2DOM = function(jsonResults, tag) { var htmlResult = ""; // just one content if (typeof(jsonResults) == 'string'){ return '<' + tag + '>' + jsonResults + '</' + tag + '>'; // array of the same tag }else if($.isArray(jsonResults)){ for (var i = 0; i < jsonResults.length; i++){ htmlResult += $.YQL2DOM(jsonResults[i], tag); } // just one tag }else if (typeof(jsonResults) == 'object'){ var childrenHTML = ""; var attributes = []; var attrID = 0; for (index in jsonResults){ if(tag == 'p') console.log('index: ' + index + ' | tag: ' + tag); // content if(index == 'content'){ childrenHTML += jsonResults[index]; if(tag == 'p') console.log('content ' + jsonResults[index]); // attribute or simple child }else if(typeof(jsonResults[index]) !== 'object' ){ if(tag == 'p') console.log('whonows ' + index); // test if it has a tag name if($.inArray(index, YQL2DOM_CONTENT_TAGS) != -1) // simple tag childrenHTML += '<' + index + '>' + jsonResults[index] + '</' + index + '>'; else // attribute attributes[attrID++] = index + "=\"" + jsonResults[index] + "\""; // child }else{ childrenHTML += $.YQL2DOM(jsonResults[index], index); } } if(tag === undefined){ // root htmlResult = childrenHTML; }else{ attributes = (attrID > 0)?' ' + attributes.join(' '):''; htmlResult = "<" + tag + attributes + ">" + childrenHTML + "</" + tag + ">"; } } return htmlResult; };
Revision: 12658
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 24, 2009 00:43 by postream
Initial Code
/* --------------------------------------------------------------- * YQL2DOM Plugin * * Convert YQL Jason results to a complete HTML Dom * Note: unfortunatly the YQL JSON format is lossy * Info: http://developer.yahoo.com/yql/guide/output-xml-json-conversion.html * * Warning: this plugin doesn't work in the right manner * The problem is that there's no way to extract the attributes in the right order * So for example: <p>just a <strong>test</strong></p> may arbitrary become <p><strong>test</strong>just a </p> * * @return: dom object * -------------------------------------------------------------*/ // in some cases we can only distinguish between tags and attributes by the name var YQL2DOM_CONTENT_TAGS = ['a','p','h1','h2','h3','h4','h5','h6','div','span','td', 'strong','em','i','b'] $.YQL2DOM = function(jsonResults, tag) { var htmlResult = ""; if($.isArray(jsonResults)){ // array of the same tag for (var i = 0; i < jsonResults.length; i++){ htmlResult += $.YQL2DOM(jsonResults[i], tag); } }else{ // just one tag var childrenHTML = ""; var attributes = []; var attrID = 0; for (index in jsonResults){ if(tag == 'p') console.log('index: ' + index + ' | tag: ' + tag); // content if(index == 'content'){ childrenHTML += jsonResults[index]; if(tag == 'p') console.log('content ' + jsonResults[index]); // attribute or simple child }else if(typeof(jsonResults[index]) !== 'object' ){ if(tag == 'p') console.log('whonows ' + index); // test if it has a tag name if($.inArray(index, YQL2DOM_CONTENT_TAGS) != -1) // simple tag childrenHTML += '<' + index + '>' + jsonResults[index] + '</' + index + '>'; else // attribute attributes[attrID++] = index + "=\"" + jsonResults[index] + "\""; // child }else{ childrenHTML += $.YQL2DOM(jsonResults[index], index); } } if(tag === undefined){ // root htmlResult = childrenHTML; }else{ attributes = (attrID > 0)?' ' + attributes.join(' '):''; htmlResult = "<" + tag + attributes + ">" + childrenHTML + "</" + tag + ">"; } } return htmlResult; };
Initial URL
Initial Description
Convert YQL Jason results to a complete HTML Dom Note: unfortunatly the YQL JSON format is lossy Info: http://developer.yahoo.com/yql/guide/output-xml-json-conversion.html Warning: this plugin doesn't work in the right manner! The problem is that there's no way to extract the attributes in the right order So for example: <p>just a <strong>test</strong></p> may arbitrary become <p><strong>test</strong>just a </p>
Initial Title
YQL2DOM jQuery Plugin
Initial Tags
Initial Language
jQuery