diff options
-rw-r--r-- | Makefile | 18 | ||||
-rwxr-xr-x | bin/index | 19 | ||||
-rw-r--r-- | bin/index.atom.erb | 8 | ||||
-rw-r--r-- | bin/index.md.erb | 2 | ||||
-rw-r--r-- | bin/util.rb | 1 | ||||
-rw-r--r-- | src/dnd/index.yaml | 3 | ||||
-rw-r--r-- | src/index.yaml | 3 |
7 files changed, 33 insertions, 21 deletions
@@ -17,8 +17,6 @@ html.src = $(shell find src -type f \( -false $(foreach s,$(html.suffixes), -o - html.out = $(call patsubst-all,$(addprefix src/%.,$(html.suffixes)),out/%.html,$(html.src)) html.out += $(foreach d,$(sort $(dir $(patsubst src/%,out/%,$(html.src)))),$dindex.html $dindex.atom) -mydir = $(patsubst %/,%,$(patsubst out/%,%,$(dir $@))) - all: $(html.out) out/main.css .PHONY: all @@ -43,14 +41,14 @@ out/%.css: src/%.scss out/%.css: out/%.scss scss --stdin < $< > $@ -out/index.md : $(bin/index) bin/index.md.erb .var.html.src $(html.src) bin/write-atomic - bin/index md '$(mydir)' $(filter $(patsubst out%,src%,$(@D))/%,$^) | bin/write-atomic $@ -out/%/index.md : $(bin/index) bin/index.md.erb .var.html.src $(html.src) bin/write-atomic - bin/index md '$(mydir)' $(filter $(patsubst out%,src%,$(@D))/%,$^) | bin/write-atomic $@ -out/index.atom : $(bin/index) bin/index.atom.erb .var.html.src $(html.src) bin/write-atomic - bin/index atom '$(mydir)' $(filter $(patsubst out%,src%,$(@D))/%,$^) | bin/write-atomic $@ -out/%/index.atom: $(bin/index) bin/index.atom.erb .var.html.src $(html.src) bin/write-atomic - bin/index atom '$(mydir)' $(filter $(patsubst out%,src%,$(@D))/%,$^) | bin/write-atomic $@ +index.all = $(html.src) $(shell find src -type f -name index.yaml) +index.filter = $(filter-out %/index.yaml,$(filter $(@D)/% $(patsubst out%,src%,$(@D))/%,$1)) +index.cmd = bin/index $(patsubst .%,%,$(suffix $@)) $(@D) $(call index.filter,$^) | bin/write-atomic $@ +index.dep = $(bin/index) bin/index.$1.erb .var.index.all $(index.all) bin/write-atomic Makefile +out/index.md : $(call index.dep,md) ; $(index.cmd) +out/%/index.md : $(call index.dep,md) ; $(index.cmd) +out/index.atom : $(call index.dep,atom) ; $(index.cmd) +out/%/index.atom : $(call index.dep,atom) ; $(index.cmd) serve: serve-8000 serve-%: all @@ -1,16 +1,29 @@ #!/usr/bin/env ruby # -*- coding: utf-8 -*- load 'util.rb' +require 'yaml' +# ARGV[0] template = "bin/index.#{ARGV.shift}.erb" +erb = ERB.new(File.read(template)); +erb.filename = template + +# ARGV[1] @path = ARGV.shift +indexyaml = @path.sub('out', 'src')+'/index.yaml' +if File.exists?(indexyaml) + metadata = YAML::load(File.read(indexyaml)) +else + metadata = {} +end + +# ARGV[2..] @pages = [] for filename in ARGV do @pages.push(Page.new(filename)) end - -erb = ERB.new(File.read(template)); -erb.filename = template +# main +@title = metadata['title'] || @path.sub('out', '') erb.run() diff --git a/bin/index.atom.erb b/bin/index.atom.erb index 0667088..1afbf8c 100644 --- a/bin/index.atom.erb +++ b/bin/index.atom.erb @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> - <title>AndrewDM.me <%= @path %></title> + <title>AndrewDM.me <%= @title %></title> <link rel="self" type="application/atom+xml" href="./index.atom"/> <link rel="alternate" type="text/html" href="./"/> <link rel="alternate" type="text/markdown" href="./index.md"/> @@ -11,9 +11,9 @@ <% @pages.sort_by{|p| p.updated}.reverse.each do |page| %> <entry xmlns="http://www.w3.org/2005/Atom"> - <link rel="alternate" type="text/html" href="./<%= page.slug %>.html"/> - <link rel="alternate" type="text/markdown" href="./<%= page.slug %>.md"/> - <id>https://lukeshu.com/blog/<%= page.slug %>.html</id> + <link rel="alternate" type="text/html" href="<%= page.url %>.html"/> + <link rel="alternate" type="text/markdown" href="<%= page.url %>.md"/> + <id>https://andrewdm.me/<%= page.url %></id> <updated><%= page.updated.rfc3339 %></updated> <published><%= page.published.rfc3339 %></published> <title><%= page.title %></title> diff --git a/bin/index.md.erb b/bin/index.md.erb index 621a323..ce5e030 100644 --- a/bin/index.md.erb +++ b/bin/index.md.erb @@ -1,5 +1,5 @@ --- -title: "<%= @path %>" +title: "<%= @title %>" class: "index" --- diff --git a/bin/util.rb b/bin/util.rb index 1318f28..05808b7 100644 --- a/bin/util.rb +++ b/bin/util.rb @@ -115,7 +115,6 @@ class Page def author ; @author ||= Person.new( pandoc['author'] || "Andrew Murrell") ; end def license ; @license ||= License.new(pandoc['license'] || "CC BY-SA-3.0") ; end - def slug ; @slug ||= infile.sub(/\..*$/,'').sub(/^.*\//,'') ; end def content ; @content ||= pandoc.to('html5 '+(pandoc['pandoc_flags']||'')) ; end def head ; @head ||= pandoc['html_head_extra'] ; end def class ; @class ||= pandoc['class'] ; end diff --git a/src/dnd/index.yaml b/src/dnd/index.yaml index 6e83a31..a0a0868 100644 --- a/src/dnd/index.yaml +++ b/src/dnd/index.yaml @@ -1,5 +1,6 @@ +title: "Dungeons & Dragons" external: - title: "Waterdeep Bazaar: Marketplace Generator" - url: "/dnd/WaterdeepBazaar/WaterdeepBazaar.html" + url: "dnd/WaterdeepBazaar/WaterdeepBazaar.html" published: "2015-12-14" tags: [DM, WP] diff --git a/src/index.yaml b/src/index.yaml index 3532b53..c61e1b6 100644 --- a/src/index.yaml +++ b/src/index.yaml @@ -1,3 +1,4 @@ +title: "" sections: "writing": "Writing" "dnd": "Dungeons & Dragons" @@ -8,6 +9,6 @@ external: published: "2013-12-03" tags: [FF] - title: "Waterdeep Bazaar: Marketplace Generator" - url: "/dnd/WaterdeepBazaar/WaterdeepBazaar.html" + url: "dnd/WaterdeepBazaar/WaterdeepBazaar.html" published: "2015-12-14" tags: [DM, WP] |