import marked from 'marked'; const tokens = ['---', '---']; const regexHeader = new RegExp('^' + tokens[0] + '([\\s|\\S]*?)' + tokens[1]); const regexContent = new RegExp( '^ *?\\' + tokens[0] + '[^]*?' + tokens[1] + '*' ); export function getHeader(data: string): T { const header = getRawHeader(data); const tmpObj = {}; const lines = header.trim().split('\n'); lines.forEach((line, i) => { var arr = line.trim().split(':'); tmpObj[arr.shift()] = arr.join(':').trim(); }); return tmpObj as T; } export function getRawHeader(data: string): string { const header = regexHeader.exec(data); if (!header) { new Error("Can't get the header"); } return header[1]; } export function getContent(data): string { const content = data.replace(regexContent, '').replace(//gm, ''); if (!content) { throw new Error("Can't get the content"); } return marked(content); }