class Page @file @path @link @metadata @@ADDTAGS = { :rbe => { html_open: "\<%=", html_close: "%\>" }, :rb => { html_open: "\<%", html_close: "%\>" } } def initialize(path) @path = path @link = "https://broken-moon.net/" + path begin @file = File.readlines(path) rescue raise "Invalid page at " + path end if @file[0] == "+++\n" @metadata = get_toml_meta else raise "No Metadata" end end def get_date if @metadata.has_key?("date") return @metadata["date"] else return "1970.1.1" end end def get_title if @metadata.has_key?("title") return @metadata["title"] else return "No title" end end def get_description if @metadata.has_key?("description") return @metadata["description"] else return "No description" end end def get_link if @metadata.has_key?("link") return @metadata["link"] else return @link end end def get_path return @path end def get_toml_meta startIndex = @file.find_index("+++\n") @file[startIndex] = "" endIndex = @file.find_index("+++\n") tomlString = @file[startIndex+1..endIndex-1].join @file.slice!(startIndex, endIndex + 1) # JANK AS SHIT, WILL HURT ME return TOML.load(tomlString) end def render case @metadata["format"] when "markdown" return Kramdown::Document.new(@file.join).to_html when "erb" return ERB.new(@file.join).result(binding) when "bbcode" return ERB.new(@file.join.concat("\n").gsub("\n[rb]", '[rb]').bbcode_to_html(false, @@ADDTAGS)).result(binding) else return @file end end def get_feed_entry return " \n " + get_title + "\n " + get_link + "\n " + get_description + "\n " end end