UNPKG

showdown

Version:

A Markdown to HTML converter written in Javascript

63 lines (51 loc) 2.04 kB
/** * Create a full HTML document from the processed markdown */ showdown.subParser('completeHTMLDocument', function (text, options, globals) { 'use strict'; if (!options.completeHTMLDocument) { return text; } text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals); var doctype = 'html', doctypeParsed = '<!DOCTYPE HTML>\n', title = '', charset = '<meta charset="utf-8">\n', lang = '', metadata = ''; if (typeof globals.metadata.parsed.doctype !== 'undefined') { doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\n'; doctype = globals.metadata.parsed.doctype.toString().toLowerCase(); if (doctype === 'html' || doctype === 'html5') { charset = '<meta charset="utf-8">'; } } for (var meta in globals.metadata.parsed) { if (globals.metadata.parsed.hasOwnProperty(meta)) { switch (meta.toLowerCase()) { case 'doctype': break; case 'title': title = '<title>' + globals.metadata.parsed.title + '</title>\n'; break; case 'charset': if (doctype === 'html' || doctype === 'html5') { charset = '<meta charset="' + globals.metadata.parsed.charset + '">\n'; } else { charset = '<meta name="charset" content="' + globals.metadata.parsed.charset + '">\n'; } break; case 'language': case 'lang': lang = ' lang="' + globals.metadata.parsed[meta] + '"'; metadata += '<meta name="' + meta + '" content="' + globals.metadata.parsed[meta] + '">\n'; break; default: metadata += '<meta name="' + meta + '" content="' + globals.metadata.parsed[meta] + '">\n'; } } } text = doctypeParsed + '<html' + lang + '>\n<head>\n' + title + charset + metadata + '</head>\n<body>\n' + text.trim() + '\n</body>\n</html>'; text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals); return text; });