head = <<EOF
<link rel="canonical" href="#{DURL}/#{rel_path}">
EOF
- if rel_path =~ %r{^blog/.}
+ if rel_path =~ %r{^/blog/|^blog.html}
head += <<EOF
<link rel="alternate" type="application/atom+xml" title="#{DN}" href="#{DURL}/feed.xml">
EOF
<head>
<meta charset="utf-8">
<title>#{title}</title>
- <link rel="stylesheet" href="/main.css">
- <link rel="stylesheet" href="/common.css">
+ <link rel="stylesheet" href="/css/main.css">
<link rel="shortcut icon" href="/assets/favicon.png" />
<meta name="description" content="#{o[:description] || DESCRIPTION}">
#{o[:head]}
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
- <header>
+ <header class="page_header">
<h3><a href="/">iankelling.org</a>#{o[:header]}</h3>
</header>
<div class="main-content-stripe">
- <div class="content">
+ <div class="#{o[:prose] ? "prose" : "content"}">
#{content}
</div>
</div>
- <div id="comment-stripe">
+ <div class="comment-stripe">
#{o[:comments]}
</div>
<footer>
#{o[:footer]}
- <p>This site has a <a href="/git/?p=iankelling.org;a=summary">git repo</a>. Code is gpl, content is <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img id="cc-by-sa" alt="Creative Commons License" src="/assets/cc-by-sa-4.0-80x15.png" /></a> unless otherwise noted</p>
- <p><address><a href="ian@iankelling.org">ian@iankelling.org</a> let me know what you think</address></p>
+ <p>Sources in <a href="/git/?p=iankelling.org;a=summary">git</a>. Mostly markdown files. Default is <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img class="cc-by-sa" alt="Creative Commons License" src="/assets/cc-by-sa-4.0-80x15.png" /></a></p>
+ <p><address><a href="mailto:ian@iankelling.org">ian@iankelling.org</a> let me know what you think</address></p>
</footer>
</body>
</html>
end
def comment_html(comment, date)
- inner = Redcarpet::Markdown.new(Redcarpet::Render::HTML, fenced_code_blocks: true).render(<<EOF)
-#{comment}
-<span class="comment-date">#{Time.at(date).strftime("%b %-d '%y")}</span>
-EOF
# I tried putting the time, %I:%M %p UTC, but it looks kinda
# clunky, going against my simple theme.
+ user_input = Redcarpet::Markdown.new(Redcarpet::Render::Safe,
+ fenced_code_blocks: true).render(comment)
<<EOF
<div class="comment">
- #{inner}
+ #{user_input}
+ <p class="comment-date">#{Time.at(date).strftime("%b %-d '%y")}</p>
</div>
EOF
end
+
+ def techpost(file)
+
+ b = File.basename(file,'.md')
+ # double dash for one dash, single dash for space
+ title = b.gsub(/--|-/, '--' => '-', '-' => ' ')
+
+ md = File.read(file)
+ page_html = "<h1>#{title}</h1><b>Contents</b>"
+ renderer = Redcarpet::Render::HTML_TOC.new(nesting_level: 2)
+ page_html += Redcarpet::Markdown.new(renderer, fenced_code_blocks: true).render(md)
+
+ renderer = HTMLwithPygments.new(with_toc_data: true)
+ page_html += Redcarpet::Markdown.new(renderer, fenced_code_blocks: true).render(md)
+
+ header_rel = ' / <a href="/technical-notes.html">technical notes</a> /'
+ fskel("/technical-notes/#{b}.html", title, page_html,
+ header: header_rel,
+ prose: true)
+
+ technotes_index_entry = "<li><a href=\"/technical-notes/#{b}.html\">#{title}</a></li>"
+ return technotes_index_entry
+
+ end
+
def post(file, build_time=false)
content = File.read(file)
content =~ %r{\A(---\s*\n.*?\n?)^((---)\s*$\n?)}m # yaml front matter
# Small enough that it won't happen at my site's scale.
File.write(File.join(comment_file_dir, c_date.to_s), c)
end
- # https://piwik.org/docs/privacy/ says keep logs for 3-6 months
+ # Im slow at updating this site, it gets low traffic,
+ # https://piwik.org/docs/privacy/ suggests 3-6 months, so
+ # this cant be too bad.
$db.execute("delete from c where date < #{NOW - DAY*180}")
end
comments = old_comments + comments
comment_html("Note: there #{text} pending approval.", NOW)
end
com_section = <<-EOF
- <form class="comment" action="/cgi/comment" method="post">
- <input class="misc" type="text" name="url">
+ <form action="/cgi/comment" method="post">
+ <input class="misc-comment-input" type="text" name="url">
<input name="goto" type="hidden" value="#{rel_path}">
- <textarea rows="10" name="comment" placeholder="markdown" maxlength="1000"></textarea>
- <input type="submit" value="Leave a comment">
+ <textarea rows="10" name="comment" maxlength="1000"></textarea>
+ <input type="submit" value="Add a comment (markdown works)">
</form>
<div id="comments">
#{com_list}
blog_toc_entry = "<li><a href=\"#{rel_path}\">#{title}</a></li>"
com_section = <<EOF
-<div id="comment-section">
+<div id="comment-section" class="comment-section">
#{com_section}
</div>
EOF
fskel(rel_path, title, page_html,
header: header_rel,
footer: footer_extra,
+ # We call the main content prose because it can contain
+ # code, so we want to left justify it, so we dont have
+ # to cram all the code into the middle and can use
+ # a wider area.
+ prose: true,
comments: com_section,
description: description)
url="#{DURL}#{rel_path}"