site

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | LICENSE

commit 1f101d562e791860aadda03e8978197cbd6f6735
parent a36f232b5efefec84641dccd69e26c21aec77510
Author: Ryan Jeffrey <ryan@ryanmj.xyz>
Date:   Wed, 10 Feb 2021 23:30:01 -0800

Can now fully render homepage

Diffstat:
M.gitignore | 8++++++--
Mcss/main.css | 202+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Mcss/terminal.css | 133++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mindex.org | 27++++++++++++++++++++++++---
Mpublish.el | 61++++++++++++++++++++++++++++++++++++++-----------------------
Ascripts/main.js | 43+++++++++++++++++++++++++++++++++++++++++++
6 files changed, 368 insertions(+), 106 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -54,4 +54,8 @@ flycheck_*.el /network-security.data -# End of https://www.toptal.com/developers/gitignore/api/emacs- \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/emacs + +res/ +public/ +files/+ \ No newline at end of file diff --git a/css/main.css b/css/main.css @@ -1,38 +1,210 @@ #taskbar { - width: 75%; - display: flex; - height: 200px; + width: 75%; + display: flex; + height: 200px; } #home { - width: 20%; + width: 20%; } #git-server { - width: 20%; + width: 20%; } #blog { - width: 20%; + width: 20%; } #files { - width: 20%; + width: 20%; } #other-posts { - width: 20%; + width: 20%; } -/* -@font-face { - font-family: "Stickynotes"; - src: url("../res/Stickynotes.otf") format("opentype"); + +.title { text-align: center; + margin-bottom: .2em; } +.subtitle { text-align: center; + font-size: medium; + font-weight: bold; + margin-top:0; } +.todo { font-family: monospace; color: red; } +.done { font-family: monospace; color: green; } +.priority { font-family: monospace; color: orange; } +.tag { background-color: #eee; font-family: monospace; + padding: 2px; font-size: 80%; font-weight: normal; } +.timestamp { color: #bebebe; } +.timestamp-kwd { color: #5f9ea0; } +.org-right { margin-left: auto; margin-right: 0px; text-align: right; } +.org-left { margin-left: 0px; margin-right: auto; text-align: left; } +.org-center { margin-left: auto; margin-right: auto; text-align: center; } +.underline { text-decoration: underline; } +#postamble p, #preamble p { font-size: 90%; margin: .2em; } +p.verse { margin-left: 3%; } +pre :not(#main-page-title) { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + padding: 8pt; + font-family: monospace; + overflow: auto; + margin: 1.2em; +} +pre.src { + position: relative; + overflow: visible; + padding-top: 1.2em; } -*/ +pre.src:before { + display: none; + position: absolute; + background-color: white; + top: -10px; + right: 10px; + padding: 3px; + border: 1px solid black; +} +pre.src:hover:before { display: inline;} +/* Languages per Org manual */ +pre.src-asymptote:before { content: 'Asymptote'; } +pre.src-awk:before { content: 'Awk'; } +pre.src-C:before { content: 'C'; } +/* pre.src-C++ doesn't work in CSS */ +pre.src-clojure:before { content: 'Clojure'; } +pre.src-css:before { content: 'CSS'; } +pre.src-D:before { content: 'D'; } +pre.src-ditaa:before { content: 'ditaa'; } +pre.src-dot:before { content: 'Graphviz'; } +pre.src-calc:before { content: 'Emacs Calc'; } +pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } +pre.src-fortran:before { content: 'Fortran'; } +pre.src-gnuplot:before { content: 'gnuplot'; } +pre.src-haskell:before { content: 'Haskell'; } +pre.src-hledger:before { content: 'hledger'; } +pre.src-java:before { content: 'Java'; } +pre.src-js:before { content: 'Javascript'; } +pre.src-latex:before { content: 'LaTeX'; } +pre.src-ledger:before { content: 'Ledger'; } +pre.src-lisp:before { content: 'Lisp'; } +pre.src-lilypond:before { content: 'Lilypond'; } +pre.src-lua:before { content: 'Lua'; } +pre.src-matlab:before { content: 'MATLAB'; } +pre.src-mscgen:before { content: 'Mscgen'; } +pre.src-ocaml:before { content: 'Objective Caml'; } +pre.src-octave:before { content: 'Octave'; } +pre.src-org:before { content: 'Org mode'; } +pre.src-oz:before { content: 'OZ'; } +pre.src-plantuml:before { content: 'Plantuml'; } +pre.src-processing:before { content: 'Processing.js'; } +pre.src-python:before { content: 'Python'; } +pre.src-R:before { content: 'R'; } +pre.src-ruby:before { content: 'Ruby'; } +pre.src-sass:before { content: 'Sass'; } +pre.src-scheme:before { content: 'Scheme'; } +pre.src-screen:before { content: 'Gnu Screen'; } +pre.src-sed:before { content: 'Sed'; } +pre.src-sh:before { content: 'shell'; } +pre.src-sql:before { content: 'SQL'; } +pre.src-sqlite:before { content: 'SQLite'; } +/* additional languages in org.el's org-babel-load-languages alist */ +pre.src-forth:before { content: 'Forth'; } +pre.src-io:before { content: 'IO'; } +pre.src-J:before { content: 'J'; } +pre.src-makefile:before { content: 'Makefile'; } +pre.src-maxima:before { content: 'Maxima'; } +pre.src-perl:before { content: 'Perl'; } +pre.src-picolisp:before { content: 'Pico Lisp'; } +pre.src-scala:before { content: 'Scala'; } +pre.src-shell:before { content: 'Shell Script'; } +pre.src-ebnf2ps:before { content: 'ebfn2ps'; } +/* additional language identifiers per "defun org-babel-execute" + in ob-*.el */ +pre.src-cpp:before { content: 'C++'; } +pre.src-abc:before { content: 'ABC'; } +pre.src-coq:before { content: 'Coq'; } +pre.src-groovy:before { content: 'Groovy'; } +/* additional language identifiers from org-babel-shell-names in + ob-shell.el: ob-shell is the only babel language using a lambda to put + the execution function name together. */ +pre.src-bash:before { content: 'bash'; } +pre.src-csh:before { content: 'csh'; } +pre.src-ash:before { content: 'ash'; } +pre.src-dash:before { content: 'dash'; } +pre.src-ksh:before { content: 'ksh'; } +pre.src-mksh:before { content: 'mksh'; } +pre.src-posh:before { content: 'posh'; } +/* Additional Emacs modes also supported by the LaTeX listings package */ +pre.src-ada:before { content: 'Ada'; } +pre.src-asm:before { content: 'Assembler'; } +pre.src-caml:before { content: 'Caml'; } +pre.src-delphi:before { content: 'Delphi'; } +pre.src-html:before { content: 'HTML'; } +pre.src-idl:before { content: 'IDL'; } +pre.src-mercury:before { content: 'Mercury'; } +pre.src-metapost:before { content: 'MetaPost'; } +pre.src-modula-2:before { content: 'Modula-2'; } +pre.src-pascal:before { content: 'Pascal'; } +pre.src-ps:before { content: 'PostScript'; } +pre.src-prolog:before { content: 'Prolog'; } +pre.src-simula:before { content: 'Simula'; } +pre.src-tcl:before { content: 'tcl'; } +pre.src-tex:before { content: 'TeX'; } +pre.src-plain-tex:before { content: 'Plain TeX'; } +pre.src-verilog:before { content: 'Verilog'; } +pre.src-vhdl:before { content: 'VHDL'; } +pre.src-xml:before { content: 'XML'; } +pre.src-nxml:before { content: 'XML'; } +/* add a generic configuration mode; LaTeX export needs an additional + (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */ +pre.src-conf:before { content: 'Configuration File'; } -@font-face { font-family: "MyCantarell"; src: - url("../res/Cantarell-Regular.otf") format("opentype"); } +table { border-collapse:collapse; } +caption.t-above { caption-side: top; } +caption.t-bottom { caption-side: bottom; } +td, th { vertical-align:top; } +th.org-right { text-align: center; } +th.org-left { text-align: center; } +th.org-center { text-align: center; } +td.org-right { text-align: right; } +td.org-left { text-align: left; } +td.org-center { text-align: center; } +dt { font-weight: bold; } +.footpara { display: inline; } +.footdef { margin-bottom: 1em; } +.figure { padding: 1em; } +.figure p { text-align: center; } +.equation-container { + display: table; + text-align: center; + width: 100%; +} +.equation { + vertical-align: middle; +} +.equation-label { + display: table-cell; + text-align: right; + vertical-align: middle; +} +.inlinetask { + padding: 10px; + border: 2px solid gray; + margin: 10px; + background: #ffffcc; +} +#org-div-home-and-up +{ text-align: right; font-size: 70%; white-space: nowrap; } +textarea { overflow-x: auto; } +.linenr { font-size: smaller } +.code-highlighted { background-color: #ffff00; } +.org-info-js_info-navigation { border-style: none; } +#org-info-js_console-label +{ font-size: 10px; font-weight: bold; white-space: nowrap; } +.org-info-js_search-highlight +{ background-color: #ffff00; color: #000000; font-weight: bold; } +.org-svg { width: 90%; } diff --git a/css/terminal.css b/css/terminal.css @@ -1,111 +1,118 @@ @import './rgb.css'; @import './main.css'; +#main-page-title { + margin: 0 auto; + padding: 0; + white-space: pre-wrap; + color: var(--grey); +} + .topl:hover { - box-shadow: 0 0 0.2em 0.2em #0ff; + box-shadow: 0 0 0.2em 0.2em #0ff; } h4 { - padding: 0; - margin: 0; - margin-top: 0; - color: white; - font-color: white; - font-family: "Cantarell", "MyCantarell"; - font-size: 0.8em; + padding: 0; + margin: 0; + margin-top: 0; + color: white; + font-color: white; + font-family: "Cantarell", "MyCantarell"; + font-size: 0.8em; } #taskbar { - width: 100%; + width: 100%; } #task-meta { - width: 75%; - padding: 0; - margin: auto; - margin-top: auto; - background-color: rgba(200,200,200,0.2); - border: 0.1em solid white; - text-align: center; + width: 75%; + padding: 0; + margin: auto; + margin-top: auto; + background-color: rgba(200,200,200,0.2); + border: 0.1em solid white; + text-align: center; } #taskbar div { - display: inline-block; - zoom: 1; - width: 19%; - text-align:center; - margin: auto; - margin-top: auto; - margin-bottom: 5%; - padding: 0; + display: inline-block; + zoom: 1; + width: 19%; + text-align:center; + margin: auto; + margin-top: auto; + margin-bottom: 5%; + padding: 0; } #task-meta hr { -/* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ffffff+0,f3f3f3+50,ededed+51,ffffff+100;White+Gloss+%232 */ -background: #ffffff; /* Old browsers */ -background: -moz-linear-gradient(top, #ffffff 0%, #f3f3f3 50%, #ededed 51%, #ffffff 100%); /* FF3.6-15 */ -background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 50%,#ededed 51%,#ffffff 100%); /* Chrome10-25,Safari5.1-6 */ -background: linear-gradient(to bottom, #ffffff 0%,#f3f3f3 50%,#ededed 51%,#ffffff 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ -filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */ + /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ffffff+0,f3f3f3+50,ededed+51,ffffff+100;White+Gloss+%232 */ + background: #ffffff; /* Old browsers */ + background: -moz-linear-gradient(top, #ffffff 0%, #f3f3f3 50%, #ededed 51%, #ffffff 100%); /* FF3.6-15 */ + background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 50%,#ededed 51%,#ffffff 100%); /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(to bottom, #ffffff 0%,#f3f3f3 50%,#ededed 51%,#ffffff 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */ } .taskimg { - width: 40%; - height: 40%; - transition: transform 0.3s; + width: 40%; + height: 40%; + transition: transform 0.3s; } .taskimg:hover { - transform: scale(1.5); + transform: scale(1.5); } .twin { - border: 1.5em solid transparent; - border-image: url(../res/terminal.png) 38 37 38 36 round; - padding: 0; - /* positioning */ - margin: 0 auto; - margin-top: 75px; - width: 75%; - background-color: rgba(0, 0, 0, 0.85); - + border: 1.5em solid transparent; + border-image: url(../res/terminal.png) 38 37 38 36 round; + padding: 0; + /* positioning */ + margin: 0 auto; + margin-top: 75px; + width: 75%; + background-color: rgba(0, 0, 0, 0.85); + } .tcontent { - margin: 0 auto; - padding: 0; + margin: 0 auto; + padding: 0; } .twin p { - margin: 0 auto; - padding: 0; - white-space: pre-wrap; - color: var(--grey); + margin: 0 auto; + padding: 0; + white-space: pre-wrap; + color: var(--grey); } h2 { - color: var(--spring_green); - font-size: 26pt; + color: var(--spring_green); + font-size: 26pt; } body { - /*background-image: url(../res/back01.jpg);*/ - background: #2d6189; - background-size: cover; - background-repeat: no-repeat; - font-family: Inconsolata, "Courier New", monospace; - font-size: 1.1em; - -webkit-font-smoothing : none; - -moz-font-smoothing: never; + /*background-image: url(../res/back01.jpg);*/ + background: #2d6189; + background-size: cover; + background-repeat: no-repeat; + font-family: Inconsolata, "Courier New", monospace; + font-size: 1.1em; + -webkit-font-smoothing : none; + -moz-font-smoothing: never; } .fttr { - margin-top: auto; - margin: auto; - margin-top: 75px; - width: 75%; + margin-top: auto; + margin: auto; + margin-top: 75px; + width: 75%; } diff --git a/index.org b/index.org @@ -4,12 +4,13 @@ #+options: p:nil pri:nil prop:nil stat:t tags:t tasks:t tex:t #+options: timestamp:t title:nil toc:t todo:t |:t #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/terminal.css" /> +#+HTML_HEAD: <script src="../scripts/main.js"></script> #+language: en #+select_tags: export #+exclude_tags: noexport #+creator: Emacs 27.1 (Org mode 9.3) #+options: html-link-use-abs-url:nil -#+options: html-scripts:t html-style:t +#+options: html-scripts:nil html-style:nil #+options: html5-fancy:nil tex:t #+html_doctype: xhtml-strict #+html_container: div @@ -31,12 +32,32 @@ #+email: ryan@ryanmj.xyz __PROMPT__ cat ~/intro.txt -<!--TITLE HERE--> + +#+BEGIN_EXPORT html + +<pre id="main-page-title"> + + ____ _ +| _ \ _ _ __ _ _ __ ( )___ +| |_) | | | |/ _` | '_ \|// __| +| _ <| |_| | (_| | | | | \__ \ +|_| \_\\__, |\__,_|_| |_| |___/ + |___/ + _ _ +| | | | ___ _ __ ___ ___ _ __ __ _ __ _ ___ +| |_| |/ _ \| '_ ` _ \ / _ \ '_ \ / _` |/ _` |/ _ \ +| _ | (_) | | | | | | __/ |_) | (_| | (_| | __/ +|_| |_|\___/|_| |_| |_|\___| .__/ \__,_|\__, |\___| + |_| |___/ +</pre> + + +#+END_EXPORT __PROMPT__ ls -lh + #+BEGIN_EXPORT html <!--LS HERE--> -<p>total 8.1K Words</p> #+END_EXPORT __PROMPT__ cat reason.txt diff --git a/publish.el b/publish.el @@ -22,32 +22,41 @@ (defun do-ls-on-list (files) "Create ls-like output on a list FILES (string paths). Assumes that all files in FILES exist." - (goto-char (point-min)) - (replace-string - "<!--LS HERE-->" - (concat - "<p>" - (cond ; Get the prefix if the ls -l output. - ((file-symlink-p (car files)) "lrwxrwxrwx 1") - ((file-directory-p (car files)) "drwxr-xr-x 2") - (t "-rw-r--r-- 1")) - " ryan ryan " - (replace-regexp-in-string - "\n$" " " - (shell-command-to-string (concat "find " (car files) " -name '*.org' -exec cat {} + | wc -c | numfmt --to=si"))) - (shell-command-to-string (concat "ls -dl '--time-style=+%b %m %Y' " - (car files) - " | awk '{printf \"%s %2d %s \", $6, $7, $8} '" )) - "<a href=\"" - (car files) - "\">" - (car files) - "</a></p>"))) + (when (bound-and-true-p files) + (insert + (concat + "<p>" + (cond ; Get the prefix if the ls -l output. + ((file-symlink-p (car files)) "lrwxrwxrwx 1") + ((file-directory-p (car files)) "drwxr-xr-x 2") + (t "-rw-r--r-- 1")) + " ryan ryan " + (format "%4s " + (shell-command-to-string + (concat "find " (car files) " -name '*.org' -exec cat {} + | wc -c | numfmt --to=si | tr -d '\n'"))) + (shell-command-to-string (concat "ls -dl '--time-style=+%b %m %Y' " + (car files) + " | awk '{printf \"%s %2d %s \", $6, $7, $8} '" )) + "<a href=\"" + (car files) + "\">" + (car files) + "</a></p>\n")) + (do-ls-on-list (cdr files)))) ;; Replace <!--LS HERE--> with ls output. (add-hook 'org-export-before-parsing-hook #'(lambda (backend) - (do-ls-on-list (list "files" "posts")))) + "Create fake ls listing." + (goto-char (point-min)) + (while (search-forward "<!--LS HERE-->" (point-max) t) + (kill-line) + (insert (concat + "<p>total " + (shell-command-to-string + "find . -name '*.org' -exec cat {} + | wc -c | numfmt --to=si | tr -d '\n'") + " Words</p>\n")) + (do-ls-on-list (list "files" "posts"))))) ;; Sets up exporting defaults for org mode. @@ -91,7 +100,13 @@ Assumes that all files in FILES exist." :htmlized-source nil :html-preamble nil :html-postamble nil) - ("all" :components ("posts" "css" "main" "res" "files")))) + ("scripts" + :base-directory "scripts/" + :publishing-directory "public/scripts" + :base-extension "js" + :recursive t + :publishing-function org-publish-attachment) + ("all" :components ("posts" "css" "main" "res" "files" "scripts")))) (provide 'publish) ;;; publish.el ends here diff --git a/scripts/main.js b/scripts/main.js @@ -0,0 +1,43 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this tag. + +Copyright (C) 2012-2020 Free Software Foundation, Inc. + +The JavaScript code in this tag is free software: you can +redistribute it and/or modify it under the terms of the GNU +General Public License (GNU GPL) as published by the Free Software +Foundation, either version 3 of the License, or (at your option) +any later version. The code is distributed WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. + +As additional permission under GNU GPL version 3 section 7, you +may distribute non-source (e.g., minimized or compacted) forms of +that code without the copy of the GNU GPL normally required by +section 4, provided you include this license notice and a URL +through which recipients can access the Corresponding Source. + + +@licend The above is the entire license notice +for the JavaScript code in this tag. +*/ +<!--/*--><![CDATA[/*><!--*/ + function CodeHighlightOn(elem, id) + { + var target = document.getElementById(id); + if(null != target) { + elem.cacheClassElem = elem.className; + elem.cacheClassTarget = target.className; + target.className = "code-highlighted"; + elem.className = "code-highlighted"; + } + } + function CodeHighlightOff(elem, id) + { + var target = document.getElementById(id); + if(elem.cacheClassElem) + elem.className = elem.cacheClassElem; + if(elem.cacheClassTarget) + target.className = elem.cacheClassTarget; + }