From: Michael D. Lowis Date: Fri, 1 Dec 2017 02:53:16 +0000 (-0500) Subject: generate index.html with embedded style and script X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=00feba0e986fe338353c120b78557b6412c87353;p=proto%2Fjournal.git generate index.html with embedded style and script --- diff --git a/editor.js b/editor.js index b25ee0b..b1c890b 100644 --- a/editor.js +++ b/editor.js @@ -1,64 +1,67 @@ "use strict"; (() => { - const getSelNode = () => { - const node = document.getSelection().anchorNode; - return (node.nodeType === 3 ? node.parentNode : node); - }; + const doc = document; + doc.exec = doc.execCommand; - const ymd_string = () => { - const dt = new Date(), month = (dt.getMonth() + 1), day = dt.getDate(); - return [dt.getFullYear(), (month > 9 ? '' : '0') + month, (day > 9 ? '' : '0') + day].join('.') - }; + const getSelNode = () => { + const node = doc.getSelection().anchorNode; + return (node.nodeType === 3 ? node.parentNode : node); + }; - const exec = document.execCommand; - const ctrlHeld = (ev) => (ev.ctrlKey || ev.metaKey) - const inTag = (tag) => (getSelNode().nodeName === tag); - const keyCmd = (ev, cmd, arg) => (ctrlHeld() ? !exec(cmd, false, arg) : true); + const ymd_string = () => { + const dt = new Date(), month = (dt.getMonth() + 1), day = dt.getDate(); + return [dt.getFullYear(), (month > 9 ? '' : '0') + month, (day > 9 ? '' : '0') + day].join('.'); + }; - const keys = { - "b": (ev) => keyCmd(ev, "bold"), - "i": (ev) => keyCmd(ev, "italic"), - "u": (ev) => keyCmd(ev, "underline"), - "0": (ev) => keyCmd(ev, "formatBlock", "

"), - "1": (ev) => keyCmd(ev, "formatBlock", "

"), - "2": (ev) => keyCmd(ev, "formatBlock", "

"), - "3": (ev) => keyCmd(ev, "formatBlock", "

"), - "4": (ev) => keyCmd(ev, "formatBlock", "

"), - "5": (ev) => keyCmd(ev, "formatBlock", "

"), - "6": (ev) => keyCmd(ev, "formatBlock", "
"), - "7": (ev) => keyCmd(ev, "insertOrderedList"), - "8": (ev) => keyCmd(ev, "insertUnorderedList"), - "9": (ev) => { - if (ctrlHeld()) { - const defurl = (inTag("A") ? getSelNode().href : "http://"); - const url = prompt("Enter URL:", defurl); - return !exec((url !== null && url !== "" ? "createLink" : "unlink"), false, url); - } - return true; - }, + const ctrlHeld = (ev) => (ev.ctrlKey || ev.metaKey); + const inTag = (tag) => (getSelNode().nodeName === tag); + const keyCmd = (ev, cmd, arg) => (ctrlHeld(ev) ? !doc.exec(cmd, false, arg) : true); - "Enter": () => !exec(inTag("CODE") ? "insertHTML" : "insertParagraph", false, "\n"), + const keys = { + "b": (ev) => keyCmd(ev, "bold"), + "i": (ev) => keyCmd(ev, "italic"), + "u": (ev) => keyCmd(ev, "underline"), + "0": (ev) => keyCmd(ev, "formatBlock", "

"), + "1": (ev) => keyCmd(ev, "formatBlock", "

"), + "2": (ev) => keyCmd(ev, "formatBlock", "

"), + "3": (ev) => keyCmd(ev, "formatBlock", "

"), + "4": (ev) => keyCmd(ev, "formatBlock", "

"), + "5": (ev) => keyCmd(ev, "formatBlock", "

"), + "6": (ev) => keyCmd(ev, "formatBlock", "
"), + "7": (ev) => keyCmd(ev, "insertOrderedList"), + "8": (ev) => keyCmd(ev, "insertUnorderedList"), + "9": (ev) => { + if (ctrlHeld(ev)) { + const defurl = (inTag("A") ? getSelNode().href : "http://"); + const url = prompt("Enter URL:", defurl); + return !doc.exec((url !== null && url !== "" ? "createLink" : "unlink"), false, url); + } + return true; + }, - "Tab": (ev) => { - if (inTag("CODE")) - return !exec("insertHTML",false,"\t"); - else - return !exec((ev.shiftKey ? "out" : "in")+"dent",false); - }, + "Enter": () => !doc.exec(inTag("CODE") ? "insertHTML" : "insertParagraph", false, "\n"), - ";": (ev) => keyCmd(ev, "insertHTML", "\r\n"), - "'": (ev) => { - if (ctrlHeld()) { - const block = (inTag("BLOCKQUOTE") ? "

" : "

"); - return !exec("formatBlock", false, block); - } - return true; - }, - }; + "Tab": (ev) => { + if (inTag("CODE")) + return !doc.exec("insertHTML",false,"\t"); + else + return !doc.exec((ev.shiftKey ? "out" : "in")+"dent",false); + }, - header.onkeyup = (ev) => (document.title = header.innerText) - content.onkeydown = (ev) => (keys[ev.key] ? keyfn(keys[ev.key]) : true), - header.innerHTML = '

' + ymd_string() + '


'; - document.title = header.innerText; + ";": (ev) => keyCmd(ev, "insertHTML", "\r\n"), + "'": (ev) => { + if (ctrlHeld(ev)) { + const block = (inTag("BLOCKQUOTE") ? "

" : "

"); + return !doc.exec("formatBlock", false, block); + } + return true; + }, + }; + + header.onkeyup = (ev) => (doc.title = header.innerText); + content.onkeydown = (ev) => (keys[ev.key] ? (keys[ev.key])(ev) : true); + header.innerHTML = '

' + ymd_string() + '


'; + doc.title = header.innerText; + content.focus(); })(); diff --git a/generate.sh b/generate.sh new file mode 100755 index 0000000..7bd0928 --- /dev/null +++ b/generate.sh @@ -0,0 +1,27 @@ +#!/bin/bash +style="$(cat "style.css")" +script="$(cat "editor.js")" + +cat <<-eos + + + + + + + + +
+ +
+

Edit here...

+
+
+ + + +eos diff --git a/index.html b/index.html index 62bfc6b..d0c1e85 100644 --- a/index.html +++ b/index.html @@ -1,17 +1,151 @@ - - - + + + -
- -
-

Edit here...

-
-
- +
+ +
+

Edit here...

+
+
+