diff options
author | Alan Pearce | 2017-06-18 12:35:49 +0200 |
---|---|---|
committer | Alan Pearce | 2017-06-18 12:35:49 +0200 |
commit | bf20f4f6d97b8d2643f19ed7ac617c33a7f2ea6b (patch) | |
tree | f93779b36b3e2bc31126b467f0a16ababa79cd78 /src/modules/posts.js | |
parent | 75ef26ea24032c7e8a6a5d63e65c70d43c88a938 (diff) | |
download | homestead-bf20f4f6d97b8d2643f19ed7ac617c33a7f2ea6b.tar.lz homestead-bf20f4f6d97b8d2643f19ed7ac617c33a7f2ea6b.tar.zst homestead-bf20f4f6d97b8d2643f19ed7ac617c33a7f2ea6b.zip |
refactor: metadata -> posts
Diffstat (limited to 'src/modules/posts.js')
-rw-r--r-- | src/modules/posts.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/modules/posts.js b/src/modules/posts.js new file mode 100644 index 0000000..e005103 --- /dev/null +++ b/src/modules/posts.js @@ -0,0 +1,38 @@ +'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 get (filename) { + return canonicaliseMetadata(matter.read(filename, options)) +} + +function getFolder (folder) { + return fs.readdirSync(folder).map(f => path.resolve(folder, f)).map(get) +} + +module.exports = { + get, + getFolder +} |