summaryrefslogtreecommitdiff
path: root/node_modules/gray-matter/lib
diff options
context:
space:
mode:
authorShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
committerShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
commit7a52ddeba2a68388b544f529d2d92104420f77b0 (patch)
tree15ddd47457a2cb4a96060747437d36474e4f6b4e /node_modules/gray-matter/lib
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/gray-matter/lib')
-rw-r--r--node_modules/gray-matter/lib/defaults.js18
-rw-r--r--node_modules/gray-matter/lib/engine.js30
-rw-r--r--node_modules/gray-matter/lib/engines.js54
-rw-r--r--node_modules/gray-matter/lib/excerpt.js32
-rw-r--r--node_modules/gray-matter/lib/parse.js13
-rw-r--r--node_modules/gray-matter/lib/stringify.js56
-rw-r--r--node_modules/gray-matter/lib/to-file.js43
-rw-r--r--node_modules/gray-matter/lib/utils.js66
8 files changed, 312 insertions, 0 deletions
diff --git a/node_modules/gray-matter/lib/defaults.js b/node_modules/gray-matter/lib/defaults.js
new file mode 100644
index 0000000..81d9e41
--- /dev/null
+++ b/node_modules/gray-matter/lib/defaults.js
@@ -0,0 +1,18 @@
+'use strict';
+
+const engines = require('./engines');
+const utils = require('./utils');
+
+module.exports = function(options) {
+ const opts = Object.assign({}, options);
+
+ // ensure that delimiters are an array
+ opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---');
+ if (opts.delimiters.length === 1) {
+ opts.delimiters.push(opts.delimiters[0]);
+ }
+
+ opts.language = (opts.language || opts.lang || 'yaml').toLowerCase();
+ opts.engines = Object.assign({}, engines, opts.parsers, opts.engines);
+ return opts;
+};
diff --git a/node_modules/gray-matter/lib/engine.js b/node_modules/gray-matter/lib/engine.js
new file mode 100644
index 0000000..d8f6c41
--- /dev/null
+++ b/node_modules/gray-matter/lib/engine.js
@@ -0,0 +1,30 @@
+'use strict';
+
+module.exports = function(name, options) {
+ let engine = options.engines[name] || options.engines[aliase(name)];
+ if (typeof engine === 'undefined') {
+ throw new Error('gray-matter engine "' + name + '" is not registered');
+ }
+ if (typeof engine === 'function') {
+ engine = { parse: engine };
+ }
+ return engine;
+};
+
+function aliase(name) {
+ switch (name.toLowerCase()) {
+ case 'js':
+ case 'javascript':
+ return 'javascript';
+ case 'coffee':
+ case 'coffeescript':
+ case 'cson':
+ return 'coffee';
+ case 'yaml':
+ case 'yml':
+ return 'yaml';
+ default: {
+ return name;
+ }
+ }
+}
diff --git a/node_modules/gray-matter/lib/engines.js b/node_modules/gray-matter/lib/engines.js
new file mode 100644
index 0000000..38f993d
--- /dev/null
+++ b/node_modules/gray-matter/lib/engines.js
@@ -0,0 +1,54 @@
+'use strict';
+
+const yaml = require('js-yaml');
+
+/**
+ * Default engines
+ */
+
+const engines = exports = module.exports;
+
+/**
+ * YAML
+ */
+
+engines.yaml = {
+ parse: yaml.safeLoad.bind(yaml),
+ stringify: yaml.safeDump.bind(yaml)
+};
+
+/**
+ * JSON
+ */
+
+engines.json = {
+ parse: JSON.parse.bind(JSON),
+ stringify: function(obj, options) {
+ const opts = Object.assign({replacer: null, space: 2}, options);
+ return JSON.stringify(obj, opts.replacer, opts.space);
+ }
+};
+
+/**
+ * JavaScript
+ */
+
+engines.javascript = {
+ parse: function parse(str, options, wrap) {
+ /* eslint no-eval: 0 */
+ try {
+ if (wrap !== false) {
+ str = '(function() {\nreturn ' + str.trim() + ';\n}());';
+ }
+ return eval(str) || {};
+ } catch (err) {
+ if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {
+ return parse(str, options, false);
+ }
+ throw new SyntaxError(err);
+ }
+ },
+ stringify: function() {
+ throw new Error('stringifying JavaScript is not supported');
+ }
+};
diff --git a/node_modules/gray-matter/lib/excerpt.js b/node_modules/gray-matter/lib/excerpt.js
new file mode 100644
index 0000000..14d9904
--- /dev/null
+++ b/node_modules/gray-matter/lib/excerpt.js
@@ -0,0 +1,32 @@
+'use strict';
+
+const defaults = require('./defaults');
+
+module.exports = function(file, options) {
+ const opts = defaults(options);
+
+ if (file.data == null) {
+ file.data = {};
+ }
+
+ if (typeof opts.excerpt === 'function') {
+ return opts.excerpt(file, opts);
+ }
+
+ const sep = file.data.excerpt_separator || opts.excerpt_separator;
+ if (sep == null && (opts.excerpt === false || opts.excerpt == null)) {
+ return file;
+ }
+
+ const delimiter = typeof opts.excerpt === 'string'
+ ? opts.excerpt
+ : (sep || opts.delimiters[0]);
+
+ // if enabled, get the excerpt defined after front-matter
+ const idx = file.content.indexOf(delimiter);
+ if (idx !== -1) {
+ file.excerpt = file.content.slice(0, idx);
+ }
+
+ return file;
+};
diff --git a/node_modules/gray-matter/lib/parse.js b/node_modules/gray-matter/lib/parse.js
new file mode 100644
index 0000000..e10ea9b
--- /dev/null
+++ b/node_modules/gray-matter/lib/parse.js
@@ -0,0 +1,13 @@
+'use strict';
+
+const getEngine = require('./engine');
+const defaults = require('./defaults');
+
+module.exports = function(language, str, options) {
+ const opts = defaults(options);
+ const engine = getEngine(language, opts);
+ if (typeof engine.parse !== 'function') {
+ throw new TypeError('expected "' + language + '.parse" to be a function');
+ }
+ return engine.parse(str, opts);
+};
diff --git a/node_modules/gray-matter/lib/stringify.js b/node_modules/gray-matter/lib/stringify.js
new file mode 100644
index 0000000..b4c70a4
--- /dev/null
+++ b/node_modules/gray-matter/lib/stringify.js
@@ -0,0 +1,56 @@
+'use strict';
+
+const typeOf = require('kind-of');
+const getEngine = require('./engine');
+const defaults = require('./defaults');
+
+module.exports = function(file, data, options) {
+ if (data == null && options == null) {
+ switch (typeOf(file)) {
+ case 'object':
+ data = file.data;
+ options = {};
+ break;
+ case 'string':
+ return file;
+ default: {
+ throw new TypeError('expected file to be a string or object');
+ }
+ }
+ }
+
+ const str = file.content;
+ const opts = defaults(options);
+ if (data == null) {
+ if (!opts.data) return file;
+ data = opts.data;
+ }
+
+ const language = file.language || opts.language;
+ const engine = getEngine(language, opts);
+ if (typeof engine.stringify !== 'function') {
+ throw new TypeError('expected "' + language + '.stringify" to be a function');
+ }
+
+ data = Object.assign({}, file.data, data);
+ const open = opts.delimiters[0];
+ const close = opts.delimiters[1];
+ const matter = engine.stringify(data, options).trim();
+ let buf = '';
+
+ if (matter !== '{}') {
+ buf = newline(open) + newline(matter) + newline(close);
+ }
+
+ if (typeof file.excerpt === 'string' && file.excerpt !== '') {
+ if (str.indexOf(file.excerpt.trim()) === -1) {
+ buf += newline(file.excerpt) + newline(close);
+ }
+ }
+
+ return buf + newline(str);
+};
+
+function newline(str) {
+ return str.slice(-1) !== '\n' ? str + '\n' : str;
+}
diff --git a/node_modules/gray-matter/lib/to-file.js b/node_modules/gray-matter/lib/to-file.js
new file mode 100644
index 0000000..799bb5d
--- /dev/null
+++ b/node_modules/gray-matter/lib/to-file.js
@@ -0,0 +1,43 @@
+'use strict';
+
+const typeOf = require('kind-of');
+const stringify = require('./stringify');
+const utils = require('./utils');
+
+/**
+ * Normalize the given value to ensure an object is returned
+ * with the expected properties.
+ */
+
+module.exports = function(file) {
+ if (typeOf(file) !== 'object') {
+ file = { content: file };
+ }
+
+ if (typeOf(file.data) !== 'object') {
+ file.data = {};
+ }
+
+ // if file was passed as an object, ensure that
+ // "file.content" is set
+ if (file.contents && file.content == null) {
+ file.content = file.contents;
+ }
+
+ // set non-enumerable properties on the file object
+ utils.define(file, 'orig', utils.toBuffer(file.content));
+ utils.define(file, 'language', file.language || '');
+ utils.define(file, 'matter', file.matter || '');
+ utils.define(file, 'stringify', function(data, options) {
+ if (options && options.language) {
+ file.language = options.language;
+ }
+ return stringify(file, data, options);
+ });
+
+ // strip BOM and ensure that "file.content" is a string
+ file.content = utils.toString(file.content);
+ file.isEmpty = false;
+ file.excerpt = '';
+ return file;
+};
diff --git a/node_modules/gray-matter/lib/utils.js b/node_modules/gray-matter/lib/utils.js
new file mode 100644
index 0000000..96e7ce0
--- /dev/null
+++ b/node_modules/gray-matter/lib/utils.js
@@ -0,0 +1,66 @@
+'use strict';
+
+const stripBom = require('strip-bom-string');
+const typeOf = require('kind-of');
+
+exports.define = function(obj, key, val) {
+ Reflect.defineProperty(obj, key, {
+ enumerable: false,
+ configurable: true,
+ writable: true,
+ value: val
+ });
+};
+
+/**
+ * Returns true if `val` is a buffer
+ */
+
+exports.isBuffer = function(val) {
+ return typeOf(val) === 'buffer';
+};
+
+/**
+ * Returns true if `val` is an object
+ */
+
+exports.isObject = function(val) {
+ return typeOf(val) === 'object';
+};
+
+/**
+ * Cast `input` to a buffer
+ */
+
+exports.toBuffer = function(input) {
+ return typeof input === 'string' ? Buffer.from(input) : input;
+};
+
+/**
+ * Cast `val` to a string.
+ */
+
+exports.toString = function(input) {
+ if (exports.isBuffer(input)) return stripBom(String(input));
+ if (typeof input !== 'string') {
+ throw new TypeError('expected input to be a string or buffer');
+ }
+ return stripBom(input);
+};
+
+/**
+ * Cast `val` to an array.
+ */
+
+exports.arrayify = function(val) {
+ return val ? (Array.isArray(val) ? val : [val]) : [];
+};
+
+/**
+ * Returns true if `str` starts with `substr`.
+ */
+
+exports.startsWith = function(str, substr, len) {
+ if (typeof len !== 'number') len = substr.length;
+ return str.slice(0, len) === substr;
+};