48 lines
1.5 KiB
Awk
48 lines
1.5 KiB
Awk
function replace_all(text, token, value, pos, token_len, res) {
|
|
token_len = length(token)
|
|
res = ""
|
|
while ((pos = index(text, token)) > 0) {
|
|
res = res substr(text, 1, pos - 1) value
|
|
text = substr(text, pos + token_len)
|
|
}
|
|
return res text
|
|
}
|
|
|
|
BEGIN {
|
|
current_url = ENVIRON["AWK_CURRENT_URL"]
|
|
nav = ENVIRON["AWK_NAV"]
|
|
title = ENVIRON["AWK_TITLE"]
|
|
footer = ENVIRON["AWK_FOOTER"]
|
|
style_path = ENVIRON["AWK_STYLE_PATH"]
|
|
head_extra = ENVIRON["AWK_HEAD_EXTRA"]
|
|
header_brand = ENVIRON["AWK_HEADER_BRAND"]
|
|
if (current_url != "") {
|
|
nav = replace_all(nav, "href=\"" current_url "\"", "href=\"" current_url "\" class=\"current-page\"")
|
|
}
|
|
}
|
|
|
|
{
|
|
line = $0
|
|
line = replace_all(line, "{{TITLE}}", title)
|
|
line = replace_all(line, "{{NAV}}", nav)
|
|
line = replace_all(line, "{{FOOTER}}", footer)
|
|
line = replace_all(line, "{{CSS}}", style_path)
|
|
line = replace_all(line, "{{HEAD_EXTRA}}", head_extra)
|
|
line = replace_all(line, "{{HEADER_BRAND}}", header_brand)
|
|
|
|
pos = index(line, "{{CONTENT}}")
|
|
if (pos > 0) {
|
|
printf "%s", substr(line, 1, pos - 1)
|
|
while ((getline content_line < "-") > 0) {
|
|
gsub(/\.md\)/, ".html)", content_line)
|
|
gsub(/\.md"/, ".html\"", content_line)
|
|
gsub(/\.md\?/, ".html?", content_line)
|
|
gsub(/\.md#/, ".html#", content_line)
|
|
print content_line
|
|
}
|
|
printf "%s\n", substr(line, pos + 11)
|
|
} else {
|
|
print line
|
|
}
|
|
}
|