| +#!/bin/bash | ||
| + | ||
| +# Static website build script | ||
| + | ||
| +DIR="$(cd "$(dirname "${BASH_SRC_DIR[0]}")" >/dev/null 2>&1 && pwd)" | ||
| +TPL_DIR="$DIR/template" | ||
| +INC_DIR="$TPL_DIR/includes" | ||
| + | ||
| +# Build artefacts | ||
| +pandoc index.md -f markdown-auto_identifiers -o $INC_DIR/html/body.html | ||
| + | ||
| +closure.sh css/*.css > $INC_DIR/css/main.min.css | ||
| + | ||
| +# Combine into a single page | ||
| +fmpp -Q -S $TPL_DIR -O . index.html | ||
| + | ||
| +# Optimise the web page | ||
| +tidy -m -q \ | ||
| + --wrap 0 \ | ||
| + --tidy-mark no \ | ||
| + --vertical-space auto \ | ||
| + --doctype html5 \ | ||
| + index.html | ||
| +article { | ||
| + display: flex; | ||
| + flex-direction: column; | ||
| + align-items: center; | ||
| + justify-content: center; | ||
| + min-height: 100%; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Use a single column for all images and headers on the homepage. | ||
| + */ | ||
| +div.homepage { | ||
| + display: flex; | ||
| + flex-direction: row; | ||
| + | ||
| + align-items: center; | ||
| + justify-content: center; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Change the logo size. | ||
| + */ | ||
| +div.homepage img[alt="logo"] { | ||
| + height: 120px; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Make the page content columnar. | ||
| + */ | ||
| +div.homepage div.content { | ||
| + display: flex; | ||
| + flex-direction: column; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Make the headings flush. | ||
| + */ | ||
| +div.homepage h1, div.homepage h2 { | ||
| + margin: 0; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Center the contact link on the homepage. | ||
| + */ | ||
| +div.homepage a { | ||
| + display: flex; | ||
| + justify-content: center; | ||
| +} | ||
| + | ||
| +html { | ||
| + height: 100%; | ||
| +} | ||
| + | ||
| +body { | ||
| + display: flex; | ||
| + flex-direction: column; | ||
| + justify-content: center; | ||
| + align-items: center; | ||
| + height: 100%; | ||
| + | ||
| + font-family: Helvetica, sans-serif; | ||
| + color: rgb( 4, 28, 38 ); | ||
| +} | ||
| + | ||
| +header, footer { | ||
| + flex-shrink: 0; | ||
| +} | ||
| + | ||
| +main { | ||
| + display: flex; | ||
| + flex-grow: 1; | ||
| + flex-direction: column; | ||
| + justify-content: center; | ||
| + align-items: stretch; | ||
| +} | ||
| + | ||
| +h1, h2, h3 { | ||
| + font-family: Palatino, serif; | ||
| +} | ||
| + | ||
| +a { | ||
| + text-decoration: none; | ||
| + color: rgb( 81, 169, 207 ); | ||
| +} | ||
| + | ||
| +a:visited { | ||
| + text-decoration: none; | ||
| + color: rgb( 18, 109, 149 ); | ||
| +} | ||
| + | ||
| +footer { | ||
| + font-size: 0.75em; | ||
| +} | ||
| + | ||
| +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ | ||
| + | ||
| +/* Document | ||
| + ========================================================================== */ | ||
| + | ||
| +/** | ||
| + * 1. Correct the line height in all browsers. | ||
| + * 2. Prevent adjustments of font size after orientation changes in iOS. | ||
| + */ | ||
| + | ||
| +html { | ||
| + line-height: 1.15; /* 1 */ | ||
| + -webkit-text-size-adjust: 100%; /* 2 */ | ||
| +} | ||
| + | ||
| +/* Sections | ||
| + ========================================================================== */ | ||
| + | ||
| +/** | ||
| + * Remove the margin in all browsers. | ||
| + */ | ||
| + | ||
| +body { | ||
| + margin: 0; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Render the `main` element consistently in IE. | ||
| + */ | ||
| + | ||
| +main { | ||
| + display: block; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Correct the font size and margin on `h1` elements within `section` and | ||
| + * `article` contexts in Chrome, Firefox, and Safari. | ||
| + */ | ||
| + | ||
| +h1 { | ||
| + font-size: 2em; | ||
| + margin: 0.67em 0; | ||
| +} | ||
| + | ||
| +/* Grouping content | ||
| + ========================================================================== */ | ||
| + | ||
| +/** | ||
| + * 1. Add the correct box sizing in Firefox. | ||
| + * 2. Show the overflow in Edge and IE. | ||
| + */ | ||
| + | ||
| +hr { | ||
| + box-sizing: content-box; /* 1 */ | ||
| + height: 0; /* 1 */ | ||
| + overflow: visible; /* 2 */ | ||
| +} | ||
| + | ||
| +/** | ||
| + * 1. Correct the inheritance and scaling of font size in all browsers. | ||
| + * 2. Correct the odd `em` font sizing in all browsers. | ||
| + */ | ||
| + | ||
| +pre { | ||
| + font-family: monospace, monospace; /* 1 */ | ||
| + font-size: 1em; /* 2 */ | ||
| +} | ||
| + | ||
| +/* Text-level semantics | ||
| + ========================================================================== */ | ||
| + | ||
| +/** | ||
| + * Remove the gray background on active links in IE 10. | ||
| + */ | ||
| + | ||
| +a { | ||
| + background-color: transparent; | ||
| +} | ||
| + | ||
| +/** | ||
| + * 1. Remove the bottom border in Chrome 57- | ||
| + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. | ||
| + */ | ||
| +abbr[title] { | ||
| + border-bottom: none; /* 1 */ | ||
| + text-decoration: underline; /* 2 */ | ||
| + /* @alternate */ | ||
| + text-decoration: underline dotted; /* 2 */ | ||
| +} | ||
| + | ||
| +/** | ||
| + * Add the correct font weight in Chrome, Edge, and Safari. | ||
| + */ | ||
| + | ||
| +b, | ||
| +strong { | ||
| + font-weight: bolder; | ||
| +} | ||
| + | ||
| +/** | ||
| + * 1. Correct the inheritance and scaling of font size in all browsers. | ||
| + * 2. Correct the odd `em` font sizing in all browsers. | ||
| + */ | ||
| + | ||
| +code, | ||
| +kbd, | ||
| +samp { | ||
| + font-family: monospace, monospace; /* 1 */ | ||
| + font-size: 1em; /* 2 */ | ||
| +} | ||
| + | ||
| +/** | ||
| + * Add the correct font size in all browsers. | ||
| + */ | ||
| + | ||
| +small { | ||
| + font-size: 80%; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Prevent `sub` and `sup` elements from affecting the line height in | ||
| + * all browsers. | ||
| + */ | ||
| + | ||
| +sub, | ||
| +sup { | ||
| + font-size: 75%; | ||
| + line-height: 0; | ||
| + position: relative; | ||
| + vertical-align: baseline; | ||
| +} | ||
| + | ||
| +sub { | ||
| + bottom: -0.25em; | ||
| +} | ||
| + | ||
| +sup { | ||
| + top: -0.5em; | ||
| +} | ||
| + | ||
| +/* Embedded content | ||
| + ========================================================================== */ | ||
| + | ||
| +/** | ||
| + * Remove the border on images inside links in IE 10. | ||
| + */ | ||
| + | ||
| +img { | ||
| + border-style: none; | ||
| +} | ||
| + | ||
| +/* Forms | ||
| + ========================================================================== */ | ||
| + | ||
| +/** | ||
| + * 1. Change the font styles in all browsers. | ||
| + * 2. Remove the margin in Firefox and Safari. | ||
| + */ | ||
| + | ||
| +button, | ||
| +input, | ||
| +optgroup, | ||
| +select, | ||
| +textarea { | ||
| + font-family: inherit; /* 1 */ | ||
| + font-size: 100%; /* 1 */ | ||
| + line-height: 1.15; /* 1 */ | ||
| + margin: 0; /* 2 */ | ||
| +} | ||
| + | ||
| +/** | ||
| + * Show the overflow in IE. | ||
| + * 1. Show the overflow in Edge. | ||
| + */ | ||
| + | ||
| +button, | ||
| +input { /* 1 */ | ||
| + overflow: visible; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Remove the inheritance of text transform in Edge, Firefox, and IE. | ||
| + * 1. Remove the inheritance of text transform in Firefox. | ||
| + */ | ||
| + | ||
| +button, | ||
| +select { /* 1 */ | ||
| + text-transform: none; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Correct the inability to style clickable types in iOS and Safari. | ||
| + */ | ||
| + | ||
| +button, | ||
| +[type="button"], | ||
| +[type="reset"], | ||
| +[type="submit"] { | ||
| + -webkit-appearance: button; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Remove the inner border and padding in Firefox. | ||
| + */ | ||
| + | ||
| +button::-moz-focus-inner, | ||
| +[type="button"]::-moz-focus-inner, | ||
| +[type="reset"]::-moz-focus-inner, | ||
| +[type="submit"]::-moz-focus-inner { | ||
| + border-style: none; | ||
| + padding: 0; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Restore the focus styles unset by the previous rule. | ||
| + */ | ||
| + | ||
| +button:-moz-focusring, | ||
| +[type="button"]:-moz-focusring, | ||
| +[type="reset"]:-moz-focusring, | ||
| +[type="submit"]:-moz-focusring { | ||
| + outline: 1px dotted ButtonText; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Correct the padding in Firefox. | ||
| + */ | ||
| + | ||
| +fieldset { | ||
| + padding: 0.35em 0.75em 0.625em; | ||
| +} | ||
| + | ||
| +/** | ||
| + * 1. Correct the text wrapping in Edge and IE. | ||
| + * 2. Correct the color inheritance from `fieldset` elements in IE. | ||
| + * 3. Remove the padding so developers are not caught out when they zero out | ||
| + * `fieldset` elements in all browsers. | ||
| + */ | ||
| + | ||
| +legend { | ||
| + box-sizing: border-box; /* 1 */ | ||
| + color: inherit; /* 2 */ | ||
| + display: table; /* 1 */ | ||
| + max-width: 100%; /* 1 */ | ||
| + padding: 0; /* 3 */ | ||
| + white-space: normal; /* 1 */ | ||
| +} | ||
| + | ||
| +/** | ||
| + * Add the correct vertical alignment in Chrome, Firefox, and Opera. | ||
| + */ | ||
| + | ||
| +progress { | ||
| + vertical-align: baseline; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Remove the default vertical scrollbar in IE 10+. | ||
| + */ | ||
| + | ||
| +textarea { | ||
| + overflow: auto; | ||
| +} | ||
| + | ||
| +/** | ||
| + * 1. Add the correct box sizing in IE 10. | ||
| + * 2. Remove the padding in IE 10. | ||
| + */ | ||
| + | ||
| +[type="checkbox"], | ||
| +[type="radio"] { | ||
| + box-sizing: border-box; /* 1 */ | ||
| + padding: 0; /* 2 */ | ||
| +} | ||
| + | ||
| +/** | ||
| + * Correct the cursor style of increment and decrement buttons in Chrome. | ||
| + */ | ||
| + | ||
| +[type="number"]::-webkit-inner-spin-button, | ||
| +[type="number"]::-webkit-outer-spin-button { | ||
| + height: auto; | ||
| +} | ||
| + | ||
| +/** | ||
| + * 1. Correct the odd appearance in Chrome and Safari. | ||
| + * 2. Correct the outline style in Safari. | ||
| + */ | ||
| + | ||
| +[type="search"] { | ||
| + -webkit-appearance: textfield; /* 1 */ | ||
| + outline-offset: -2px; /* 2 */ | ||
| +} | ||
| + | ||
| +/** | ||
| + * Remove the inner padding in Chrome and Safari on macOS. | ||
| + */ | ||
| + | ||
| +[type="search"]::-webkit-search-decoration { | ||
| + -webkit-appearance: none; | ||
| +} | ||
| + | ||
| +/** | ||
| + * 1. Correct the inability to style clickable types in iOS and Safari. | ||
| + * 2. Change font properties to `inherit` in Safari. | ||
| + */ | ||
| + | ||
| +::-webkit-file-upload-button { | ||
| + -webkit-appearance: button; /* 1 */ | ||
| + font: inherit; /* 2 */ | ||
| +} | ||
| + | ||
| +/* Interactive | ||
| + ========================================================================== */ | ||
| + | ||
| +/* | ||
| + * Add the correct display in Edge, IE 10+, and Firefox. | ||
| + */ | ||
| + | ||
| +details { | ||
| + display: block; | ||
| +} | ||
| + | ||
| +/* | ||
| + * Add the correct display in all browsers. | ||
| + */ | ||
| + | ||
| +summary { | ||
| + display: list-item; | ||
| +} | ||
| + | ||
| +/* Misc | ||
| + ========================================================================== */ | ||
| + | ||
| +/** | ||
| + * Add the correct display in IE 10+. | ||
| + */ | ||
| + | ||
| +template { | ||
| + display: none; | ||
| +} | ||
| + | ||
| +/** | ||
| + * Add the correct display in IE 10. | ||
| + */ | ||
| + | ||
| +[hidden] { | ||
| + display: none; | ||
| +} | ||
| - | ||
| +<svg height="20" viewBox="0 0 24 20" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m22 1.2c0-.663-.537-1.2-1.2-1.2h-17.6c-.663 0-1.2.537-1.2 1.2v11.8h20zm-2 9.8h-16v-9h16zm2 3h-20c-.197.372-2 4.582-2 4.998 0 .522.418 1.002 1.002 1.002h21.996c.584 0 1.002-.48 1.002-1.002 0-.416-1.803-4.626-2-4.998zm-12.229 5 .467-1h3.523l.467 1z" fill="#126d95"/></svg> |
| +<!DOCTYPE html><html lang="en"><head><title>White Magic Software, Ltd.</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content="White Magic Software, Ltd."><meta name="author" content="White Magic Software, Ltd."><style type="text/css">article{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%}div.homepage{display:flex;flex-direction:row;align-items:center;justify-content:center}div.homepage img[alt="logo"]{height:120px}div.homepage div.content{display:flex;flex-direction:column}div.homepage h1,div.homepage h2{margin:0}div.homepage a{display:flex;justify-content:center}html{height:100%}body{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;font-family:Helvetica,sans-serif;color:#041c26}header,footer{flex-shrink:0}main{display:flex;flex-grow:1;flex-direction:column;justify-content:center;align-items:stretch}h1,h2,h3{font-family:Palatino,serif}a{text-decoration:none;color:#51a9cf}a:visited{text-decoration:none;color:#126d95}footer{font-size:.75em}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type="button"]::-moz-focus-inner{border-style:none;padding:0}[type="reset"]::-moz-focus-inner{border-style:none;padding:0}[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button{height:auto}[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template,[hidden]{display:none} </style><link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png"><link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon.png"><link rel="manifest" href="images/site.webmanifest"><meta name="msapplication-TileColor" content="#da532c"><meta name="theme-color" content="#ffffff"></head><body><main><article><div class="homepage"><p><img src="images/logo.svg" alt="logo"><br></p><div class="content"><h1>White Magic Software</h1><h2>Robust. Elegant. Maintainable.</h2><p><a href="mailto:Dave.Jarvis@gmail.com">Contact</a></p></div></div></article></main><footer><p>© Copyright 2019 by White Magic Software, Ltd.</p></footer></body></html> | ||
| +::: homepage | ||
| + \ | ||
| + | ||
| +::: content | ||
| +# White Magic Software | ||
| +## Robust. Elegant. Maintainable. | ||
| + | ||
| +[Contact](mailto:Dave.Jarvis@gmail.com) | ||
| +::: | ||
| + | ||
| +::: | ||
| + | ||
| - | ||
| +article{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%}div.homepage{display:flex;flex-direction:row;align-items:center;justify-content:center}div.homepage img[alt="logo"]{height:120px}div.homepage div.content{display:flex;flex-direction:column}div.homepage h1,div.homepage h2{margin:0}div.homepage a{display:flex;justify-content:center}html{height:100%}body{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;font-family:Helvetica,sans-serif;color:#041c26}header,footer{flex-shrink:0}main{display:flex;flex-grow:1;flex-direction:column;justify-content:center;align-items:stretch}h1,h2,h3{font-family:Palatino,serif}a{text-decoration:none;color:#51a9cf}a:visited{text-decoration:none;color:#126d95}footer{font-size:.75em}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type="button"]::-moz-focus-inner{border-style:none;padding:0}[type="reset"]::-moz-focus-inner{border-style:none;padding:0}[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button{height:auto}[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template,[hidden]{display:none} |
| +<div class="homepage"> | ||
| +<p><img src="images/logo.svg" alt="logo" /><br /> | ||
| +</p> | ||
| +<div class="content"> | ||
| +<h1>White Magic Software</h1> | ||
| +<h2>Robust. Elegant. Maintainable.</h2> | ||
| +<p><a href="mailto:Dave.Jarvis@gmail.com">Contact</a></p> | ||
| +</div> | ||
| +</div> | ||
| +<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png"> | ||
| +<link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon.png"/> | ||
| +<link rel="manifest" href="images/site.webmanifest"/> | ||
| +<meta name="msapplication-TileColor" content="#da532c"/> | ||
| +<meta name="theme-color" content="#ffffff"/> | ||
| +<#assign updated = .now> | ||
| +<#assign owner = "White Magic Software, Ltd."> | ||
| +<!doctype html> | ||
| +<html lang="en"> | ||
| +<head> | ||
| + <title>${owner}</title> | ||
| + | ||
| + <meta charset="utf-8"/> | ||
| + <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||
| + <meta name="description" content="${owner}"/> | ||
| + <meta name="author" content="${owner}"/> | ||
| + | ||
| + <style type="text/css"> | ||
| + <#include "includes/css/main.min.css"> | ||
| + </style> | ||
| + | ||
| + <#include "includes/html/icon.html"> | ||
| +</head> | ||
| +<body> | ||
| + <main> | ||
| + <article> | ||
| + <#include "includes/html/body.html"> | ||
| + </article> | ||
| + </main> | ||
| + <footer> | ||
| + <p>© Copyright ${updated?string.yyyy} by ${owner}</p> | ||
| + </footer> | ||
| +</body> | ||
| +</html> | ||
| + | ||
| Author | Dave Jarvis <email> |
|---|---|
| Date | 2019-03-14 14:31:53 GMT-0700 |
| Commit | 1673d4f806b5120daa7426b4905b624397206c51 |
| Delta | 525 lines added, 2 lines removed, 523-line increase |