-TYPE page
-MENUID 0
----
# Header 1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed accumsan sapien. Phasellus consequat metus sit amet est imperdiet vestibulum. Morbi vitae placerat mauris. Etiam ac mauris finibus, sagittis augue vitae, tempus dolor. Mauris egestas maximus urna eu fringilla. Pellentesque et pulvinar mi. Phasellus massa ipsum, mattis vel ipsum dictum, pretium dignissim dui. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut mattis risus elit, sit amet commodo lacus tincidunt eget. Phasellus arcu lorem, consequat ut augue sed, iaculis lobortis ex. Integer non sem tincidunt urna aliquam tempor eget sed libero. Aliquam hendrerit velit quis augue ullamcorper, quis maximus sapien volutpat. In hac habitasse platea dictumst. Aenean tincidunt, odio at luctus suscipit, justo mauris faucibus turpis, et posuere enim nibh in nulla. Nam in lorem vel sem vehicula consectetur a et tortor.
-TYPE page
-MENUID 1
----
# Articles
articles
--- /dev/null
+# Projects
+
+* [mikedlowis.github.io](https://github.com/mikedlowis/mikedlowis.github.io) -
+* [atf](https://github.com/mikedlowis/atf) - Aardvark Test Framework
+* [carl](https://github.com/mikedlowis/carl) -
+* [onward](https://github.com/mikedlowis/onward) -
+* [libcds](https://github.com/mikedlowis/libcds) - A collection of data structures implemented in C to be included in multiple projects.
+* [opts](https://github.com/mikedlowis/opts) - A simple and lightweight options parsing library written in C
+* [build-system](https://github.com/mikedlowis/build-system) - Build scripts based on RScons for a variety of different projects.
--- /dev/null
+# Prototypes
+
+* [editor](https://github.com/mikedlowis-prototypes/editor) -
+* [sclpl](https://github.com/mikedlowis-prototypes/sclpl) -
+* [albase](https://github.com/mikedlowis-prototypes/albase) - Base tools for aardvark-linux
+* [abt](https://github.com/mikedlowis-prototypes/abt) - Aardvark Build Tool
+* [aardvark-linux](https://github.com/mikedlowis-prototypes/aardvark-linux) -
+* [acc](https://github.com/mikedlowis-prototypes/acc) - Aardvark Chat Client - terminal based xmpp chat client
+* [gir](https://github.com/mikedlowis-prototypes/gir) -
+* [libbk](https://github.com/mikedlowis-prototypes/libbk) - A static library implementing several garbage collection algorithms which can be selected at link time.
+* [atc](https://github.com/mikedlowis-prototypes/atc) - Algebraic Types in C
+* [lfs](https://github.com/mikedlowis-prototypes/lfs) -
+* [mabs](https://github.com/mikedlowis-prototypes/mabs) -
+* [afm](https://github.com/mikedlowis-prototypes/afm) - Aardvark File Manager
+++ /dev/null
-TYPE page
-MENUID 2
----
-# Projects
-
-projects
+++ /dev/null
-TYPE page
-MENUID 3
----
-# Prototypes
-
-prototypes
-
</div>
<div class="menu">
- <span class="left">
- <a id="menuitem0" href="home.html">home</a>
- <a id="menuitem1" href="articles.html">articles</a>
- <a id="menuitem2" href="projects.html">projects</a>
- <a id="menuitem3" href="prototypes.html">prototypes</a>
- </span>
+ <span class='left'>
+<a id='menuitem0' href='home.html'>home</a>
+<a id='menuitem1' href='articles.html'>articles</a>
+<a id='menuitem2' href='projects.html'>projects</a>
+<a id='menuitem3' href='prototypes.html'>prototypes</a>
+</span>
+
</div>
<div class="content">
<div class="main">
<h1>Articles</h1>
-<p>articles</p>
+<h2>articles</h2>
+<p>foo</p>
+
+
</div>
</div>
<div class="footer">
- <span class="right">© 2015 Michael D. Lowis</span>
+ <span class="right">© 2017 Michael D. Lowis</span>
</div>
</body><div></div></html>
</div>
<div class="menu">
- <span class="left">
- <a id="menuitem0" href="home.html">home</a>
- <a id="menuitem1" href="articles.html">articles</a>
- <a id="menuitem2" href="projects.html">projects</a>
- <a id="menuitem3" href="prototypes.html">prototypes</a>
- </span>
+ <span class='left'>
+<a id='menuitem0' href='home.html'>home</a>
+<a id='menuitem1' href='articles.html'>articles</a>
+<a id='menuitem2' href='projects.html'>projects</a>
+<a id='menuitem3' href='prototypes.html'>prototypes</a>
+</span>
+
</div>
<div class="content">
<p>Cras interdum sodales nisl, sed iaculis orci venenatis ac. Duis vel finibus risus, ac tincidunt elit. Vivamus ut lectus bibendum, consectetur nisi eget, tincidunt mi. Phasellus vulputate urna in lacus cursus, eu condimentum ligula porta. Phasellus posuere condimentum diam, id luctus nibh. Mauris at sodales odio. Vivamus tincidunt a ante a rhoncus. Sed augue turpis, lobortis ut placerat sed, auctor nec lectus. Ut elementum cursus est, sed tristique ante malesuada nec. Maecenas vitae mattis urna, vel commodo dolor. Sed eu efficitur augue. Cras enim velit, fermentum et nibh sed, pharetra pulvinar sem. Sed quis ullamcorper dolor. Donec dictum imperdiet sapien vitae mattis. Mauris sit amet leo vitae purus sodales posuere eget id dui.</p>
<h4>Header 4</h4>
<p>Nullam vulputate, quam sed congue convallis, arcu lectus feugiat nibh, eget efficitur nunc tortor a velit. Aliquam ultrices tellus quis mollis lobortis. Cras et dolor porttitor nisi suscipit venenatis vel vel sem. Mauris tristique lectus quis dolor mattis, rhoncus scelerisque tortor pellentesque. Sed eu tincidunt urna. Morbi a euismod mauris. Nunc nec nibh et augue tristique mattis et eget augue. Mauris lobortis, felis in fringilla euismod, sapien libero consequat dui, id maximus nisi eros quis turpis. Quisque nec lobortis augue, sed rutrum sem. Ut ultricies pellentesque felis, a luctus nulla finibus ut. Morbi eu nunc sapien. Etiam scelerisque ex ut lacus gravida, sed consectetur mauris suscipit. Aliquam sed cursus urna, sit amet efficitur eros. Mauris in metus vitae augue aliquet convallis. Quisque eget odio egestas, gravida nisl at, accumsan mauris.</p>
+
+
</div>
</div>
<div class="footer">
- <span class="right">© 2015 Michael D. Lowis</span>
+ <span class="right">© 2017 Michael D. Lowis</span>
</div>
</body><div></div></html>
+++ /dev/null
-<!DOCTYPE html>
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <meta charset="utf-8">
- </head>
- <body>
- <script>
- window.location = "/site/home.html";
- </script>
- </body>
-</html>
</div>
<div class="menu">
- <span class="left">
- <a id="menuitem0" href="home.html">home</a>
- <a id="menuitem1" href="articles.html">articles</a>
- <a id="menuitem2" href="projects.html">projects</a>
- <a id="menuitem3" href="prototypes.html">prototypes</a>
- </span>
+ <span class='left'>
+<a id='menuitem0' href='home.html'>home</a>
+<a id='menuitem1' href='articles.html'>articles</a>
+<a id='menuitem2' href='projects.html'>projects</a>
+<a id='menuitem3' href='prototypes.html'>prototypes</a>
+</span>
+
</div>
<div class="content">
<div class="main">
<h1>Projects</h1>
-<p>projects</p>
+<ul>
+<li>
+<a href="https://github.com/mikedlowis/mikedlowis.github.io">mikedlowis.github.io</a> -
+</li><li>
+<a href="https://github.com/mikedlowis/atf">atf</a> - Aardvark Test Framework
+</li><li>
+<a href="https://github.com/mikedlowis/carl">carl</a> -
+</li><li>
+<a href="https://github.com/mikedlowis/onward">onward</a> -
+</li><li>
+<a href="https://github.com/mikedlowis/libcds">libcds</a> - A collection of data structures implemented in C to be included in multiple projects.
+</li><li>
+<a href="https://github.com/mikedlowis/opts">opts</a> - A simple and lightweight options parsing library written in C
+</li><li>
+<a href="https://github.com/mikedlowis/build-system">build-system</a> - Build scripts based on RScons for a variety of different projects.
+</li>
+</ul>
+
+
</div>
</div>
<div class="footer">
- <span class="right">© 2015 Michael D. Lowis</span>
+ <span class="right">© 2017 Michael D. Lowis</span>
</div>
</body><div></div></html>
</div>
<div class="menu">
- <span class="left">
- <a id="menuitem0" href="home.html">home</a>
- <a id="menuitem1" href="articles.html">articles</a>
- <a id="menuitem2" href="projects.html">projects</a>
- <a id="menuitem3" href="prototypes.html">prototypes</a>
- </span>
+ <span class='left'>
+<a id='menuitem0' href='home.html'>home</a>
+<a id='menuitem1' href='articles.html'>articles</a>
+<a id='menuitem2' href='projects.html'>projects</a>
+<a id='menuitem3' href='prototypes.html'>prototypes</a>
+</span>
+
</div>
<div class="content">
<div class="main">
<h1>Prototypes</h1>
-<p>prototypes</p>
+<ul>
+<li>
+<a href="https://github.com/mikedlowis-prototypes/editor">editor</a> -
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/sclpl">sclpl</a> -
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/albase">albase</a> - Base tools for aardvark-linux
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/abt">abt</a> - Aardvark Build Tool
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/aardvark-linux">aardvark-linux</a> -
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/acc">acc</a> - Aardvark Chat Client - terminal based xmpp chat client
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/gir">gir</a> -
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/libbk">libbk</a> - A static library implementing several garbage collection algorithms which can be selected at link time.
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/atc">atc</a> - Algebraic Types in C
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/lfs">lfs</a> -
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/mabs">mabs</a> -
+</li><li>
+<a href="https://github.com/mikedlowis-prototypes/afm">afm</a> - Aardvark File Manager
+</li>
+</ul>
+
+
</div>
</div>
<div class="footer">
- <span class="right">© 2015 Michael D. Lowis</span>
+ <span class="right">© 2017 Michael D. Lowis</span>
</div>
</body><div></div></html>
--- /dev/null
+<!DOCTYPE html>
+<!-- Site design *heavily* based on the excellent design of http://suckless.org/ -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>Simplicity is the ultimate sophistication</title>
+ <link rel="shortcut icon" type="image/x-icon" href="/site/logo.png" />
+ <link rel="stylesheet" type="text/css" href="/site/style.css">
+ <meta charset="utf-8">
+ <style>
+ #menuitem<%= @menuid %> { font-weight: bold; }
+ </style>
+</head>
+<body>
+ <div class="header">
+ <a href="index.html"><img src="/site/logo.png"></a>
+ <a class="headerLink" href="index.html">mdlowis</a>
+ <span class="headerSubtitle">Simplicity is the ultimate sophistication</span>
+ </div>
+
+ <div class="menu">
+ <%= getmenu() %>
+ </div>
+
+ <div class="content">
+ <div class="nav">
+ <ul>
+ <li><a href="" class="thisPage">link1</a></li>
+ <li><a href="">link2</a></li>
+ <li><a href="">link3</a></li>
+ </ul>
+ </div>
+
+ <div class="main">
+ <%= @contents %>
+ </div>
+ </div>
+
+ <div class="footer">
+ <span class="right">© 2017 Michael D. Lowis</span>
+ </div>
+</body><div></div></html>
--- /dev/null
+#!/usr/bin/ruby
+require 'open-uri'
+require 'nokogiri'
+require 'erb'
+
+def trim(str)
+ str.sub(/^[\t\n ]*/, "").sub(/[\t\n ]*$/, "")
+end
+
+def user_repos(user)
+ url = "https://github.com/#{user}?tab=repositories"
+ sel = 'div[class=js-repo-list] li[class~=source]'
+ items = Nokogiri::HTML(open(url)).css(sel).map do |e|
+ reponame = trim(e.css('div h3 a').text)
+ { name: reponame,
+ desc: trim(e.css('div p').text),
+ url: "https://github.com/#{user}/#{reponame}" }
+ end
+end
+
+def org_repos(org)
+ url = "https://github.com/#{org}"
+ sel = 'div[class~=repo-list] li[class~=source]'
+ items = Nokogiri::HTML(open(url)).css(sel).map do |e|
+ reponame = trim(e.css('div h3 a').text)
+ { name: reponame,
+ desc: trim(e.css('div p').text),
+ url: "https://github.com/#{org}/#{reponame}" }
+ end
+end
+
+#------------------------------------------------------------------------------
+
+class Page
+ include ERB::Util
+ attr_accessor :title, :menuid, :contents
+
+ def initialize(page)
+ match = page.match(/(\d+)-(.+).md/)
+ @title = match[2].capitalize
+ @menuid = match[1]
+ @contents = `tools/md2html.awk #{page}`
+ end
+
+ def render()
+ ERB.new(IO.read("templates/page.erb")).result(binding)
+ end
+
+ def save(file)
+ File.open(file, "w+") do |f|
+ f.write(render)
+ end
+ end
+
+ def getmenu()
+ menu = "<span class='left'>\n"
+ Dir.glob('pages/*.md').each_with_index do |e,idx|
+ page = e.match(/\d+-(.+).md/)[1]
+ menu += "<a id='menuitem#{idx}' href='#{page}.html'>#{page}</a>\n"
+ end
+ menu += "</span>\n"
+ menu
+ end
+end
+
+#------------------------------------------------------------------------------
+
+File.open("pages/2-projects.md", "w") do |f|
+ f.puts "# Projects\n\n"
+ user_repos('mikedlowis').each do |e|
+ f.puts "* [#{e[:name]}](#{e[:url]}) - #{e[:desc]}"
+ end
+end
+
+File.open("pages/3-prototypes.md", "w") do |f|
+ f.puts "# Prototypes\n\n"
+ org_repos('mikedlowis-prototypes').each do |e|
+ f.puts "* [#{e[:name]}](#{e[:url]}) - #{e[:desc]}"
+ end
+end
+
+Dir.glob('pages/*.md').each do |md|
+ html = "site/" + md.match(/\d+-(.+).md/)[1] + ".html"
+ puts "#{md} -> #{html}"
+ Page.new(md).save(html)
+end
+
+# Generate Home Page
+# Generate Articles Page
+# Generate Projects Page
+# Generate Prototypes Page
\ No newline at end of file