diff --git a/helpers/build-app-list.js b/helpers/build-app-list.js new file mode 100644 index 0000000..ebf0bca --- /dev/null +++ b/helpers/build-app-list.js @@ -0,0 +1,86 @@ + +import { promises as fs } from 'fs' +import MarkdownIt from 'markdown-it' +import slugify from 'slugify' + + +const md = new MarkdownIt() + +export default async function () { + + const readmeContent = await fs.readFile('./README.md', 'utf8') + + // console.log('readmeContent', readmeContent) + + // Parse markdown + const result = md.parse(readmeContent) + + // .map(token => { + + // }) + + // console.log('results', result.length) + // console.log('results', result) + + const appList = [] + + let sectionName = 'start' + let isHeading = false + let isParagraph = false + + for (const token of result) { + // On heading close switch off heading mode + if (token.type.includes('heading_')) isHeading = !isHeading + + // On heading close switch off heading mode + if (token.type.includes('paragraph_')) isParagraph = !isParagraph + + + + if (isHeading && token.type === 'inline') { + sectionName = slugify(token.content, { + lower: true + }) + + // appList[sectionName] = [] + } + + + if ( isParagraph && token.type === 'inline' && token.content.includes('-') ) { + const [ link, text ] = token.content.split('-').map(string => string.trim()) + + const [ name, url ] = link.substring(1, link.length-1).split('](') + + const appSlug = slugify(name, { + lower: true + }) + + appList.push({ + name, + url, + text, + slug: appSlug, + sectionName, + content: token.content + }) + } + + // appList[sectionName] + + + // console.log('token', token) + } + + // console.log('appList', appList) + + + return appList + + // fs.readFile('../README.md', 'utf8') + // .then((err, data) => { + // const result = md.parse(data) + // console.log('result', result) + + // return result + // }) +}