UNPKG

materialuiupgraded

Version:

Material-UI's workspace package

61 lines (46 loc) 1.51 kB
const headerRegExp = /---[\r\n]([\s\S]*)[\r\n]---/; const titleRegExp = /# (.*)[\r\n]/; const descriptionRegExp = /<p class="description">(.*)<\/p>[\r\n]/; const headerKeyValueRegExp = /(.*): (.*)/g; const emptyRegExp = /^\s*$/; export function getHeaders(markdown) { let header = markdown.match(headerRegExp); if (!header) { return { components: [], }; } header = header[1]; let regexMatchs; const headers = {}; // eslint-disable-next-line no-cond-assign while ((regexMatchs = headerKeyValueRegExp.exec(header)) !== null) { headers[regexMatchs[1]] = regexMatchs[2]; } if (headers.components) { headers.components = headers.components.split(', ').sort(); } else { headers.components = []; } return headers; } export function getContents(markdown) { return markdown .replace(headerRegExp, '') // Remove header information .split(/^{{|}}$/gm) // Split markdown into an array, separating demos .filter(content => !emptyRegExp.test(content)); // Remove empty lines } export function getTitle(markdown) { const matches = markdown.match(titleRegExp); if (!matches || !matches[1]) { throw new Error('Missing title in the page'); } return matches[1]; } export function getDescription(markdown) { const matches = markdown.match(descriptionRegExp); if (!matches || !matches[1]) { throw new Error('Missing description in the page'); } return matches[1]; }