1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# MAKEFILE for Autocento of the breakfast table
# by Case Duckworth | case.duckworth@gmail.com | autocento.me
# inspired by Lincoln Mullen | lincolnmullen.com
# vim: fdm=marker
# Define variables {{{
srcs := $(wildcard *.txt)
templates := $(wildcard _template.*)
trunk := trunk
metas = hapax first-lines common-titles index island
metas += $(templates) $(wildcard _*)
txts = $(filter-out \
$(patsubst %,%.txt,$(metas)),\
$(srcs))
htmls = $(filter-out \
$(patsubst %,%.html,$(metas)),\
$(patsubst %.txt,%.html,$(srcs)))
htmlPre = $(trunk)/versify.exe
htmlPreSrc = $(trunk)/versify.hs
htmlTemplate = _template.html
htmlPandocOptions = --template=$(htmlTemplate)
htmlPandocOptions+= --filter=$(htmlPre)
htmlPandocOptions+= --smart --mathml --section-divs
lozenger = $(trunk)/lozenge.sh
lozengeOut = $(trunk)/lozenge.js
hapaxs = $(filter-out \
$(patsubst %,%.hapax,$(metas)),\
$(patsubst %.txt,%.hapax,$(srcs)))
hapaxer = $(trunk)/hapax.lua
hapaxPre = $(trunk)/forceascii.exe
hapaxPreSrc = $(trunk)/forceascii.hs
hapaxPandocOptions = --filter=$(hapaxPre)
hapaxOut = hapax.txt
hapaxHead = $(trunk)/hapax.head
hapaxLinker = $(trunk)/hapaxlink.sh
backTxts = $(patsubst %.html,%.back,$(htmls))
backHtms = $(patsubst %.back,%_backlinks.htm,$(backTxts))
backHead = $(trunk)/backlink.head
backlinker = $(trunk)/backlink.sh
backPandocOptions = --template=$(htmlTemplate) --smart
islandHead = $(trunk)/island.head
islandTxt = island.txt
islandHtm = island.htm
firstLinesTxt = first-lines.txt
firstLinesOut = first-lines.html
firstLiner = $(trunk)/first-lines.sh
firstLinesHead = $(trunk)/first-lines.head
commonTitlesTxt = common-titles.txt
commonTitlesOut = common-titles.html
commonTitler = $(trunk)/common-titles.sh
commonTitlesHead = $(trunk)/common-titles.head
# }}}
# PHONY {{{
.PHONY: all clean distclean again meta
all: meta \
$(htmlPre) $(htmls) $(lozengeOut)\
$(backHtms) $(islandHtm)
clean:
-rm -f $(hapaxs)
-rm -f $(firstLinesTxt)
-rm -f $(commonTitlesTxt)
-rm -f $(backTxts)
-rm -f *.tmp trunk/*.tmp
distclean: clean
-rm -f $(hapaxPre) $(htmlPre)
-rm -f $(hapaxOut) $(firstLinesOut) $(commonTitlesOut)
-rm -f $(backHtms)
-rm -f $(htmls)
again: clean all
meta: $(hapaxOut) $(firstLinesOut) $(commonTitlesOut)
# }}}
# HTML {{{
$(htmlPre): $(htmlPreSrc)
ghc --make $(htmlPreSrc)
%.html: %.txt | $(htmlTemplate) $(htmlPre)
pandoc $< -t html5 $(htmlPandocOptions) -o $@
$(lozengeOut): $(htmls)
bash $(lozenger) $(lozengeOut) $(htmls)
# }}}
# BACKLINKS {{{
%.back: %.html $(backHead)
@bash $(backlinker) $< $@ $(backHead) $(islandHead) $(txts)
%_backlinks.htm: %.back
pandoc $< -t html5 $(backPandocOptions) -o $@
$(islandTxt): $(backTxts)
$(islandHtm): $(islandTxt) $(islandHead) $(backHtms)
pandoc $< -t html5 $(htmlPandocOptions) -o $@
rm -f $(islandTxt)
# }}}
# HAPAX {{{
$(hapaxPre): $(hapaxPreSrc)
ghc --make $(hapaxPreSrc)
%.hapax: %.txt $(hapaxPre) $(hapaxLinker) $(hapaxHead)
pandoc $< -t $(hapaxer) $(hapaxPandocOptions) -o $@
$(hapaxOut): $(hapaxs)
pandoc $^ -t $(hapaxer) -o $@
bash $(hapaxLinker) $@ $(hapaxHead) $^
# }}}
# FIRST LINES & COMMON TITLES {{{
$(firstLinesTxt): $(txts) | $(firstLiner) $(firstLinesHead)
bash $(firstLiner) $@ $(firstLinesHead) $^
$(firstLinesOut): $(firstLinesTxt) $(htmlTemplate) $(htmlPre)
pandoc $< -t html5 $(htmlPandocOptions) -o $@
$(commonTitlesTxt): $(txts) | $(commonTitler) $(commonTitlesHead)
bash $(commonTitler) $@ $(commonTitlesHead) $^
$(commonTitlesOut): $(commonTitlesTxt) $(htmlTemplate) $(htmlPre)
pandoc $< -t html5 $(htmlPandocOptions) -o $@
# }}}
|