+51
-18
@@ -1,22 +0,55 @@ | ||
| var yaml = require('js-yaml'); | ||
| var YAML = require('js-yaml'); | ||
| var file = require('fs-utils'); | ||
| var _ = require('lodash'); | ||
| var toArray = function(val) { | ||
| val = !Array.isArray(val) ? [val] : val; | ||
| return _.compact([val]); | ||
| }; | ||
| // Build RegExp patterns from a string or array | ||
| // @examples: | ||
| // 'foo' => '(?:foo)' | ||
| // ['foo', 'bar', 'baz'] => '(?:foo|bar|baz)' | ||
| var buildRegexGroup = function(patterns) { | ||
| patterns = toArray(patterns); | ||
| if(patterns.length > 0) { | ||
| patterns = patterns.join('|'); | ||
| } | ||
| return '(?:' + patterns + ')'; | ||
| }; | ||
| module.exports = function (src, options) { | ||
| options = options || {}; | ||
| var str = require('fs').readFileSync(src, 'utf8'), | ||
| delim = options.delim || '---', | ||
| arr = str.replace(/^-{3}/, '').split(delim), | ||
| obj = {}; | ||
| 'use strict'; | ||
| if (arr.length === 1) { | ||
| if (/^-{3}/.test(arr)) { | ||
| obj.metadata = yaml.load(arr); | ||
| } else { | ||
| obj.content = arr[0]; | ||
| } | ||
| } else { | ||
| obj.metadata = yaml.load(arr.shift()); | ||
| obj.content = arr.join(delim).replace(/^\s*/, ''); | ||
| var opts = _.extend({open: '---', close: '---'}, options); | ||
| var metadata = {}; | ||
| // Build RegExp patterns for delims | ||
| var open = buildRegexGroup(opts.open); | ||
| var close = buildRegexGroup(opts.close); | ||
| var yfm = '\\s([\\s\\S]+?)'; | ||
| var body = '(\\s[\\s\\S]+|\\s?)$'; | ||
| var re = new RegExp('^' + open + yfm + close + body); | ||
| // Content | ||
| var content = file.readFileSync(src); | ||
| var original = content; | ||
| // Page object | ||
| var pageObj = content.match(re); | ||
| if (pageObj && pageObj.length === 3) { | ||
| metadata = YAML.load(pageObj[1]); | ||
| content = pageObj[2]; | ||
| } | ||
| obj.original = str; | ||
| return obj; | ||
| }; | ||
| return { | ||
| metadata: metadata, | ||
| content: content, | ||
| original: original | ||
| }; | ||
| }; |
+3
-2
| { | ||
| "name": "yfm-test", | ||
| "description": "Temp repo to test YAML front matter functions.", | ||
| "version": "0.1.2", | ||
| "version": "0.2.0", | ||
| "repository": { | ||
@@ -21,3 +21,4 @@ "type": "git", | ||
| "js-yaml": "~2.1.3", | ||
| "lodash": "~2.4.0" | ||
| "lodash": "~2.4.0", | ||
| "fs-utils": "~0.1.0" | ||
| }, | ||
@@ -24,0 +25,0 @@ "devDependencies": { |
+3
-3
@@ -6,3 +6,3 @@ // node.js | ||
| // node_modules | ||
| var expand = require('globule').find; | ||
| var glob = require('globule'); | ||
@@ -12,7 +12,7 @@ // Local libs | ||
| expand('fixtures/*.hbs').map(function (src) { | ||
| glob.match(['fixtures/*.hbs']).map(function (src) { | ||
| var name = path.basename(src, path.extname(src)); | ||
| var dest = path.join('actual', name + '.json'); | ||
| console.log(yfm(src)); | ||
| fs.writeFileSync(dest, JSON.stringify(yfm(src), null, 2)); | ||
| console.log(yfm(src)); | ||
| }); |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
6082
13.26%85
39.34%3
50%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added