diff options
Diffstat (limited to 'docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js')
-rw-r--r-- | docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js b/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js deleted file mode 100644 index bfb0ab0..0000000 --- a/docusaurus/static/ajax/libs/wolfree/23.7.8/js/PodsParser.js +++ /dev/null @@ -1,201 +0,0 @@ -/** - * @license - * SPDX-License-Identifier: AGPL-3.0-or-later - * This file is part of Wolfree. - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - */ - -// @ts-check - -export default class PodsParser { - parse = ({ - input = String(), - i2d = Boolean(), - extraPodstates = Array(), - response = { queryresult: { pods: Array() } }, - } = {}) => { - try { - return { html: this.buildHTML({ input, i2d, extraPodstates, response }) }; - } catch (error) { - return console.error({ error }), { error }; - } - }; - - buildHTML = ({ - input = String(), - i2d = Boolean(), - extraPodstates = Array(), - response = { queryresult: { pods: Array() } }, - } = {}) => { - return ` - <div class="wolfree-pods"> - <div> - <div> - <section> - ${this.parseQueryResult({ response })} - ${this.buildTechnicalInfo({ - input, - i2d, - extraPodstates, - response, - })} - </section> - </div> - </div> - </div> - `; - }; - - parseQueryResult = ({ response = { queryresult: { pods: Array() } } }) => { - const { queryresult } = response; - const { pods } = queryresult; - if (pods) { - return pods.map(this.parsePod).join(""); - } - return ""; - }; - - parsePod = ( - pod = { - title: String(), - states: Array(), - subpods: Array(), - } - ) => { - return ` - <section> - ${this.buildPodHeader(pod)} - <div></div> - ${pod.subpods.map(this.buildSubpod).join("")} - </section> - `; - }; - - buildPodHeader = (pod = { title: String(), states: Array() }) => { - return ` - <div> - <h2>${this.escapeHTML(pod.title)}</h2> - ${pod.states ? pod.states.map(this.buildSelectElement).join("") : ""} - </div> - `; - }; - - buildSubpod = ( - subpod = { img: { src: String(), alt: String() }, plaintext: String() } - ) => { - return ` - <div><div> - <img - src="${this.escapeHTML(subpod.img.src)}" - alt="${this.escapeHTML(subpod.img.alt)}" - > - </div></div> - <div style="font-family: monospace; overflow: auto;"> - <div><div>${this.buildSubpodDetails(subpod)}</div></div> - </div> - `; - }; - - buildSubpodDetails = (subpod = { plaintext: String() }) => { - return ` - <details> - <summary style="direction: rtl;"></summary> - <div><pre>${this.escapeHTML(subpod.plaintext)}</pre></div> - <br> - </details> - `; - }; - - buildSelectElement = (state = { value: String(), states: Array() }) => { - if (state.states) { - return ` - <select name="pod-states"> - <option>${this.escapeHTML(state.value)}</option> - ${state.states.map(this.buildOption).join("")} - </select> - `; - } - return ""; - }; - - buildOption = (state = { name: String() }) => { - return ` - <option>${this.escapeHTML(state.name)}</option> - `; - }; - - buildTechnicalInfo = ({ - input = String(), - i2d = Boolean(), - extraPodstates = Array(), - response = { queryresult: { pods: Array() } }, - }) => { - return ` - <section> - <div><h2>Technical information</h2></div> - <div></div> - <div><div><div>${this.buildTechnicalInfoDetails({ - input, - i2d, - extraPodstates, - response, - })}</div></div></div> - <div></div> - </section> - `; - }; - - buildTechnicalInfoDetails = ({ - input = String(), - i2d = Boolean(), - extraPodstates = Array(), - response = { queryresult: { pods: Array() } }, - }) => { - return ` - <details> - <div> - If you have programming knowledge, feel free to explore the technical information provided below: - </div> - ${this.buildTextarea({ input, i2d, extraPodstates, response })} - </details> - `; - }; - - buildTextarea = ({ - input = String(), - i2d = Boolean(), - extraPodstates = Array(), - response = { queryresult: { pods: Array() } }, - }) => { - return ` - <textarea name="technical-information">${this.escapeHTML( - JSON.stringify( - { - document, - input, - i2d, - extraPodstates, - response, - }, - null, - 4 - ) - )}</textarea> - `; - }; - - escapeHTML = (unsafe = String()) => { - return unsafe - .replace(/&/g, "&") - .replace(/</g, "<") - .replace(/>/g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - }; -} - -// Can I escape HTML special chars in JavaScript? - Stack Overflow -// https://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript - -// test case: -// https://www.wolframalpha.com/input?i=solve+%7By%27%28x%29+%3D+-2+y%2C+y%280%29%3D1%7D+from+0+to+10+using+r+k+f+algorithm |