#!/usr/bin/ruby
#
#Copyright 2022 Yessiest (yessiest@memeware.net)
#
#Licensed under the Apache License, Version 2.0 (the "License");
#you may not use this file except in compliance with the License.
#You may obtain a copy of the License at
#
#http://www.apache.org/licenses/LICENSE-2.0
#
#Unless required by applicable law or agreed to in writing, software
#distributed under the License is distributed on an "AS IS" BASIS,
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#See the License for the specific language governing permissions and
#limitations under the License.
# Ruby CGI module to produce human-readable HTML from markdown pages
# Variables
ROOT_PATH="/var/www/"
TAB_MULTIPLIER=10
TAB_UNIT="px"
QUOTE_TAB=4
TEMPLATE_PRE="template.pre.html"
TEMPLATE_POST="template.post.html"
TEMPLATE_CSS="template.css"
# Script
require 'cgi'
cgi = CGI.new("html5")
def ident(ident)
return ""
end
def _parse_list(text,mode=["ul",/ *-/])
new_text = ""
list_started = false
text.each_line do |line|
starts = line.start_with?(mode[1])
l_ident = line.match(/ */)[0].length
if (not list_started) and (starts) then
list_started = true
new_text=new_text+"<#{mode[0]}>\n
\n\\1\n
") # Parse lists # - Unordered lists doc = _parse_list(doc) # - Ordered lists doc = _parse_list(doc,mode = ["ol",/ *\d*\./]) # Bounded markup # - Bold/Italics doc = doc.gsub(/(?\\1") doc = doc.gsub(/(?\\1") doc = doc.gsub(/(?\\1") # - Underline doc = doc.gsub(/(?\\1") # - Strikethrough doc = doc.gsub(/(?\\1") # Unbounded (line) markup # - Headers doc = doc.gsub(/(?<=\n)\#{4} ?(.*)/,"\n\\1
")
# - Inline block
doc = doc.gsub(/(?\\1")
template_pre+"\n"+
doc+"\n"+
template_post+"\n"
}
cgi.out {
cgi.html {
cgi.head { "\n"+
cgi.title { cgi["docfile"].gsub(/.md$/,"") }+"\n"+
template_css
} +
content
}
}