diff options
Diffstat (limited to 'src/index.ts')
-rw-r--r-- | src/index.ts | 81 |
1 files changed, 9 insertions, 72 deletions
diff --git a/src/index.ts b/src/index.ts index b6a2b78..61e38c8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,77 +1,14 @@ -import * as fs from "fs"; -import { JSDOM } from "jsdom"; +import { getPosts as apiGetPosts } from "./getPosts"; +import { Post } from "./interfaces"; -const frontmatter = require("front-matter"); -const md = require("markdown-it")(); +export default class Kronikarz { + postPath: string; -const POSTS_PATH = "./content/wpisy"; - -interface Date { - year: string; - month: string; - day: string; -} - -interface Post { - date: Date; - title: string; - data: Object; - file: string; - fsRoute: string; - route: string; -} - -function getPostAttributes(fileContent: string) { - const post = frontmatter(fileContent); - - const { document } = new JSDOM(`<body>${md.render(post.body)}</body>`).window; - const element = document.getElementsByTagName("p"); - - post.body = `<div>${md.render(post.body)}</div>`; - post.description = element[1].textContent; - - return post; -} - -function getPosts() { - let routesArray: Post[] = []; - try { - const years = fs.readdirSync(`${POSTS_PATH}`); - years.forEach((year: string) => { - const months = fs.readdirSync(`${POSTS_PATH}/${year}`); - months.forEach((month: string) => { - const days = fs.readdirSync(`${POSTS_PATH}/${year}/${month}`); - days.forEach((day: string) => { - const files = fs.readdirSync(`${POSTS_PATH}/${year}/${month}/${day}`); - files.forEach((file: string) => { - const title = file.substr(0, file.lastIndexOf(".")); - const route = `/kronika/${year}/${month}/${day}/${title}/`; - const fsRoute = `${POSTS_PATH}/${year}/${month}/${day}/${file}`; - - const data = getPostAttributes(fs.readFileSync(fsRoute, "utf-8")); - - const post = { - date: { year, month, day }, - title, - data, - file, - fsRoute, - route - }; - - routesArray.push(post); - }); - }); - }); - }); - } finally { - return routesArray; + constructor(postPath: string) { + this.postPath = postPath; } -} -function createRoutesArray() { - let posts = getPosts(); - return posts.map(post => post.route); + getPosts(): Array<Post> { + return apiGetPosts(this.postPath); + } } - -export { getPosts, createRoutesArray, getPostAttributes }; |