In a recent project, I worked with Markdown files that contained metadata at the top for blog posts. I needed to parse the Markdown with JavaScript and make a set of key/value pairs.

As you can see, the metadata is encapsulated in – – – with the metadata contained within.

// Function to parse metadata from a markdown fileconst parseMarkdownMetadata = markdown => { // Regular expression to match metadata at the beginning of the file const metadataRegex = /^---([\s\S]*?)---/; const metadataMatch = markdown.match(metadataRegex); // If there is no metadata, return an empty object if (!metadataMatch) { return {}; } // Split the metadata into lines const metadataLines = metadataMatch[1].split("\n"); // Use reduce to accumulate the metadata as an object const metadata = metadataLines.reduce((acc, line) => { // Split the line into key-value pairs const [key, value] = line.split(":").map(part => part.trim()); // If the line is not empty add the key-value pair to the metadata object if(key) acc[key] = value; return acc; }, {}); // Return the metadata object return metadata;}; You can call this function and pass in the markdown file content. It will return an object with the metadata.

const markdown = `---title: My Blog Postauthor: John Doedate: 2021-01-01---# My Blog PostThis is the content of my blog post.`;var metadata = parseMarkdownMetadata(markdown);console.log(metadata);// Output: { title: "My Blog Post", author: "John Doe", date: "2021-01-01" } The great thing about this solution is it requires no additional libraries. It’s all plain Javascript.

The post Parsing Metadata Inside of Markdown Using JavaScript Without Any Dependencies appeared first on I Like Kill Nerds.