UNPKG

2.36 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', {
4 value: true
5});
6exports.hasMagic = hasMagic;
7exports.getSource = getSource;
8exports.interpolateString = interpolateString;
9exports.isAbsoluteURL = isAbsoluteURL;
10exports.functionToString = functionToString;
11exports.arrowFnToNormalFn = arrowFnToNormalFn;
12
13function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
14
15var _minimatch = require('minimatch');
16
17var _path = require('path');
18
19var _path2 = _interopRequireDefault(_path);
20
21var isAbsolutePath = _path2['default'].isAbsolute;
22
23// Based on https://github.com/isaacs/node-glob/blob/master/glob.js#L83
24// (glob.hasMagic)
25
26function hasMagic(pattern, options) {
27 // Support RegExp as well as glob
28 if (pattern instanceof RegExp) {
29 return {
30 match: function match(str) {
31 return pattern.test(str);
32 }
33 };
34 }
35
36 var minimatch = new _minimatch.Minimatch(pattern, options);
37 var set = minimatch.set;
38
39 if (set.length > 1) {
40 return minimatch;
41 }
42
43 for (var j = 0; j < set[0].length; j++) {
44 if (typeof set[0][j] !== 'string') {
45 return minimatch;
46 }
47 }
48
49 return false;
50}
51
52function getSource(_source) {
53 return {
54 source: function source() {
55 return _source;
56 },
57 size: function size() {
58 return Buffer.byteLength(_source, 'utf8');
59 }
60 };
61}
62
63function interpolateString(string, data) {
64 var hasOwnProperty = ({}).hasOwnProperty;
65
66 return (string + '').replace(/\[(\w+?)\]/g, function (match, key) {
67 if (hasOwnProperty.call(data, key)) {
68 return data[key];
69 }
70
71 return '';
72 });
73}
74
75function isAbsoluteURL(url) {
76 return (/^(?:\w+:)?\/\//.test(url)
77 );
78}
79
80function functionToString(fn) {
81 if (typeof fn !== 'function') {
82 return '(void 0)';
83 }
84
85 var string = fn + '';
86
87 return arrowFnToNormalFn(string);
88}
89
90// Migrate to separate npm-package with full tests
91
92function arrowFnToNormalFn(string) {
93 var match = string.match(/^([\s\S]+?)=\>(\s*{)?([\s\S]*?)(}\s*)?$/);
94
95 if (!match) {
96 return string;
97 }
98
99 var args = match[1];
100 var body = match[3];
101
102 var needsReturn = !(match[2] && match[4]);
103
104 args = args.replace(/^(\s*\(\s*)([\s\S]*?)(\s*\)\s*)$/, '$2');
105
106 if (needsReturn) {
107 body = 'return ' + body;
108 }
109
110 return 'function(' + args + ') {' + body + '}';
111}
112
113exports.isAbsolutePath = isAbsolutePath;
\No newline at end of file