summaryrefslogtreecommitdiff
path: root/html.rb
diff options
context:
space:
mode:
Diffstat (limited to 'html.rb')
-rwxr-xr-xhtml.rb153
1 files changed, 125 insertions, 28 deletions
diff --git a/html.rb b/html.rb
index da73660..75caf46 100755
--- a/html.rb
+++ b/html.rb
@@ -1,43 +1,140 @@
#!/usr/bin/env ruby
+
ROOT = ARGV[0]
SNIPPETS = File.join(File.dirname(__FILE__), "snippets")
-tree = {
- "music" => Dir[File.join(ROOT, "music", "*")],
- "videos" => Dir[File.join(ROOT, "videos", "*")],
-}
-def html src
- cat = File.basename(src, ".html")
- html = File.read(File.join(SNIPPETS, "head.html"))
- html += "<nav>\n"
- html += "<a href='/about.html'><img src='/pdp8.png' id='logo' alt='pdp8'></a>\n"
+def nav cat
+ html = "<nav>"
+ html += "<a href='/about.html'><img src='/pdp8.png' id='logo' alt='pdp8'></a>"
["music", "pictures", "videos", "code", "newsletter"].each do |c|
c == cat ? cl = 'item current' : cl = 'item'
- html += "<a class='#{cl}' href='/#{c}.html'>#{c}</a>\n"
- end
- html += "<a id='menu' href='#' onclick='show_vertical_menu()'>\n"
- html += "<div class='fa fa-bars' aria-hidden='true'></div>\n"
- html += "</a>\n"
- html += "</nav>\n"
- case cat
- when "music"
- html += music src
- when "videos"
- html += videos src
- else
- html += File.read(src)
+ html += "<a class='#{cl}' href='/#{c}.html'>#{c}</a>"
end
+ html += "<a id='menu' href='#' onclick='show_vertical_menu()'>"
+ html += "<div class='fa fa-bars' aria-hidden='true'></div>"
+ html += "</a>"
+ html += "</nav>"
+ html
+end
+
+def file_html basename
+ path = File.join(SNIPPETS, basename + ".html")
+ html = File.read(File.join(SNIPPETS, "head.html"))
+ html += nav basename
+ html += "<div class='post'>"
+ html += File.read(path)
+ html += "</div>"
html += File.read(File.join(SNIPPETS, "tail.html"))
- out = File.join(ROOT, cat + ".html")
+ print_html basename, html
+end
+
+def print_html basename, html
+ out = File.join(ROOT, basename + ".html")
puts out
File.open(out, "w+") { |f| f.puts html }
- puts `tidy -iqm -w 80 #{out} 2>&1`
- # puts `echo "#{html}" > #{out} `
+ puts `tidy -iqm -w 0 #{out} 2>&1`
+end
+
+def music_html
+ music = Dir[File.join(ROOT, "music", "*")].sort.reverse
+ music.each_with_index do |dir, i|
+ html = File.read(File.join(SNIPPETS, "head.html"))
+ html += nav "music"
+ html += "<div class='post'>"
+ title = File.basename(dir).split("_")[1..-1].join(" ")
+ html += "<h1>#{title}</h1>"
+ html += File.read(File.join(dir, "README")) + "<p>"
+ cover = File.join("/", dir.sub(ROOT, ''), "cover.jpeg")
+ html += "<a title='Download cover.jpeg' href='#{cover}' download>
+ <img src='#{cover}' alt='cover'></a>
+ <p>"
+ Dir[File.join(dir, "*mp3")].each do |f|
+ f = "/" + f.sub(ROOT, '')
+ html += "<audio controls>
+ <source src='#{f}' type='audio/mpeg'>
+ <a href='#{f}'>#{f}</a>
+ </audio>&nbsp;
+ <a title='Download #{f}' href='#{f}' class='btn' download>
+ #{File.basename(f, '.mp3')}</a><br>
+ "
+ end
+ bc = "https://pdp8.bandcamp.com/#{title.gsub(' ', '-')}"
+ html += "<p>Bandcamp: <a href='#{bc}'>#{bc}</a>"
+ html += "</div>"
+ html += "<div class='pager'>"
+ j = (i - 1) % music.size
+ p = File.join("/", File.basename(music[j]) + ".html")
+ html += "<a class='btn-left' href='#{p}'>
+ <div class='fa fa-caret-left' aria-hidden='true'></div>&nbsp;previous
+ </a>"
+ html += ""
+ j = (i + 1) % music.size
+ n = File.join("/", File.basename(music[j]) + ".html")
+ html += "<a class='btn-right' href='#{n}'>
+ [#{i + 1}/#{music.size}] next <div class='fa fa-caret-right' aria-hidden='true'></div>
+ </a>"
+
+ html += "</div>"
+ html += File.read(File.join(SNIPPETS, "tail.html"))
+ print_html File.basename(dir), html
+ if i == 0
+ print_html "music", html
+ end
+ end
end
-["about", "code", "pictures", "info", "newsletter"].each do |cat|
- html File.join(SNIPPETS, cat + ".html")
+def video_html
+ videos = Dir[File.join(ROOT, "videos", "*")].sort.reverse
+ videos.each_with_index do |dir, i|
+ html = File.read(File.join(SNIPPETS, "head.html"))
+ html += nav "videos"
+ html += "<div class='post'>"
+ title = File.basename(dir).split("_")[1..-1].join(" ")
+ html += "<h1>#{title}</h1>"
+ txt = File.read(File.join(dir, "README"))
+ txt = txt.gsub(/(http\S*)/, '<a href="\1">\1</a>')
+ lines = txt.split("\n")
+ html += lines.shift + "<p>"
+ mp4 = File.join("/videos", File.basename(dir), title.gsub(" ", "_") + ".mp4")
+ webm = File.join("/videos", File.basename(dir), title.gsub(" ", "_") + ".webm")
+
+ html += "<video controls>
+ <source src='#{mp4}' type='video/mpeg'>
+ <source src='#{webm}' type='video/webm'>
+ <a href='#{mp4}'>#{mp4}</a>
+ </video><p>
+ "
+ html += lines.join("<br>")
+ html += "</div>"
+ html += "<div class='pager'>"
+ j = (i - 1) % videos.size
+ p = File.join("/", File.basename(videos[j]) + ".html")
+ html += "<a class='btn-left' href='#{p}'>
+ <div class='fa fa-caret-left' aria-hidden='true'></div>&nbsp;previous
+ </a>"
+ html += ""
+ j = (i + 1) % videos.size
+ n = File.join("/", File.basename(videos[j]) + ".html")
+ html += "<a class='btn-right' href='#{n}'>
+ [#{i + 1}/#{videos.size}] next <div class='fa fa-caret-right' aria-hidden='true'></div>
+ </a>"
+
+ html += "</div>"
+ html += File.read(File.join(SNIPPETS, "tail.html"))
+ print_html File.basename(dir), html
+ if i == 0
+ print_html "videos", html
+ end
+ end
+end
+
+music_html
+video_html
+
+["about", "code", "pictures", "newsletter"].each do |basename|
+ file_html basename
end
-["pdp8.png", "style.css", "distances.js", "images.js"].each { |f| `cp "#{File.join(SNIPPETS, f)}" "#{ROOT}"` }
+["pdp8.png", "style.css", "distances.js", "images.js"].each { |f| `rsync -av "#{File.join(SNIPPETS, f)}" "#{ROOT}"` }
+`rsync -av #{File.join(SNIPPETS, "Fork-Awesome-1.2.0")} "#{ROOT}"`
# rss