UNPKG

tvguide

Version:

Node module that auto-gets current (Dutch) tv show information

181 lines (165 loc) 4.75 kB
/* * HTML generator * * Dynamically generates HTML elements * */ /* * Implemented tags * id: # * cls: . * style: ~ * type: ^ * name: & * value: % * href: @ * src: > * text: * */ var Html = { indent: 0, addIndent: function () { str = ''; for (var i = 0; i < this.indent; i++) { str += '\t'; } return str; }, addTags: function (args, isVoid) { var attributes = ''; var nested = false; var closed = false; for (var i = 0, len = args.length; i < len; i++) { var attrId = args[i].substr(0, 1); var attr = args[i].substr(1); switch (attrId) { case '#': attributes += ' id="' + attr + '"'; break; case '.': attributes += ' class="' + attr + '"'; break; case '~': attributes += ' style="' + attr + '"'; break; case '^': attributes += ' type="' + attr + '"'; break; case '&': attributes += ' name="' + attr + '"'; break; case '%': attributes += ' value="' + attr + '"'; break; case '@': attributes += ' href="' + attr + '"'; break; case '>': attributes += ' src="' + attr + '"'; break; case '+': attributes += ' onclick="' + attr + '"'; break; case '*': closed = true; attributes += '>' + attr; break; case '<': closed = true; if (!nested) { nested = true; this.indent++; attributes += '>\n' + this.addIndent() + args[i]; } else { attributes += this.addIndent() + args[i]; } break; } } if (!closed) { if (isVoid) { attributes += ' />'; } else { attributes += '>'; } } return attributes; }, /* * Implemented elements */ div: function () { var closed = false; var str = '<div'; str += this.addTags(arguments); str += '</div>\n'; if (this.indent > 0) { this.indent-- } return str; }, h1: function () { var closed = false; var str = '<h1'; str += this.addTags(arguments); str += '</h1>\n'; if (this.indent > 0) { this.indent-- } return str; }, p: function () { var closed = false; var str = '<p'; str += this.addTags(arguments); str += '</p>\n'; if (this.indent > 0) { this.indent-- } return str; }, span: function () { var closed = false; var str = '<span'; str += this.addTags(arguments); str += '</span>\n'; if (this.indent > 0) { this.indent-- } return str; }, a: function () { var closed = false; var str = '<a'; str += this.addTags(arguments); str += '</a>\n'; if (this.indent > 0) { this.indent-- } return str; }, select: function () { var closed = false; var str = '<select'; str += this.addTags(arguments); str += '</select>\n'; if (this.indent > 0) { this.indent-- } return str; }, option: function () { var closed = false; var str = '<option'; str += this.addTags(arguments); str += '</option>\n'; if (this.indent > 0) { this.indent-- } return str; }, input: function () { var closed = false; var str = '<input'; str += this.addTags(arguments, true); str += ' \n'; if (this.indent > 0) { this.indent-- } return str; }, img: function () { var closed = false; var str = '<img'; str += this.addTags(arguments, true); str += ' \n'; if (this.indent > 0) { this.indent-- } return str; }, }