UNPKG

1.75 kBJavaScriptView Raw
1var async = require('async'),
2 fs = require('fs'),
3 path = require('path');
4
5exports.loadSamples = function(data, callback) {
6 var folders = [];
7 var samples = [];
8 if (Object.prototype.toString.call(data) === '[object Array]') {
9 folders = data;
10 } else {
11 folders = [data];
12 }
13
14 async.each(folders,
15 function(folder, folder_callback) {
16 fs.readdir(folder,
17 function(err, files) {
18 if (err)
19 return folder_callback(err);
20 var fileNames = [];
21 files.forEach(function(file) {
22 fileNames.push(path.join(folder, file));
23 });
24
25 async.each(
26 fileNames,
27 function(item, item_callback) {
28 fs.readFile(item, 'utf8', function(err, data) {
29 if (err)
30 return item_callback(err);
31 if (item.indexOf('.DS_Store') == -1) {
32 samples.push({
33 data: data,
34 name: item
35 });
36 }
37
38 return item_callback();
39 });
40 },
41 function(err) {
42 if (err)
43 return folder_callback(err);
44 return folder_callback(null, samples);
45 });
46 });
47 },
48 function(err) {
49 if (err)
50 return callback(err);
51 return callback(null, samples);
52 });
53}
54
55exports.groupFilesByName = function(files) {
56 var nameKey = {};
57 var results = [];
58
59 files.forEach(function(file) {
60 var idxExtension = file.name.lastIndexOf('.');
61 var name = file.name.substr(0, idxExtension);
62 var extension = file.name.substr(idxExtension+1, file.name.length - 1);
63
64 if (nameKey[name] == null)
65 nameKey[name] = {};
66
67 switch (extension) {
68 case "html":
69 nameKey[name].html = file.data;
70 break;
71 case "text":
72 nameKey[name].markdown = file.data;
73 break;
74 }
75 });
76
77 for(var key in nameKey)
78 results.push(nameKey[key]);
79
80 return results;
81}