Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoSign in
Socket

yfm-test

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

yfm-test - npm Package Compare versions

Comparing version
0.1.1
to
0.1.2
+16
-18
index.js

@@ -1,24 +0,22 @@

var fs = require('fs');
var _ = require('lodash');
var yaml = require('js-yaml');
module.exports = function (src, options) {
options = options || {};
var delim = options.delim || '---';
var re = new RegExp('^'+delim+'\\s([\\s\\S]*?)'+delim+'(\\s[\\s\\S]*|\\s?)$');
var content = fs.readFileSync(src, 'utf8');
var originalContent = content;
var pageArr = content.match(re);
var metadata = {};
var str = require('fs').readFileSync(src, 'utf8'),
delim = options.delim || '---',
arr = str.replace(/^-{3}/, '').split(delim),
obj = {};
if (pageArr && pageArr.length === 3) {
metadata = require('js-yaml').load(pageArr[1]);
content = pageArr[2];
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*/, '');
}
return {
metadata: metadata,
src: src,
content: content,
originalContent: originalContent
};
obj.original = str;
return obj;
};
{
"name": "yfm-test",
"description": "Temp repo to test YAML front matter functions.",
"version": "0.1.1",
"version": "0.1.2",
"repository": {

@@ -6,0 +6,0 @@ "type": "git",

{
"metadata": {},
"src": "fixtures/custom-delim.hbs",
"content": "~~~\ntitle: Default\ndescription: Home page\n~~~\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>",
"originalContent": "~~~\ntitle: Default\ndescription: Home page\n~~~\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>"
"content": "~~~\ntitle: Custom Delims\ndescription: This page has custom delimiters\n~~~\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>",
"original": "~~~\ntitle: Custom Delims\ndescription: This page has custom delimiters\n~~~\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>"
}
{
"metadata": {
"title": "Default",
"description": "Home page"
"description": "Default custom delimiters and content"
},
"src": "fixtures/default.hbs",
"content": "\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>",
"originalContent": "---\ntitle: Default\ndescription: Home page\n---\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>"
"content": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>",
"original": "---\ntitle: Default\ndescription: Default custom delimiters and content\n---\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>"
}
{
"metadata": {
"title": "Default",
"description": "Home page"
"title": "Multiple occurrences",
"description": "This page has multiple occurrences of yaml front matter."
},
"src": "fixtures/multiple-occurences.hbs",
"content": "\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>\n~~~\ntitle: Default\ndescription: Home page\n~~~\n\n---\ntitle: Default\ndescription: Home page\n---",
"originalContent": "---\ntitle: Default\ndescription: Home page\n---\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>\n~~~\ntitle: Default\ndescription: Home page\n~~~\n\n---\ntitle: Default\ndescription: Home page\n---"
"content": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>\n~~~\ntitle: Default\ndescription: Home page\n~~~\n\n---\ntitle: Default\ndescription: Home page\n---\n\n---\ntitle: Default\ndescription: Home page\n---",
"original": "---\ntitle: Multiple occurrences\ndescription: This page has multiple occurrences of yaml front matter.\n---\n<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>\n~~~\ntitle: Default\ndescription: Home page\n~~~\n\n---\ntitle: Default\ndescription: Home page\n---\n\n---\ntitle: Default\ndescription: Home page\n---"
}
{
"metadata": {},
"src": "fixtures/no-yfm.hbs",
"content": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>",
"originalContent": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>"
"original": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <title>{{titleize this.basename}}</title>\n </head>\n <body>\n {{> body }}\n </body>\n</html>"
}
{
"metadata": {
"title": "Bar",
"description": "Bar page"
"title": "YFM Only",
"description": "There is no content on this page."
},
"src": "fixtures/yfm-only.hbs",
"content": "",
"originalContent": "---\ntitle: Bar\ndescription: Bar page\n---"
"original": "---\ntitle: YFM Only\ndescription: There is no content on this page.\n---"
}
~~~
title: Default
description: Home page
title: Custom Delims
description: This page has custom delimiters
~~~

@@ -5,0 +5,0 @@ <!DOCTYPE html>

---
title: Default
description: Home page
description: Default custom delimiters and content
---

@@ -5,0 +5,0 @@ <!DOCTYPE html>

---
title: Default
description: Home page
title: Multiple occurrences
description: This page has multiple occurrences of yaml front matter.
---

@@ -23,2 +23,7 @@ <!DOCTYPE html>

description: Home page
---
---
title: Default
description: Home page
---
---
title: Bar
description: Bar page
title: YFM Only
description: There is no content on this page.
---

@@ -7,6 +7,2 @@ // node.js

var expand = require('globule').find;
var assert = require('assert');
var _ = require('lodash');
var chalk = require('chalk');
var success = chalk.green;

@@ -16,40 +12,7 @@ // Local libs

// Test paths
var fixtures = function (str) {
return path.join('fixtures', str).replace(/\\/, '/');
};
var actual = path.join.bind(null, 'actual');
var expected = path.join.bind(null, 'expected');
// Make output more readable
var test = function (str, delim) {
return JSON.stringify(yfm(str, delim), null, 2);
};
var readJSON = function (src) {
return JSON.parse(fs.readFileSync(src, 'utf8'));
};
// expand('fixtures/*.hbs', '!fixtures/*-delim.hbs').map(function(filepath) {
// console.log(success('\n>> Page:\n'), test(filepath));
// });
// expand('fixtures/custom-delim.hbs').map(function(filepath) {
// console.log(success('\n>> Page:\n'), test(filepath, {delim: '~~~'}));
// });
var jsonExpected = expand('expected/*.json').map(readJSON);
var jsonActual = expand('actual/*.json').map(readJSON);
expand('fixtures/*.hbs').map(function (src) {
var name = path.basename(src, path.extname(src));
var dest = path.join('actual', name + '.json');
fs.writeFileSync(dest, test(src));
console.log(test(src));
fs.writeFileSync(dest, JSON.stringify(yfm(src), null, 2));
console.log(yfm(src));
});
describe('YAML front matter', function () {
it('Both matching methods should produce the same results.', function () {
assert.deepEqual(jsonActual, jsonExpected);
});
});