Skip to content

Commit 4744336

Browse files
authored
Merge pull request #4 from pimdewit/feature/json-content
feat(Crawler): Allow for JSON content
2 parents 543f095 + acbda14 commit 4744336

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

src/crawler/index.js

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,43 @@
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+
case 'markdown': {
28+
return parseMarkdownToObject(data);
29+
}
30+
31+
case 'json': {
32+
return JSON.parse(data);
33+
}
34+
35+
default: {
36+
console.error('File format not recognised');
37+
}
38+
}
39+
}
40+
1541
function getPreview(data) {
1642
let preview = data.replace(/---(.*(\r)?\n)*---/, '').replace(/\[.*\]\(.*\)/g, '').replace(/(\r)?\n/,'');
1743
preview = preview.substr(0, (preview.indexOf('\n') -1));
@@ -26,11 +52,12 @@ function getFolders(source) {
2652
let allContent = getAllListings(source);
2753
const edges = allContent.filter(isFile).map(file => {
2854
const data = fs.readFileSync(file, 'utf-8');
29-
// console.log('get folders', JSON.stringify(data))
55+
const id = file.substr(file.lastIndexOf(sep) + 1);
56+
const format = getExtensionFromFilename(id);
3057
return {
31-
id: file.substr(file.lastIndexOf(sep) + 1),
58+
id: id,
3259
path: file,
33-
details: getDetails(data),
60+
details: getDetails(format, data),
3461
preview: getPreview(data)
3562
};
3663
});
@@ -53,4 +80,4 @@ function generateFileList(src) {
5380

5481
module.exports = {
5582
generateFileList
56-
};
83+
};

0 commit comments

Comments
 (0)