diff options
Diffstat (limited to 'api/api.js')
-rw-r--r-- | api/api.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/api/api.js b/api/api.js new file mode 100644 index 0000000..9603f3f --- /dev/null +++ b/api/api.js @@ -0,0 +1,65 @@ +const fs = require('fs') +const frontmatter = require('front-matter') +const md = require('markdown-it')() +const { JSDOM } = require('jsdom') + +const POSTS_PATH = './content/wpisy' + +function getPostAttributes(fileContent) { + 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() { + const routesArray = [] + try { + const years = fs.readdirSync(`${POSTS_PATH}`) + years.forEach(year => { + const months = fs.readdirSync(`${POSTS_PATH}/${year}`) + months.forEach(month => { + const days = fs.readdirSync(`${POSTS_PATH}/${year}/${month}`) + days.forEach(day => { + const files = fs.readdirSync(`${POSTS_PATH}/${year}/${month}/${day}`) + files.forEach(file => { + 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')) + + routesArray.push({ + year, + month, + day, + title, + data, + file, + fsRoute, + route + }) + }) + }) + }) + }) + } finally { + return routesArray + } +} + +function createRoutesArray() { + let posts = getPosts() + return posts.map(post => post.route) +} + +module.exports = { + getPosts, + createRoutesArray, + getPostAttributes +} |