UNPKG

1.36 kBJavaScriptView Raw
1var $, fs;
2
3$ = {};
4
5$.source_ = require('../dist/source_');
6
7$.info = require('../dist/info');
8
9$.getExtname = require('../dist/getExtname');
10
11$.parseString = require('../dist/parseString');
12
13$.parseJson = require('../dist/parseJson');
14
15fs = require('fs');
16
17module.exports = async function(source, option = {}) {
18 var _source, extname, jsYaml, listSource, result;
19 _source = source;
20 listSource = (await $.source_(source));
21 if (!listSource.length) {
22 $.info('file', `'${source}' not existed`);
23 return null;
24 }
25 source = listSource[0];
26 result = (await new Promise(function(resolve) {
27 return fs.readFile(source, function(err, data) {
28 if (err) {
29 throw new Error(err);
30 }
31 return resolve(data);
32 });
33 }));
34 $.info('file', `read '${_source}'`);
35 // return
36 if (option.raw) {
37 return result;
38 }
39 extname = $.getExtname(source);
40 if (extname === '.coffee' || extname === '.css' || extname === '.html' || extname === '.js' || extname === '.md' || extname === '.pug' || extname === '.sh' || extname === '.styl' || extname === '.txt' || extname === '.xml') {
41 return $.parseString(result);
42 }
43 if (extname === '.json') {
44 return $.parseJson(result);
45 }
46 if (extname === '.yaml' || extname === '.yml') {
47 jsYaml = require('js-yaml');
48 return jsYaml.safeLoad(result);
49 }
50 return result; // return
51};