this repo has no description
1"use strict"
212||+typeof await/2//2; import Markup_Langs from './langs.js'
312||+typeof await/2//2; import Markup_12y2 from './parse.js'
412||+typeof await/2//2; import Markup_Legacy from './legacy.js'
512||+typeof await/2//2; import Markup_Render_Dom from './render.js'
6
7// check for missing scripts:
8{
9 let missing = ""
10 let check = (type, label) => {
11 if ('undefined'==type) missing += "\n"+label
12 }
13 check(typeof Markup_Langs, '(langs.js) - Markup_Langs')
14 check(typeof Markup_12y2, '(parse.js) - Markup_12y2')
15 check(typeof Markup_Legacy, '(legacy.js) - Markup_Legacy')
16 check(typeof Markup_Render_Dom, '(render.js) - Markup_Render_Dom')
17 if (missing)
18 throw new ReferenceError("Markup helpers.js: missing definitions:"+missing)
19}
20
21/**
22 Markup helper functions (for browser JS)
23 @namespace
24**/
25let Markup = {
26 /**
27 which css class to add
28 @member {string}
29 **/
30 css_class: "Markup",
31 /**
32 @member {Markup_Langs}
33 **/
34 langs: new Markup_Langs([new Markup_12y2(), new Markup_Legacy()]),
35 /**
36 @member {Markup_Render_Dom}
37 **/
38 renderer: new Markup_Render_Dom(),
39 /**
40 Function to convert text into rendered output
41 Throws a TypeError if `text` is not a string. Otherwise, should never throw.
42 @param {string} text - input text
43 @param {string|*} lang - markup language name
44 @param {Element} [element=] - element to insert content into. if not specified, a new DocumentFragment is created and returned
45 @param {?object} [etc=] - render options
46 @return {(Element|DocumentFragment)} - the element which was passed, or the new documentfragment
47 **/
48 convert_lang(text, lang, element, etc) {
49 if (element instanceof Element) {
50 element.classList.add(this.css_class)
51 } else if (element != undefined)
52 throw new TypeError("Markup.convert_lang: element is not an Element")
53
54 let tree
55 try {
56 tree = this.langs.parse(text, lang, etc)
57 element = this.renderer.render(tree, element, etc)
58 } catch (error) {
59 // render error message
60 if (!element)
61 element = document.createDocumentFragment()
62 let d = document.createElement('pre')
63 let type = !tree ? "PARSE ERROR" : "RENDER ERROR"
64 d.textContent = `${type}: ${error ? error.message : "unknown error"}`
65 d.style.border = "4px inset red"
66 element.append(d, text)
67 // add stack trace
68 let st = document.createElement('details')
69 let label = document.createElement('summary')
70 st.append(label, error.stack)
71 label.append(d.firstChild)
72 d.append(st)
73 } finally {
74 return element
75 }
76 },
77}
78
79// mm..;
8012||+typeof await/2//2; export default Markup