Tons of changes, all for adding a RSS feed
parent
37907e95cc
commit
b206070606
@ -0,0 +1,85 @@
|
||||
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 " <item>\n <title>" + get_title + "</title>\n <link>" + get_link + "</link>\n <description>" + get_description + "</description>\n </item>"
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
+++
|
||||
format = "bbcode"
|
||||
+++
|
||||
[b]Test[/b]
|
||||
[rbe] "HAHAHHA" [/rbe]
|
@ -1,3 +1,8 @@
|
||||
+++
|
||||
date = "2021.08.18"
|
||||
format = "markdown"
|
||||
title = "Well, This is Awkward"
|
||||
+++
|
||||
# [Well, This is Awkward.](/news/wellThisIsAwkward)
|
||||
|
||||
So, been a good few months.
|
@ -1 +0,0 @@
|
||||
2021.08.18
|
@ -0,0 +1,595 @@
|
||||
:root {
|
||||
--fg-col: #FFFFFF;
|
||||
/*--main-col: #d2738a;*/
|
||||
--main-col:#b4a999;
|
||||
--grey-col: #CCCCCC;
|
||||
--bg-col: #1f1710;
|
||||
--ver: calc(95vh - 50px);
|
||||
--ver-btm: 10vh;
|
||||
--ver-upr: 18px;
|
||||
--shade: linear-gradient(to top, rgba(31,23,16,1), rgba(31,23,16,0.8), rgba(31,23,16,0));
|
||||
}
|
||||
|
||||
body {
|
||||
background-repeat: no-repeat;
|
||||
background-color: var(--bg-col);
|
||||
background-size: cover;
|
||||
background-attachment: fixed;
|
||||
background-position: bottom left;
|
||||
word-break: break-word;
|
||||
display: grid;
|
||||
grid-template-columns: auto;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
img {
|
||||
padding: 2px;
|
||||
border: 3px double var(--main-col);
|
||||
}
|
||||
|
||||
table {
|
||||
padding: 2px;
|
||||
margin: 20px 0 20px 0;
|
||||
border: 1px solid var(--main-col);
|
||||
}
|
||||
|
||||
th {
|
||||
color: var(--fg-col);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background-color: #150f0a;
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background-color: #392a1d;
|
||||
}
|
||||
|
||||
input[type="submit" i] {
|
||||
background: unset;
|
||||
border: 3px double var(--main-col);
|
||||
margin-left: 10px;
|
||||
color: var(--main-col);
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.aside, .article, .section, .banner {
|
||||
opacity: 0.9;
|
||||
transition: 0.3s;
|
||||
}
|
||||
.banner {
|
||||
border: none;
|
||||
width: 240px;
|
||||
max-width: 100%;
|
||||
}
|
||||
.banner:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.bannerother, .bannergrave {
|
||||
border: none;
|
||||
height: 60px;
|
||||
width: 240px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.bannergrave {
|
||||
filter: grayscale(1);
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
.bannergrave:hover {
|
||||
filter: grayscale(0);
|
||||
}
|
||||
|
||||
.bannerlarge {
|
||||
border: none;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.imgnoborder {
|
||||
max-width: 100%;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.aside, .article, .section {
|
||||
background: var(--bg-col);
|
||||
padding: 10px;
|
||||
border: 1px solid var(--main-col);
|
||||
box-shadow: 3px 3px 2px var(--main-col);
|
||||
}
|
||||
|
||||
.aside:hover, .article:hover, .section:hover {
|
||||
opacity: 1;
|
||||
box-shadow: 6px 6px 4px var(--main-col);
|
||||
}
|
||||
|
||||
.aside {
|
||||
width: 250px;
|
||||
margin: 2px;
|
||||
max-height: var(--ver);
|
||||
align-self: start;
|
||||
overflow-x: hidden;
|
||||
position: sticky;
|
||||
top: calc(2px + 8px);
|
||||
}
|
||||
|
||||
.aside > ul {
|
||||
padding-inline-start: 20px;
|
||||
}
|
||||
|
||||
.aside > ul > ul {
|
||||
padding-inline-start: 25px;
|
||||
}
|
||||
|
||||
.asideitem {
|
||||
list-style-image: url("../images/list.gif");
|
||||
list-style-position: inside;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.asidesubitem {
|
||||
list-style-image: url("../images/listsmall.gif");
|
||||
list-style-position: inside;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.openaside {
|
||||
display: none;
|
||||
position: fixed !important;
|
||||
height: 1.5em;
|
||||
padding: 6px 0 0 0 !important;
|
||||
width: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: var(--bg-col);
|
||||
border-bottom: 3px double var(--main-col) !important;
|
||||
border-top: none !important;
|
||||
border-left: none !important;
|
||||
border-right: none !important;
|
||||
text-align: center;
|
||||
box-shadow: none !important;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.openaside a {
|
||||
font-size: 1.2em;
|
||||
letter-spacing: 8px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
height: var(--ver-btm);
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
position: fixed;
|
||||
background-image: var(--shade);
|
||||
display: table;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.bottomcell {
|
||||
display: table-cell;
|
||||
vertical-align: bottom;
|
||||
text-align: center;
|
||||
opacity: 0.7;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
.bottomcell a {
|
||||
pointer-events: all;
|
||||
}
|
||||
|
||||
.bottomcell p {
|
||||
pointer-events: all;
|
||||
}
|
||||
|
||||
.bottomcell:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.cell {
|
||||
width: 45%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cell > p {
|
||||
height: 24px;
|
||||
margin: 16px 0 0 0;
|
||||
}
|
||||
|
||||
.cell > h3 {
|
||||
height: 48px;
|
||||
margin: 16px 0 0 0;
|
||||
}
|
||||
|
||||
.mobilemenu {
|
||||
width: 250px;
|
||||
overflow-x: hidden;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.mobilemenu > ul {
|
||||
text-align: left;
|
||||
position: relative;
|
||||
right: 9px;
|
||||
}
|
||||
|
||||
.mobilemenu > ul > ul > p {
|
||||
left: 25% !important;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-bottom: 5vh;
|
||||
margin-top: 2px;
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.article {
|
||||
margin: 2px 20px 0 20px;
|
||||
padding: 25px !important;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 55px;
|
||||
}
|
||||
|
||||
.article-headerless {
|
||||
margin: 0 20px 55px 0 !important;
|
||||
}
|
||||
|
||||
.section {
|
||||
max-height: 50vh;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.section1 {
|
||||
margin: 20px 20px 20px 80px;
|
||||
}
|
||||
|
||||
.section2 {
|
||||
margin: 20px 80px 20px 20px;
|
||||
}
|
||||
|
||||
.section3 {
|
||||
margin: 20px 60px 20px 60px;
|
||||
}
|
||||
|
||||
.homesection {
|
||||
margin-bottom: 60px;
|
||||
width: 540px;
|
||||
text-align: center;
|
||||
max-height: unset;
|
||||
}
|
||||
|
||||
.homemessage, .homesubmessage {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.homemessage {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.homesubmessage {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.homesmallimg {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.upperdirs {
|
||||
width: 80%;
|
||||
height: var(--ver-upr);
|
||||
margin-bottom: 20px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.numlist {
|
||||
display: table;
|
||||
margin-bottom: 20px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.seemore {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: calc(100% - 20px);
|
||||
height: 60px;
|
||||
background-image: var(--shade);
|
||||
}
|
||||
|
||||
.seedate {
|
||||
float: left;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.articledate {
|
||||
float: left;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.seemorelink {
|
||||
float: right;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.greyed {
|
||||
color: var(--grey-col);
|
||||
}
|
||||
|
||||
.archivereturn {
|
||||
margin: 20px 60px 20px 60px;
|
||||
display: table;
|
||||
}
|
||||
|
||||
.search {
|
||||
width: 25vw;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
.titlecol {
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
.datecol {
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.nothinghere {
|
||||
width: 50vw;
|
||||
height: 10vh;
|
||||
margin: 20px 10vw 0 10vw;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.nothinghere > .notgood {
|
||||
letter-spacing: 2px;
|
||||
animation: notgood 4s ease-in-out infinite;
|
||||
animation-play-state: running;
|
||||
}
|
||||
|
||||
.nothingreturn {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
font-size: 1.2em;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.extlink {
|
||||
background: url("../images/ext.gif") no-repeat;
|
||||
background-position: right;
|
||||
padding-right: 13px;
|
||||
}
|
||||
|
||||
.leftimg, .rightimg, .centerimg {
|
||||
filter: grayscale(1);
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
.leftimg:hover, .rightimg:hover, .centerimg:hover {
|
||||
filter: none;
|
||||
}
|
||||
|
||||
.leftimg, .rightimg {
|
||||
max-width: 50%;
|
||||
max-height: 25em;
|
||||
display: block;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.leftimg {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.rightimg {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.centerimg {
|
||||
max-width: 70%;
|
||||
max-height: 30em;
|
||||
display: block;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
.quote {
|
||||
display: inline-block;
|
||||
margin: 5px;
|
||||
color: var(--grey-col);
|
||||
}
|
||||
|
||||
.quote:before {
|
||||
content: "「";
|
||||
color: var(--main-col);
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
|
||||
.quote:after {
|
||||
content: "」";
|
||||
color: var(--main-col);
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
|
||||
.scrollingcontentbtm {
|
||||
margin-bottom: var(--ver-btm);
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.blogbox {
|
||||
position: relative;
|
||||
right: 11px;
|
||||
border: 1px solid var(--main-col);
|
||||
margin-left: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.asidehometext {
|
||||
font-size: 1.2em;
|
||||
position: relative;
|
||||
display: none;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.asidebottomimage {
|
||||
height: 30px;
|
||||
max-width: 30px;
|
||||
margin: 0 3px;
|
||||
transition: 0.5s;
|
||||
}
|
||||
|
||||
.asidebottomimage:hover {
|
||||
box-shadow: var(--main-col) 1px 4px 5px;
|
||||
}
|
||||
|
||||
.archivespan {
|
||||
margin: 30px;
|
||||
}
|
||||
|
||||
.codeblock {
|
||||
font-family: 'pxplus_ibm_vga9regular', monospace;
|
||||
border: 1px solid var(--main-col);
|
||||
background-color: #1b1b1d;
|
||||
color: #ffcccc;
|
||||
font-size: 0.9em;
|
||||
padding: 10px;
|
||||
white-space: pre-wrap;
|
||||
margin: 10px;
|
||||
overflow-wrap: break-word;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.largefont {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
border: none;
|
||||
padding: 2px 0 0 0;
|
||||
}
|
||||
|
||||
.datetext {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.webring-panel {
|
||||
width: fit-content;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.webring-text {
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
.webring-table {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
@keyframes notgood {
|
||||
0% {
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
50% {
|
||||
letter-spacing: 4px;
|
||||
}
|
||||
100% {
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.aside > .asidehomeimage {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.aside > .asidehometext {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.aside {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.content {
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-height: 580px) {
|
||||
.aside > .asidehomeimage {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.aside > .asidehometext {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 850px) {
|
||||
.homesection {
|
||||
width: 220px;
|
||||
}
|
||||
.homelargeimg {
|
||||
display: none;
|
||||
}
|
||||
.homesmallimg {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 660px) {
|
||||
.aside {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body { grid-template-columns: auto }
|
||||
|
||||
.openaside {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 3em 8px 8px 8px;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-left: unset;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.seedate {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.seemorelink {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.bottomcell > p {
|
||||
font-size: 0.7em;
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
<div class="section section<%= rand(1..3) %>">
|
||||
<% if file.end_with?(".md") %>
|
||||
<%= markdown(File.read(file)) %>
|
||||
<% elsif file.end_with?(".erb") %>
|
||||
<%= ERB.new(File.read(file)).result(binding) %>
|
||||
<% elsif file.end_with?(".bb") %>
|
||||
<% addtags = { :rbe => { html_open: "\<%=", html_close: "%\>" }, :rb => { html_open: "\<%", html_close: "%\>" } } %>
|
||||
<%= ERB.new(File.read(file).gsub("\n[rb]", '[rb]').bbcode_to_html(false, addtags) + "<br>").result(binding) %>
|
||||
<% end %>
|
||||
<span class="seemore">
|
||||
<b>
|
||||
<span class="seedate"><%= date %></span>
|
||||
</b>
|
||||
<a class="seemorelink" href="/<%= file %>">Article Page</a>
|
||||
</span>
|
||||
</div>
|
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<rss version="2.0">
|
||||
|
||||
<channel>
|
||||
<title>Broken Moon Network</title>
|
||||
<link>https://www.broken-moon.net</link>
|
||||
<description>A personal project of Astoria.</description>
|
||||
|
||||
<% pageArray = Array.new %>
|
||||
<% folders.each do |folder| %>
|
||||
<% if Dir.exists? folder %>
|
||||
<% contents = Dir.children("./" + folder) %>
|
||||
<% if !contents.empty? %>
|
||||
<% contents.each do |content| %>
|
||||
<% begin %>
|
||||
<% newPage = Page.new(folder + "/" + content) %>
|
||||
<% rescue %>
|
||||
<% puts "bad times at " + content %>
|
||||
<% else %>
|
||||
<% pageArray.push(newPage) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% pageArray.sort_by! { |page| page.get_date } %>
|
||||
|
||||
<% pageArray.reverse.each do | page | %>
|
||||
<%= page.get_feed_entry %>
|
||||
<% end %>
|
||||
</channel>
|
||||
|
||||
</rss>
|
@ -0,0 +1,11 @@
|
||||
<meta property="og:image" content="/images/banner.gif" />
|
||||
<meta property="og:image:type" content="image/gif" />
|
||||
<meta property="og:image:width" content="88" />
|
||||
<meta property="og:image:height" content="31" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/gif" href="favicon.gif" />
|
||||
<link rel="stylesheet" href="/css/mobileMenu.css" />
|
||||
<link rel="stylesheet" href="/css/noscroll.css" />
|
||||
<link rel="stylesheet" href="/css/fonts.css" />
|
||||
<%# Work on this later %>
|
Loading…
Reference in New Issue