From 9fce418b46c9f0894f429384ef9e3dabaeffbeb4 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Tue, 14 Apr 2015 16:36:17 -0700 Subject: Change file hierarchy and rewrite makefile - File hierarchy is now as follows: - / - appendix/ < appendix source files - backlinks/ < backlink sources & builds - hapax/ < *.hapax source files - scripts/ < scripts, like *.js, *.hs, etc. - templates/ < templates for outputs - text/ < source files - trunk/ < assets, like css, images, heads, etc. - index.html - *.html - Makefile --- trunk/backlink.head | 10 +- trunk/backlink.sh | 38 --- trunk/common-titles.head | 12 +- trunk/common-titles.sh | 20 -- trunk/external.js | 5 - trunk/first-lines.head | 12 +- trunk/first-lines.sh | 26 -- trunk/forceascii.hs | 17 -- trunk/hapax.head | 14 +- trunk/hapax.lua | 251 ------------------- trunk/hapaxlink.sh | 26 -- trunk/hylo.js | 21 -- trunk/island.head | 9 - trunk/islands.head | 17 ++ trunk/lozenge.js | 27 -- trunk/lozenge.sh | 15 -- trunk/river.lua | 230 ----------------- trunk/style.css | 640 +++++++++++++++++++++++++++++++++++++++++++++++ trunk/toc.head | 7 +- trunk/toc.sh | 26 -- trunk/versify.exe | Bin 13686106 -> 0 bytes trunk/versify.hs | 15 -- trunk/white-streak.jpg | Bin 352757 -> 0 bytes 23 files changed, 685 insertions(+), 753 deletions(-) delete mode 100644 trunk/backlink.sh delete mode 100644 trunk/common-titles.sh delete mode 100644 trunk/external.js delete mode 100644 trunk/first-lines.sh delete mode 100644 trunk/forceascii.hs delete mode 100644 trunk/hapax.lua delete mode 100644 trunk/hapaxlink.sh delete mode 100644 trunk/hylo.js delete mode 100644 trunk/island.head create mode 100644 trunk/islands.head delete mode 100644 trunk/lozenge.js delete mode 100644 trunk/lozenge.sh delete mode 100644 trunk/river.lua create mode 100644 trunk/style.css delete mode 100644 trunk/toc.sh delete mode 100644 trunk/versify.exe delete mode 100644 trunk/versify.hs delete mode 100644 trunk/white-streak.jpg (limited to 'trunk') diff --git a/trunk/backlink.head b/trunk/backlink.head index 816ee7d..4537545 100644 --- a/trunk/backlink.head +++ b/trunk/backlink.head @@ -1,11 +1,11 @@ --- -title: _TITLE_ -id: _ID_ -subtitle: back-links +title: __TITLE__ +subtitle: backlinks +id: __ID__ genre: list project: - title: About autocento - class: meta + title: Backlinks to Autocento + class: backlinks ... diff --git a/trunk/backlink.sh b/trunk/backlink.sh deleted file mode 100644 index f6feb7d..0000000 --- a/trunk/backlink.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Command-line variables -searchQuery="$1"; # .html file to backlink -outFile="$2"; # .back file to create -headerFile="$3"; # header information file -shift 3; -glob="$@"; # where to search for backlinks - -# Find backlinkers -echo -n "Back-linking \"$searchQuery\"" -cat "$headerFile" > "$outFile"; -if ! grep -ql "$searchQuery" $glob >> "$outFile"; then - echo "[_island_](${islandLink}.htm)." >> "$outFile"; - title=`grep '^title:' "${searchQuery%.html}.txt" | cut -d' ' -f2-`; - echo "- [$title]($searchQuery)" >> "${islandLink}.txt" -fi - -# Change title & id of $outFile -inText="`basename $searchQuery .html`.txt"; -title=`grep '^title:' "$inText" | cut -d' ' -f2-`; -id=`grep '^id:' "${searchQuery%.html}.txt" | cut -d' ' -f2`; -sed -i "s/_TITLE_/$title/" "$outFile"; -sed -i "s/_ID_/$id/" "$outFile"; -echo -n "." - -# Change *.txt to *.html -sed -i 's/^\(.*\)\.txt/\1.html/g' "$outFile"; - -# Link to backlinks -for file in `grep '.html$' "$outFile"`; do - fText="`basename $file .html`.txt"; - title=`grep '^title:' $fText | cut -d' ' -f2-`; - sed -i "s/^$file$/- [$title](&)/" "$outFile"; - echo -n "." -done - -echo "Done." diff --git a/trunk/common-titles.head b/trunk/common-titles.head index 705647d..784ca4d 100644 --- a/trunk/common-titles.head +++ b/trunk/common-titles.head @@ -1,17 +1,17 @@ --- -title: Autocento of the breakfast table -id: common-titles +title: Appendix C subtitle: index of common titles +id: common-titles genre: prose project: - title: About Autocento - class: meta + title: Appendices + class: appendices next: - title: Index of first lines link: first-lines prev: - - title: About _Autocento_ - link: about + - title: Index of islands + link: islands ... diff --git a/trunk/common-titles.sh b/trunk/common-titles.sh deleted file mode 100644 index bae8a10..0000000 --- a/trunk/common-titles.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -outFile="$1"; -shift 1; -glob="$@"; - -echo -n "Compiling ${outFile}"; - -for file in $glob; do - # Copy title to $outFile & link - title="$(grep '^title:' "$file" | cut -d' ' -f2- | sed 's/"//g')"; - if (( $RANDOM % 13 == 0 )); then - echo -n "| " >> "$outFile"; - else - echo -n " " >> "$outFile"; - fi - echo "[$title](${file%.*}.html)" >> "$outFile"; - echo -n "."; -done -echo "Done."; diff --git a/trunk/external.js b/trunk/external.js deleted file mode 100644 index ee425cd..0000000 --- a/trunk/external.js +++ /dev/null @@ -1,5 +0,0 @@ -/* External.js for Autocento of the breakfast table - * this gives external links the class "external." - */ - - diff --git a/trunk/first-lines.head b/trunk/first-lines.head index f73b410..d2b9eca 100644 --- a/trunk/first-lines.head +++ b/trunk/first-lines.head @@ -1,15 +1,15 @@ --- -title: Autocento of the breakfast table -id: first-lines +title: Appendix F subtitle: index of first lines +id: first-lines genre: prose project: - title: About Autocento - class: meta + title: Appendices + class: appendices next: - - title: About _Autocento_ - link: about + - title: Index of hapax legomena + link: hapax prev: - title: Index of common titles link: common-titles diff --git a/trunk/first-lines.sh b/trunk/first-lines.sh deleted file mode 100644 index 1378a82..0000000 --- a/trunk/first-lines.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -outFile="$1"; -shift 1; -glob="$@"; - -firstLineOf() { # $1 = file - endOfYaml=$(sed -n '/^\.\.\.$/=' "$1") - tryLineNumber=$((endOfYaml + 1)) - try="" - while [[ -z $try ]]; do - try=$(head -n $tryLineNumber "$1" | tail -n 1 |\ - sed -e 's/^[|>] //' -e 's/[][]//g' -e 's/^#.*//' -e 's/^--.*//') - (( tryLineNumber += 1 )) - done - echo "$try" -} - -echo -n "Compiling ${outFile}" - -for file in $glob; do - # Copy first line to $outFile & link - echo "[$(firstLineOf "$file")](${file%.*}.html)" >> $outFile; - echo -n "."; -done -echo "Done." diff --git a/trunk/forceascii.hs b/trunk/forceascii.hs deleted file mode 100644 index b5f1645..0000000 --- a/trunk/forceascii.hs +++ /dev/null @@ -1,17 +0,0 @@ --- Preprocessor for hapax.lua writer --- because for some damn reason, UTF-8 confuses things - -import Text.Pandoc.JSON -import Data.Char (isAscii) - -main :: IO () -main = toJSONFilter unFancy - -unFancy :: Inline -> Inline -unFancy (Str s) = Str $ map makeAscii s -unFancy x = x - -makeAscii :: Char -> Char -makeAscii c - | isAscii c = c - | otherwise = ' ' diff --git a/trunk/hapax.head b/trunk/hapax.head index 88b23bf..c07e79c 100644 --- a/trunk/hapax.head +++ b/trunk/hapax.head @@ -1,11 +1,17 @@ --- -title: Autocento of the breakfast table +title: Appendix H +subtitle: index of hapax legomena id: hapax -subtitle: hapax legomena genre: prose project: - title: About autocento - class: meta + title: Appendices + class: appendices + next: + - title: Index of islands + link: islands + prev: + - title: Index of first lines + link: first-lines ... diff --git a/trunk/hapax.lua b/trunk/hapax.lua deleted file mode 100644 index af59e59..0000000 --- a/trunk/hapax.lua +++ /dev/null @@ -1,251 +0,0 @@ --- Pandoc Hapax writer --- it takes out all formatting, leaving only a river of text --- running down the page: one word per line, stripping all duplicates --- vim: fdm=marker --- invoke with: pandoc -t hapax.lua - -os.setlocale("en_US.UTF-8") - -function hapax(s) - local function tablify (s, p) - local t={} - for w in s:gmatch(p) do - table.insert(t, w) - end - return t - end - local function stripDupes (t) - local seen = {} - local remove = {} - for i = 1, #t do - element = t[i] - if seen[element] then - remove[element] = true - else - seen[element] = true - end - end - for i = #t, 1, -1 do - if remove[t[i]] then - table.remove(t, i) - end - end - return t - end - return table.concat(stripDupes(tablify(s, "%S+")), "\n") -end - -function flow(s) - return s:gsub("%s+", "\n") -end - -function nude(s) - s = s:lower() - -- Expand contractions - s = s:gsub("'ll", " will ") - s = s:gsub("'ve", " have ") - s = s:gsub("'re", " are ") - s = s:gsub("i'm", " i am ") - s = s:gsub("it's", "it is") - s = s:gsub("n't", " not ") - s = s:gsub("&", " and ") - -- -- Remove dashes (not hyphens) - s = s:gsub('%-[%-%s]+', ' ') - -- Remove everything that is not letters or numbers - s = s:gsub('[^A-Za-z0-9/\'-]', ' ') - -- Remove extra spaces - s = s:gsub('%s+', ' ') - return " "..s.." " -end - --- This function is called once for the whole document. Parameters: --- body is a string, metadata is a table, variables is a table. --- One could use some kind of templating --- system here; this just gives you a simple standalone HTML file. -function Doc(body, metadata, variables) - local buffer = "" - local function add(s) - buffer = buffer .. nude(s) .. "\n" - end - if metadata['title'] then - add(metadata['title']) - end - if metadata['subtitle'] then - add(metadata['subtitle']) - end - add(body) - return hapax(flow(buffer)) - -- return flow(buffer) -end - --- Remove all formatting {{{ -function Note(s) - return s -end - -function Blocksep() - return "\n" -end -function Emph(s) - return s -end - -function Strong(s) - return s -end - -function Subscript(s) - return s -end - -function Superscript(s) - return s -end - -function SmallCaps(s) - return s -end - -function Strikeout(s) - return s -end - -function Code(s, attr) - return s -end - -function CodeBlock(s, attr) - return s -end - -function InlineMath(s) - return s -end - -function DisplayMath(s) - return s -end - -function Span(s, attr) - return s -end - -function Cite(s) - return s -end - -function Plain(s) - return s -end - --- Links only include the link text -function Link(s, src, tit) - return s -end - --- Images have nothing to give us --- (but add a space just in case) -function Image(s, src, tit) - return "\n" -end - -function RawBlock(s) - return s -end - -function RawInline(s) - return s -end - -function CaptionedImage(s, src, tit) - return "\n" -end - -function Str(s) - return s -end - -function Div(s, attr) - return s -end - -function Space(s) - return "\n" -end - -function LineBreak() - return "\n" -end - -function Para(s) - return s -end - -function Header(lev, s, attr) - return s -end - -function BlockQuote(s) - return s -end - -function HorizontalRule() - return "\n" -end - -function BulletList(items) - local buffer = "" - for _, item in pairs(items) do - buffer = buffer .. " " .. item .. "\n" - end - return buffer .. "\n" -end - -function OrderedList(items) - local buffer = "" - for _, item in pairs(items) do - buffer = buffer .. " " .. item .. "\n" - end - return buffer .. "\n" -end - -function DefinitionList(items) - local buffer = "" - for _, item in pairs(items) do - for k, v in pairs(item) do - buffer = buffer .. " " .. k .. "\n" .. v .. "\n" - end - end - return buffer .. "\n" -end - -function Table(caption, aligns, widths, headers, rows) - local buffer = "" - local function add(s) - buffer = buffer .. " " .. s .. "\n" - end - if caption ~= "" then - add(caption) - end - for _,h in pairs(headers) do - add(h) - end - for _, row in pairs(rows) do - for _, cell in pairs(row) do - add(cell) - end - end - return buffer -end --- }}} - --- The following code will produce runtime warnings when you haven't defined --- all of the functions you need for the custom writer, so it's useful --- to include when you're working on a writer. -local meta = {} -meta.__index = - function(_, key) - io.stderr:write(string.format("WARNING: Undefined function '%s'\n",key)) - return function() return "" end - end -setmetatable(_G, meta) diff --git a/trunk/hapaxlink.sh b/trunk/hapaxlink.sh deleted file mode 100644 index 286c43d..0000000 --- a/trunk/hapaxlink.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -file="$1"; -headFile="$2"; -shift 2; -glob="$@"; # *.hapax - -tempFile="${RANDOM}.tmp" - -echo -n "Linking \"$file\"" -# Begin -cat "$headFile" > "$tempFile"; -echo -n "." -# Link words to files they appear in -for word in `sort "$file"`; do - f=`grep -liwq "^$word$" $glob`; - link="`basename $f .hapax`.html" - echo "[$word]($link)" >> "$tempFile"; - echo -n "." -done - -# Make the changes happen -rm "$file" -mv "$tempFile" "$file" - -echo "Done." diff --git a/trunk/hylo.js b/trunk/hylo.js deleted file mode 100644 index 5a39427..0000000 --- a/trunk/hylo.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Hyphenator_Loader 1.1.0 - client side hyphenation for webbrowsers - * Copyright (C) 2014 Mathias Nater, Zürich (mathias at mnn dot ch) - * Project and Source hosted on http://code.google.com/p/hyphenator/ - * - * This JavaScript code is free software: you can redistribute - * it and/or modify it under the terms of the GNU Lesser - * General Public License (GNU LGPL) 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. - */ - -var Hyphenator_Loader=(function(window){'use strict';var languages,config,path,createElem=function(tagname){var r;if(window.document.createElementNS){r=window.document.createElementNS('http://www.w3.org/1999/xhtml',tagname);}else if(window.document.createElement){r=window.document.createElement(tagname);}return r;},checkLangSupport=function(lang,longword){var shadow,computedHeight,bdy=window.document.getElementsByTagName('body')[0];shadow=createElem('div');shadow.style.width='5em';shadow.style.MozHyphens='auto';shadow.style['-webkit-hyphens']='auto';shadow.style['-ms-hyphens']='auto';shadow.style.hyphens='auto';shadow.style.fontSize='12px';shadow.style.lineHeight='12px';shadow.style.visibility='hidden';shadow.lang=lang;shadow.style['-webkit-locale']="'"+lang+"'";shadow.innerHTML=longword;bdy.appendChild(shadow);computedHeight=shadow.offsetHeight;bdy.removeChild(shadow);return(computedHeight>12)?true:false;},loadNrunHyphenator=function(config){var head,script,interval;head=window.document.getElementsByTagName('head').item(0);script=createElem('script');script.src=path;script.type='text/javascript';head.appendChild(script);interval=window.setInterval(function(){if(window.Hyphenator!==undefined){window.clearInterval(interval);Hyphenator.config(config);Hyphenator.run();}},10);},runner=function(){var loadHyphenator=false,r,results={},lang;for(lang in languages){if(languages.hasOwnProperty(lang)){r=checkLangSupport(lang,languages[lang]);results[lang]=r;loadHyphenator=loadHyphenator||!r;}}if(loadHyphenator){loadNrunHyphenator(config);}},runOnContentLoaded=function(window,f){var toplevel,hyphRunForThis={},doFrames=false,contextWindow,documentLoaded,add=window.document.addEventListener?'addEventListener':'attachEvent',rem=window.document.addEventListener?'removeEventListener':'detachEvent',pre=window.document.addEventListener?'':'on',init=function(context){contextWindow=context||window;if(!hyphRunForThis[contextWindow.location.href]&&(!documentLoaded||!!contextWindow.frameElement)){documentLoaded=true;f();hyphRunForThis[contextWindow.location.href]=true;}},doScrollCheck=function(){try{window.document.documentElement.doScroll("left");}catch(error){window.setTimeout(doScrollCheck,1);return;}init(window);},doOnLoad=function(){var i,haveAccess,fl=window.frames.length;if(doFrames&&fl>0){for(i=0;i', ' ') - -- Remove end-of-line backslashes - s = s:gsub('%s+\\$', ' ') - -- Remove dashes (not hyphens) - s = s:gsub('%-%-+', ' ') - s = s:gsub('%-%s', ' ') - -- Remove everything that is not letters or numbers - s = s:gsub('[%.!%?:;,%[%]%(%)<>]', ' ') - -- Remove extra spaces - s = s:gsub('%s+', ' ') - return s:lower() -end - --- This function is called once for the whole document. Parameters: --- body is a string, metadata is a table, variables is a table. --- One could use some kind of templating --- system here; this just gives you a simple standalone HTML file. -function Doc(body, metadata, variables) - local buffer = "" - local function add(s) - buffer = buffer .. nude(s) .. "\n" - end - if metadata['title'] then - add(metadata['title']) - end - if metadata['subtitle'] then - add(metadata['subtitle']) - end - -- TODO: epigraph.content, epigraph.attrib, dedication, other metadata? - add(body) - return flow(buffer) -end - --- Remove all formatting {{{ -function Note(s) - return nude(s) -end - -function Blocksep() - return "\n" -end -function Emph(s) - return nude(s) -end - -function Strong(s) - return nude(s) -end - -function Subscript(s) - return nude(s) -end - -function Superscript(s) - return nude(s) -end - -function SmallCaps(s) - return nude(s) -end - -function Strikeout(s) - return nude(s) -end - -function Code(s, attr) - return nude(s) -end - -function CodeBlock(s, attr) - return nude(s) -end - -function InlineMath(s) - return nude(s) -end - -function DisplayMath(s) - return nude(s) -end - -function Span(s, attr) - return nude(s) -end - -function Cite(s) - return nude(s) -end - -function Plain(s) - return nude(s) -end - --- Links only include the link text -function Link(s, src, tit) - return nude(s) -end - --- Images have nothing to give us --- (but add a space just in case) -function Image(s, src, tit) - return "\n" -end - -function CaptionedImage(s, src, tit) - return "\n" -end - -function Str(s) - return nude(s) -end - -function Div(s, attr) - return nude(s) -end - -function Space(s) - return "\n" -end - -function LineBreak() - return "\n" -end - -function Para(s) - return nude(s) -end - -function Header(lev, s, attr) - return nude(s) -end - -function BlockQuote(s) - return nude(s) -end - -function HorizontalRule() - return "\n" -end - -function BulletList(items) - local buffer = "" - for _, item in pairs(items) do - buffer = buffer .. nude(item) .. "\n" - end - return buffer .. "\n" -end - -function OrderedList(items) - local buffer = "" - for _, item in pairs(items) do - buffer = buffer .. nude(item) .. "\n" - end - return buffer .. "\n" -end - -function DefinitionList(items) - local buffer = "" - for _, item in pairs(items) do - for k, v in pairs(item) do - buffer = buffer .. nude(k) .. "\n" .. nude(v) .. "\n" - end - end - return buffer .. "\n" -end - -function Table(caption, aligns, widths, headers, rows) - local buffer = "" - local function add(s) - buffer = buffer .. nude(s) .. "\n" - end - if caption ~= "" then - add(caption) - end - for _,h in pairs(headers) do - add(h) - end - for _, row in pairs(rows) do - for _, cell in pairs(row) do - add(cell) - end - end - return buffer -end --- }}} - --- The following code will produce runtime warnings when you haven't defined --- all of the functions you need for the custom writer, so it's useful --- to include when you're working on a writer. -local meta = {} -meta.__index = - function(_, key) - io.stderr:write(string.format("WARNING: Undefined function '%s'\n",key)) - return function() return "" end - end -setmetatable(_G, meta) - diff --git a/trunk/style.css b/trunk/style.css new file mode 100644 index 0000000..5f6a289 --- /dev/null +++ b/trunk/style.css @@ -0,0 +1,640 @@ +/* CSS for Autocento at the breakfast table + * Case Duckworth | autocento.me + * vim: fdm=marker + */ +/* COMMON CSS */ +/* @IMPORTS {{{ */ +/* Playfair Display: headings */ +@import url(http://fonts.googleapis.com/css?family=Playfair+Display:400,700,400italic,700italic&subset=latin,latin-ext); +/* Linux Libertine: body text */ +@import url(trunk/libertine.css); +/* Courier New: typewriter text */ +@import url(trunk/courier-prime.css); +/* @imports }}} */ +/* MAIN LAYOUT ELEMENTS {{{ */ +/* HTML + BODY {{{ */ +html, body { + margin: 0; + padding: 0; + font-family: "Libertine", Georgia, serif; + font-size: 100%; +} +html { + height: 100%; +} +body { + position: absolute; + top: 0; + left: 0; + right: 0; + min-height: 100%; + padding-left: 1em; + padding-right: 1em; +} +/* html + body }}} */ +/* HEADER + .CONTAINER + .CONTENT {{{ */ +header { + max-width: 39em; + margin: auto; + text-align: center; + border-bottom: 1px solid black; + padding: 1em 0; + margin-bottom: 1em; + position: relative; +} +.container { + margin: 0 auto; + padding-bottom: 30px; + text-align: center; +} +.content { + line-height: 1.3em; +} +/* header + .container + .content }}} */ +/* NAV + .FOOTNOTES {{{ */ +nav { + height: 24px; + width: 100%; + position: absolute; + bottom: 0; + left: 0; + text-align: center; + overflow: hidden; +} +.footnotes { + font-size: 0.85em; + width: 100%; + position: absolute; + top: 100%; + left: 0; +} +/* nav + .footnotes }}} */ +/* main layout elements }}} */ +/* HEADER ELEMENTS {{{ */ +/* .TITLE + .SUBTITLE {{{ */ +.title { + text-align: left; + display: inline-block; + font-family: "Playfair Display", Georgia, serif; + font-size: 1.5em; + font-weight: 400; + letter-spacing: 0.1em; + text-transform: uppercase; + margin: 0; +} +.subtitle { + text-align: center; + display: block; + font-family: "Playfair Display", Georgia, serif; + font-size: 1.25em; + font-style: italic; + font-weight: 400; + margin-top: 0; + margin-bottom: 0; +} +/* .title + .subtitle }}} */ +/* .HEADER-EXTRA {{{ */ +/* DEDICATION {{{ */ +.dedication { + font-style: italic; + font-size: 0.92em; + margin-top: 1em; + text-align: left; +} +.dedication::before { + content: 'for '; + font-style: italic; +} +.dedication:only-child { + text-align: right; +} +/* dedication }}} */ +/* EPIGRAPH {{{ */ +.epigraph { + text-align: right; + font-size: 0.92em; + font-style: italic; + margin-top: 1em; +} +.epigraph p { + margin: 0; +} +.epigraph .attrib { + text-align: right; + margin-top: 0; + font-size: 0.92em; + font-style: normal; +} +.epigraph .attrib::before { + content: '– '; +} +/* epigraph }}} */ +.header-extra { + text-align: right; +} +.dedication,.epigraph { + vertical-align: bottom; + display: inline-block; + margin-left: 2%; + margin-right: 2%; + width: 45%; +} +/* header-extra }}} */ +/* #SRC {{{ */ +#src { + border: none; + position: absolute; + top: 0; + right: 10px; + color: gray; + font-size: 8pt; +} +/* #src }}} */ +/* header elements }}} */ +/* .EKPHRASTIC {{{ */ +.ekphrastic { + max-width: 41em; + /* margin-top: -1em; */ + margin-bottom: 1em; + margin-left: auto; + margin-right: auto; + text-align: center; +} +.ekphrastic a:link { border: none; } +/* .ekphrastic }}} */ +/* .CONTENT ELEMENTS {{{ */ +/* BLOCK ELEMENTS {{{ */ +.content :first-child { + margin-top: 0; +} +h2 { + font-family: "Playfair Display", Georgia, serif; + font-size: 1em; + font-weight: 600; +} +blockquote { + border-left: 1px solid gray; + padding-left: 2em; + margin-left: 2em; + font-style: italic; +} +img { + max-width: 100%; + margin: auto; +} +/* block elements }}} */ +/* LINKS {{{ */ +a:link { + padding-top: 1px; + color: inherit; + text-decoration: none; + border-bottom: 1px dotted black; +} +a:visited { + color: inherit; +} +a:hover { + /* text-decoration: underline; */ + border-bottom: 1px solid black; +} +a:active { + /* text-decoration: underline; */ + border-bottom: 1px solid black; +} +/* External Links */ +a[href^="http"]:link { + text-decoration: none; + border-bottom: 1px dotted #a1a3a1; +} +a[href^="http"]:visited { +} +a[href^="http"]:hover { + border-bottom: 1px dashed black; +} +a[href^="http"]:active { + border-bottom: 1px dashed black; +} +/* links }}} */ +/* .content elements }}} */ +/* NAV ELEMENTS {{{ */ +nav a:link { border-bottom: none; } +nav a:active { border: none; } +nav .prevlink { + float: left; + text-align: left; +} +nav .nextlink { + float: right; + text-align: right; +} +/* Properties both types of navlinks share */ +nav .prevlink, nav .nextlink { + margin: 0 0.5em; + width: 20%; + display: block; + font-size: 0.85em; + font-family: "Playfair Display", Georgia, serif; + font-style: italic; + text-transform: lowercase; + height: 20px; + text-decoration: none; + position: relative; + display: table; + vertical-align: top; +} +nav .prevlink::before { + content: ' «'; + font-style: normal; + display: table-cell; + vertical-align: top; + text-align: left; + padding-left: 0.5em; + padding-right: 0.5em; + width: 1em; +} +nav .nextlink::after { + content: ' »'; + font-style: normal; + display: table-cell; + vertical-align: top; + text-align: right; + padding-left: 0.5em; + padding-right: 0.5em; + width: 1em; +} +#randomlink { + text-decoration: none; +} +nav .anchors { + position: absolute; + width: 100%; + text-align: center; +} +nav .anchors a { + margin-right: 0.25em; + margin-left: 0.25em; +} +/* nav elements }}} */ +/* .FOOTNOTES ELEMENTS {{{ */ +.footnotes li { + margin-right: 2em; + border-bottom: 1px solid gray; + max-width: 45em; + margin: auto; +} +.footnotes li:last-child { + border-bottom: none; +} +.footnotes p::first-line { + font-variant: normal !important; +} +.footnotes a[href^="#fnref"] { + float: right; +} +a.footnoteRef { + border: none; +} +/* .footnotes elements }}} */ +/* /1* CODE {{{ *1/ */ +/* .sourceCode { */ +/* max-width: 100%; */ +/* overflow: auto; */ +/* background-color: #303030; */ +/* color: #cccccc; */ +/* font-family: "Courier Prime", "Courier New", Courier, monospace; */ +/* font-size: 10pt; */ +/* } */ +/* .sourceCode .kw { /1* keywords *1/ */ +/* color: #f0dfaf; */ +/* font-weight: bold; */ +/* } */ +/* .sourceCode .dt { /1* datatype *1/ */ +/* color: #dfdfbf; */ +/* } */ +/* .sourceCode .dv { /1* decimal value *1/ */ +/* color: #dcdccc; */ +/* } */ +/* .sourceCode .bn { /1* base N *1/ */ +/* color: #dca3a3; */ +/* } */ +/* .sourceCode .fl { /1* float *1/ */ +/* color: #c0bed1; */ +/* } */ +/* .sourceCode .ch { /1* char *1/ */ +/* color: #dca3a3; */ +/* } */ +/* .sourceCode .st { /1* string *1/ */ +/* color: #cc9393; */ +/* } */ +/* .sourceCode .co { /1* comment *1/ */ +/* color: #7f9f7f; */ +/* font-style: italic; */ +/* } */ +/* .sourceCode .ot { /1* other token *1/ */ +/* color: #efef8f; */ +/* } */ +/* .sourceCode .at { /1* alert token *1/ */ +/* color: #ffcfaf; */ +/* } */ +/* .sourceCode .fu { /1* function *1/ */ +/* color: #efef8f; */ +/* } */ +/* .sourceCode .re { /1* region marker *1/ */ +/* } */ +/* .sourceCode .er { /1* error token *1/ */ +/* color: #c3bf9f; */ +/* } */ +/* /1* code }}} *1/ */ +/* GENRE CSS */ +/* .PROSE {{{ */ +.prose { + display: inline-block; + text-align: justify; + max-width: 39em; + margin: auto; + hyphens: auto; + -moz-hyphens: auto; +} +.prose p::first-child::first-line { + font-variant: small-caps; + letter-spacing: 0.1em; +} +/* .prose }}} */ +/* .VERSE {{{ */ +.verse { + display: inline-block; + text-align: left; +} +.verse p { + margin-bottom: 1em; + margin-top: 1em; +} +.line { + display: block; + margin: 0; + text-indent: -1em; + margin-left: 1em; +} +/* .verse }}} */ +/* .LIST {{{ */ +.list { + display: inline-block; + text-align: left; + max-width: 39em; + margin: auto; + hyphens: auto; + -moz-hyphens: auto; +} +/* .list }}} */ +/* .TABLE {{{ */ +.table { + display: inline-block; + text-align: left; +} +/* .table }}} */ +/* PROJECT CSS */ +/* #COVER {{{ */ +/* Flexboxing {{{ */ +#cover { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-box-direction: normal; + -moz-box-direction: normal; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: center; + -moz-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-content: center; + -ms-flex-line-pack: center; + align-content: center; + -webkit-box-align: center; + -moz-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + } +#cover .title { + -webkit-box-ordinal-group: 1; + -moz-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-align-self: auto; + -ms-flex-item-align: auto; + align-self: auto; +} +#cover .byline { + -webkit-box-ordinal-group: 1; + -moz-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-align-self: auto; + -ms-flex-item-align: auto; + align-self: auto; +} +#cover .anchors { + -webkit-box-ordinal-group: 1; + -moz-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-align-self: auto; + -ms-flex-item-align: auto; + align-self: auto; +} +/* }}} */ +#cover { + color: #b2d9e5; + background-image: url('black-streak.jpg'); + background-position: 0 0; + background-size: 100% 100%; + background-repeat: no-repeat; + background-attachment: fixed; + background-clip: border-box; + background-color: black; +} +#cover header { + border: none; + margin: auto; + padding: 0; +} +#cover .content { + max-width: 39em; + margin: auto; +} +#cover a { + text-decoration: none; + border: none; +} +#cover a:link { + color: #b2d9e5; +} +#cover a:visited { + color: #b2b2e5; +} +#cover a:hover { + color: #e5bfb2; +} +#cover a:active { + color: #e5e5b2; +} +#cover li { + list-style: none; +} +#cover .title { + text-transform: uppercase; + text-align: center; + font-size: 1.8em; + letter-spacing: 0.5em; + color: #efefb2; +} +#cover .byline { + font-style: italic; + text-align: center; + font-size: 1.3em; + letter-spacing: 0.2em; + color: #e5bfb2; +} +#cover .anchors a { + margin-left: 0.25em; + margin-right: 0.25em; +} +#cover .randomlink { + text-align: center; + font-size: 1em; + color: #e5bfb2; +} +/* #cover }}} */ +/* .ELEGIES {{{ */ +.elegies { +} +/* .elegies }}} */ +/* .HEZEKIAH {{{ */ +/* .hezekiah }}} */ +/* .STARK {{{ */ +/* TODO: Change to Everything Changes? */ +table { border-collapse: collapse; } +td { + vertical-align: top; + padding-top: 0.25em; + padding-bottom: 0.25em; +} +tr { + border-bottom: 1px solid black; + border-top: 1px solid black; +} +/* .stark }}} */ +/* .PAUL {{{ */ +/* Blockquote = typewriter */ +.paul blockquote { + font-family: "Courier Prime", "Courier New", Courier, monospace; + font-style: normal; + font-size: 10pt; + border: 1px solid black; + max-width: 30em; + margin: auto; + padding: 1em; + text-align: left; +} +.paul blockquote :last-child { + margin: 0; +} +.paul blockquote p::first-line { + font-variant: normal !important; +} +.paul blockquote ul { + list-style-type: none; +} +.paul blockquote ul li::before { + content: '- '; +} + +/* Emphasis = handwritten */ +.paul em { + /* font-family: "Playfair Display", Georgia, sans-serif; */ + font-style: italic; +} +/* .paul }}} */ +/* .AUTOCENTO {{{ */ +.autocento { + background-color: white; +} +/* .autocento }}} */ +/* .BACKLINKS {{{ */ +.backlinks .daisy a:link { + font-size: 0.5em; + font-style: italic; + margin-left: 0.5em; + color: gray; + border: none; + position: relative; + top: -1em; +} +.backlinks .daisy a:visited { + color: #b2b2e5; +} +.backlinks .daisy a:hover { + color: #e5bfb2; +} +.backlinks .daisy a:active { + color: #e5e5b2; +} +/* .backlinks }}} */ +/* ARTICLE CSS */ +/* #TABLE_CONTENTS {{{ */ +#table_contents table { + max-width: 39em; +} +#table_contents tr { + border: none; +} +#table_contents td { + max-width: 50%; +} +/* #table_contents }}} */ +/* #ABOUT_AUTHOR {{{ */ +#about-the-author td { + vertical-align: middle; +} +/* #about_author }}} */ +/* #ABOUT {{{ */ +#about img { + max-width: 10em; + float: right; + padding-top: 0.5em; + padding-left: 1em; +} +/* #about }}} */ diff --git a/trunk/toc.head b/trunk/toc.head index 29cb69e..83b41d6 100644 --- a/trunk/toc.head +++ b/trunk/toc.head @@ -1,11 +1,6 @@ --- -title: Autocento of the breakfast table +title: Table of contents id: toc -subtitle: table of contents genre: list - -project: - title: About autocento - class: meta ... diff --git a/trunk/toc.sh b/trunk/toc.sh deleted file mode 100644 index fe440cb..0000000 --- a/trunk/toc.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -outFile="$1"; -shift 1; -glob="$@"; - -echo -n "Compiling $outFile" - -for file in $glob; do - title=$(grep '^title: ' $file | cut -d' ' -f2-); - subtitle=$(grep '^subtitle: ' $file | cut -d' ' -f2-); - htmlFile="${file%.txt}.html" - # if [[ "$title" == "Autocento of the breakfast table" ]]; then - # echo "#. [$subtitle]($htmlFile)" >> "$outFile"; - # else - # echo "#. [$title]($htmlFile)" >> "$outFile"; - # fi - if [[ -n "$subtitle" ]]; then - echo "#. [$title: $subtitle]($htmlFile)" >> "$outFile" - else - echo "#. [$title]($htmlFile)" >> "$outFile"; - fi - echo -n "." -done - -echo "Done." diff --git a/trunk/versify.exe b/trunk/versify.exe deleted file mode 100644 index d479c80..0000000 Binary files a/trunk/versify.exe and /dev/null differ diff --git a/trunk/versify.hs b/trunk/versify.hs deleted file mode 100644 index 48e9c00..0000000 --- a/trunk/versify.hs +++ /dev/null @@ -1,15 +0,0 @@ -import Text.Pandoc.JSON -import Data.List.Split - -main :: IO () -main = toJSONFilter transformVerseParas - -transformVerseParas :: Block -> Block -transformVerseParas (Para xs) - | LineBreak `elem` xs = Para (addLineSpans xs) - | otherwise = Para xs -transformVerseParas x = x - -addLineSpans :: [Inline] -> [Inline] -addLineSpans = map encloseInSpan . splitWhen (== LineBreak) - where encloseInSpan = Span ("", ["line"], []) diff --git a/trunk/white-streak.jpg b/trunk/white-streak.jpg deleted file mode 100644 index 318f654..0000000 Binary files a/trunk/white-streak.jpg and /dev/null differ -- cgit 1.4.1-21-gabe81