Skip to content

Commit ddc66eb

Browse files
committed
feat(Crawler): Allow for JSON content
1 parent 543f095 commit ddc66eb

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

src/crawler/index.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,42 @@
11
const fs = require('fs');
22
const { join, sep } = require('path');
33

4-
function getDetails(data) {
5-
const matadata = data.match(/---(.*(\r)?\n)*---/g)[0];
6-
const details = matadata.match(/(.*):(.*)/g).reduce((obj, detail) => {
4+
function parseMarkdownToObject(markdownString) {
5+
const markDown = markdownString.match(/---(.*(\r)?\n)*---/g);
6+
const metadata = markDown[0];
7+
8+
const details = metadata.match(/(.*):(.*)/g).reduce((obj, detail) => {
79
const value = detail.substr(detail.indexOf(':') + 2);
810
const key = detail.substr(0, detail.indexOf(':'));
911
obj[key] = value;
1012
return obj;
1113
}, {});
14+
1215
return details;
1316
}
1417

18+
function getExtensionFromFilename(fileName) {
19+
return fileName.substr(fileName.lastIndexOf('.') + 1);
20+
}
21+
22+
function getDetails(format, data) {
23+
const formatNormalised = format.toLowerCase();
24+
25+
switch (formatNormalised) {
26+
case 'md': {
27+
return parseMarkdownToObject(data);
28+
}
29+
30+
case 'json': {
31+
return JSON.parse(data);
32+
}
33+
34+
default: {
35+
console.error('File format not recognised');
36+
}
37+
}
38+
}
39+
1540
function getPreview(data) {
1641
let preview = data.replace(/---(.*(\r)?\n)*---/, '').replace(/\[.*\]\(.*\)/g, '').replace(/(\r)?\n/,'');
1742
preview = preview.substr(0, (preview.indexOf('\n') -1));
@@ -26,11 +51,12 @@ function getFolders(source) {
2651
let allContent = getAllListings(source);
2752
const edges = allContent.filter(isFile).map(file => {
2853
const data = fs.readFileSync(file, 'utf-8');
29-
// console.log('get folders', JSON.stringify(data))
54+
const id = file.substr(file.lastIndexOf(sep) + 1);
55+
const format = getExtensionFromFilename(id);
3056
return {
3157
id: file.substr(file.lastIndexOf(sep) + 1),
3258
path: file,
33-
details: getDetails(data),
59+
details: getDetails(format, data),
3460
preview: getPreview(data)
3561
};
3662
});
@@ -53,4 +79,4 @@ function generateFileList(src) {
5379

5480
module.exports = {
5581
generateFileList
56-
};
82+
};

0 commit comments

Comments
 (0)