hypermedia blog

static site generator

hypermedia blog

src/index.ts


import { Domain } from "domain";
import {
  getCategories,
  getPosts,
  getTagByName,
  getTags,
  getTotalPostCount,
  getTotalPostCountByCat,
  getTotalPostCountBySubCat,
  getTotalPostCountByTag,
} from "./models/blog.js";
import {
  generateCatPage,
  generateErrorPages,
  generatePage,
  generatePost,
  generateSubCatPage,
  generateTagPage,
} from "./views/templ8.js";

function makeErrorPages() {
  generateErrorPages("//xero.0w.nz");
}
function makePages() {
  const total: number = getTotalPostCount();
  const limit: number = 7;
  const pages: number = total / limit + 1;
  let offset: number = 0;
  let current: number = 1;

  while (current <= pages) {
    generatePage("//xero.0w.nz", limit, offset, total, current);
    offset += limit;
    current++;
  }
}
function makePosts() {
  const total: number = getTotalPostCount();
  const posts = getPosts(total, 0);
  posts.forEach((post) => {
    generatePost("//xero.0w.nz", [post]);
  });
}
function makeTags() {
  const tags = getTags();
  tags.forEach((tag) => {
    let limit = 7;
    let current = 1;
    let offset = 0;
    let id = getTagByName(tag.url);
    let total = getTotalPostCountByTag(id);
    let pages = Math.ceil(total / limit);
    while (current <= pages) {
      generateTagPage("//xero.0w.nz", tag.url, limit, offset, total, current);
      offset += limit;
      current++;
    }
  });
}
function makeCats() {
  const cats = getCategories();
  cats.forEach((cat) => {
    let type = cat.blog_cat_id.toString().includes(".") ? "subcat" : "cat";
    let limit = 7;
    let current = 1;
    let offset = 0;
    let total =
      type == "subcat"
        ? getTotalPostCountBySubCat(cat.blog_cat_id)
        : getTotalPostCountByCat(cat.blog_cat_id);
    let pages = Math.ceil(total / limit);
    while (current <= pages) {
      if (type == "subcat") {
        generateSubCatPage(
          "//xero.0w.nz",
          cat.url,
          cat.blog_cat_id,
          limit,
          offset,
          total,
          current,
        );
      } else {
        generateCatPage("//xero.0w.nz", cat.url, limit, offset, total, current);
      }
      offset += limit;
      current++;
    }
  });
}
makeErrorPages();
makePages();
makePosts();
makeTags();
makeCats();
console.log(" BЦП ЯЦП DЦП ");

Download

raw zip tar