Add rudimentary theming, checks for .directory-listing-ok file

This commit is contained in:
maddiebaka
2023-08-15 14:35:52 -04:00
parent 22cf104f6e
commit 99667caac8
4 changed files with 263 additions and 6 deletions

View File

@@ -9,9 +9,21 @@ require_relative "skeksis/htmlize"
module Skeksis
#class Error < StandardError; end
Header = <<~HTML
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Gembridge</title>
<style>
h1,h2,h3,h4,h5,h6 {
color: #2e3440;
}
a {
color: #434c5e;
}
a:visited {
color: #4c566a;
}
</style>
</head>
<body>
<h1>Directory Listing</h1>
@@ -56,13 +68,28 @@ module Skeksis
private
def load_style
"<script type=\"text/css\">" +
File.open("style/nord.css", 'r').readlines.join("\n") +
"</script>"
end
def create_dir_listing(path, env)
http = URI.parse(env['REQUEST_URI'])
unless Dir.each_child(path).include?('.directory-listing-ok')
return nil
end
listing = Dir.each_child(path).map do |i|
if i == ".directory-listing-ok"
next
end
path = Pathname.new(env['PATH_INFO']).join(i)
uri = URI::HTTP.build(host: http.host, port: http.port, path: path.to_s)
"<a href=\"#{uri.to_s}\">#{i}</a><br/>"
"<a href=\"#{uri.to_s}\">#{i}</a><br>"
end.join("\n")
[Header + listing + Footer]
end

View File

@@ -1,7 +1,8 @@
module Skeksis
class IR
Header = <<~HTML
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Gembridge</title>
</head>
@@ -34,7 +35,7 @@ module Skeksis
case entry[:type]
when :blank
"<br/>"
"<br>"
when :header
level = entry[:level]
"<h#{level}>#{text}</h#{level}>"