'use strict' const fs = require('fs') const path = require('path') const matter = require('gray-matter') const options = { lang: 'toml', delims: '+++' } function* lowercaseKeys (iterator) { for (let [k, v] of iterator) { yield [String(k).toLowerCase(), v] } } function canonicaliseMetadata (meta) { if (meta.data) { meta.data = new Map(lowercaseKeys(Object.entries(meta.data))) } else { meta.data = new Map() } return meta } function readFileMetadata (filename) { return canonicaliseMetadata(matter.read(filename, options)) } function getFileMetadata (filename) { const result = readFileMetadata(filename) return result && result.data } function getFolderMetadata (folder) { return fs .readdirSync(folder) .map(f => path.resolve(folder, f)) .map(readFileMetadata) } module.exports = { getFileMetadata, getFolderMetadata }