metalsmith-markdown-partials 2.2.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":96565,"argv":["/Users/wernerglinka/.nvm/versions/node/v18.16.0/bin/node","/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/node_modules/.bin/mocha","./tests/index.js"],"execArgv":[],"cwd":"/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials","time":1731375730889,"ppid":96562,"coverageFilename":"/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/.nyc_output/181518ec-15ce-4116-8650-58fc4a5be71d.json","externalId":"","uuid":"181518ec-15ce-4116-8650-58fc4a5be71d","files":[]}
@@ -1 +1 @@
1
- {"processes":{"d6df1464-1710-492c-bd87-9bf64bde6d5d":{"parent":null,"children":[]}},"files":{"/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/lib/index.js":["d6df1464-1710-492c-bd87-9bf64bde6d5d"]},"externalIds":{}}
1
+ {"processes":{"181518ec-15ce-4116-8650-58fc4a5be71d":{"parent":null,"children":[]}},"files":{},"externalIds":{}}
package/lib/index.js CHANGED
@@ -14,8 +14,8 @@ const defaults = {
14
14
  * @param {Options} [options]
15
15
  * @returns {Object}
16
16
  */
17
- function normalizeOptions(options) {
18
- return Object.assign({}, defaults, options || {});
17
+ function normalizeOptions( options ) {
18
+ return Object.assign( {}, defaults, options || {} );
19
19
  }
20
20
 
21
21
  /**
@@ -27,62 +27,62 @@ const defaults = {
27
27
  *
28
28
  * @return {[Array]} Array with all markdown include objects
29
29
  */
30
- function getMarkdownIncludes(files, options) {
31
- const markdownIncludes = [];
32
-
33
- // get the library name
34
- const libraryPath = options.libraryPath.slice(0, -1).split("/");
35
- const libraryName = libraryPath[libraryPath.length - 1];
36
-
37
- Object.keys(files).forEach(function (file) {
38
- /*
39
- * checks if string 'file' ends with options.fileSuffix
40
- * when metalsmith-in-place or metalsmith-layouts are used
41
- * the suffix depends on what templating language is used
42
- * for example with Nunjucks it would be .md.njk
43
- *
44
- * Also check that file does NOT start with libraryName as
45
- * the markdown partials library is also located in the content
46
- * folder
47
- */
48
- if (file.endsWith(options.fileSuffix) && !file.startsWith(libraryName)) {
49
- const markerStart = "{#md";
50
- const markerEnd = "#}";
51
- const str = files[file].contents.toString();
52
-
53
- // check for markers present
54
- const count = str.match(/\{#md\s*".+?"\s*#\}/g).length;
55
-
56
- // get all markdown includes
57
- if (count) {
58
- for (let i = 0; count > i; i++) {
59
- const marker = str.match(/\{#md\s*"(.+?)"\s*#\}/g)[i];
60
- const markerFileName = marker.replaceAll(" ", "").replace(`${markerStart}"`, "").replace(`"${markerEnd}`, "");
61
-
62
- // get the replacement markdown string
63
- // by reconstructing the object key for the replacement markdown file
64
- // `${libraryName}/${markerFileName}`
65
- const replacementString = files[`${libraryName}/${markerFileName}`].contents.toString();
66
-
67
- markdownIncludes.push({
68
- marker,
69
- markerReplacement: replacementString,
70
- file
71
- });
72
-
73
- }
30
+ function getMarkdownIncludes( files, options ) {
31
+ const markdownIncludes = [];
32
+
33
+ // get the library name
34
+ const libraryPath = options.libraryPath.slice( 0, -1 ).split( "/" );
35
+ const libraryName = libraryPath[ libraryPath.length - 1 ];
36
+
37
+ Object.keys( files ).forEach( function ( file ) {
38
+ /*
39
+ * checks if string 'file' ends with options.fileSuffix
40
+ * when metalsmith-in-place or metalsmith-layouts are used
41
+ * the suffix depends on what templating language is used
42
+ * for example with Nunjucks it would be .md.njk
43
+ *
44
+ * Also check that file does NOT start with libraryName as
45
+ * the markdown partials library is also located in the content
46
+ * folder
47
+ */
48
+ if ( file.endsWith( options.fileSuffix ) && !file.startsWith( libraryName ) ) {
49
+ const markerStart = "{#md";
50
+ const markerEnd = "#}";
51
+ const str = files[ file ].contents.toString();
52
+
53
+ // check for markers present
54
+ const count = str.match( /\{#md\s*".+?"\s*#\}/g ).length;
55
+
56
+ // get all markdown includes
57
+ if ( count ) {
58
+ for ( let i = 0; count > i; i++ ) {
59
+ const marker = str.match( /\{#md\s*"(.+?)"\s*#\}/g )[ i ];
60
+ const markerFileName = marker.replaceAll( " ", "" ).replace( `${ markerStart }"`, "" ).replace( `"${ markerEnd }`, "" );
61
+
62
+ // get the replacement markdown string
63
+ // by reconstructing the object key for the replacement markdown file
64
+ // `${libraryName}/${markerFileName}`
65
+ const replacementString = files[ `${ libraryName }/${ markerFileName }` ].contents.toString();
66
+
67
+ markdownIncludes.push( {
68
+ marker,
69
+ markerReplacement: replacementString,
70
+ file
71
+ } );
72
+
74
73
  }
75
74
  }
76
- });
75
+ }
76
+ } );
77
77
 
78
- // Remove markdown-partials from metalsmith build process
79
- Object.keys(files).forEach(function (file) {
80
- if (file.startsWith(libraryName)) {
81
- delete files[file];
82
- }
83
- });
78
+ // Remove markdown-partials from metalsmith build process
79
+ Object.keys( files ).forEach( function ( file ) {
80
+ if ( file.startsWith( libraryName ) ) {
81
+ delete files[ file ];
82
+ }
83
+ } );
84
84
 
85
- return markdownIncludes
85
+ return markdownIncludes;
86
86
  }
87
87
 
88
88
  /**
@@ -93,21 +93,21 @@ function getMarkdownIncludes(files, options) {
93
93
  * @param {[Array]} markdownIncludes with all markdown include objects
94
94
  * @return {[void]}
95
95
  */
96
- function resolveMarkdownIncludes(files, markdownIncludes) {
96
+ function resolveMarkdownIncludes( files, markdownIncludes ) {
97
97
  // replace all markers with their markdown replacements
98
- markdownIncludes.forEach(function(markdownInclude) {
98
+ markdownIncludes.forEach( function ( markdownInclude ) {
99
99
 
100
- const fileData = files[markdownInclude.file];
100
+ const fileData = files[ markdownInclude.file ];
101
101
 
102
102
  // replace the include marker with the actual include file content
103
103
  try {
104
104
  const contents = fileData.contents.toString();
105
- fileData.contents = Buffer.from(contents.replace(markdownInclude.marker, markdownInclude.markerReplacement));
106
- } catch (e) {
107
- console.error(e);
105
+ fileData.contents = Buffer.from( contents.replace( markdownInclude.marker, markdownInclude.markerReplacement ) );
106
+ } catch ( e ) {
107
+ console.error( e );
108
108
  }
109
109
 
110
- });
110
+ } );
111
111
  }
112
112
 
113
113
  /**
@@ -120,21 +120,21 @@ function resolveMarkdownIncludes(files, markdownIncludes) {
120
120
  * @returns {import('metalsmith').Plugin}
121
121
  */
122
122
 
123
- function initMarkdownPartials(options) {
124
- options = normalizeOptions(options);
123
+ function initMarkdownPartials( options ) {
124
+ options = normalizeOptions( options );
125
125
 
126
- return function markdownPartials(files, metalsmith, done) {
127
- setImmediate(done);
126
+ return function markdownPartials( files, metalsmith, done ) {
127
+ setImmediate( done );
128
128
 
129
129
  // get all markdown includes
130
- const markdownIncludes = getMarkdownIncludes(files, options);
130
+ const markdownIncludes = getMarkdownIncludes( files, options );
131
131
 
132
132
  // replace include markers with their respective replacement
133
- if (markdownIncludes.length) {
134
- resolveMarkdownIncludes(files, markdownIncludes);
133
+ if ( markdownIncludes.length ) {
134
+ resolveMarkdownIncludes( files, markdownIncludes );
135
135
  }
136
136
 
137
137
  };
138
138
  }
139
139
 
140
- module.exports = initMarkdownPartials;
140
+ export default initMarkdownPartials;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "metalsmith-markdown-partials",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "description": "A Metalsmith plugin that allows the use of partial markdowm files",
5
5
  "keywords": [
6
6
  "metalsmith-plugin",
@@ -10,6 +10,7 @@
10
10
  "static-site"
11
11
  ],
12
12
  "main": "lib/index.js",
13
+ "type": "module",
13
14
  "repository": {
14
15
  "type": "git",
15
16
  "url": "git+https://github.com/wernerglinka/metalsmith-markdown-partials.git"
@@ -24,19 +25,19 @@
24
25
  },
25
26
  "homepage": "https://github.com/wernerglinka/metalsmith-markdown-partials#readme",
26
27
  "dependencies": {
27
- "debug": "^4.3.4"
28
+ "debug": "^4.3.7"
28
29
  },
29
30
  "devDependencies": {
30
- "auto-changelog": "^2.4.0",
31
- "chai": "^4.3.7",
31
+ "auto-changelog": "^2.5.0",
32
+ "chai": "^5.1.2",
32
33
  "coveralls": "^3.1.1",
33
- "eslint": "^8.41.0",
34
- "eslint-config-prettier": "^8.8.0",
35
- "metalsmith": "^2.6.0",
36
- "mocha": "^10.2.0",
37
- "nyc": "^15.1.0",
38
- "prettier": "^2.8.8",
39
- "release-it": "^15.10.5"
34
+ "eslint": "^9.14.0",
35
+ "eslint-config-prettier": "^9.1.0",
36
+ "metalsmith": "^2.6.3",
37
+ "mocha": "^10.8.2",
38
+ "nyc": "^17.1.0",
39
+ "prettier": "^3.3.3",
40
+ "release-it": "^17.10.0"
40
41
  },
41
42
  "peerDependencies": {
42
43
  "metalsmith": "^2.5.1"
package/tests/index.js CHANGED
@@ -2,35 +2,41 @@
2
2
 
3
3
  'use strict';
4
4
 
5
- const chai = require('chai');
6
- const metalsmith = require('metalsmith');
7
- const mdPartials = require('../lib');
8
- const fs = require('fs');
9
- const path = require('path');
10
- const expect = chai.expect;
5
+ import * as chai from 'chai';
6
+ import metalsmith from 'metalsmith';
7
+ import mdPartials from '../lib/index.js';
8
+ import fs from 'fs';
9
+ import path from 'path';
10
+ import { fileURLToPath } from 'node:url';
11
+ import { dirname } from 'node:path';
11
12
 
12
- const fixture = path.resolve.bind(path, __dirname, 'fixtures');
13
+ /* eslint-disable no-underscore-dangle */
14
+ const __dirname = dirname( fileURLToPath( import.meta.url ) );
13
15
 
14
- function file(_path) {
15
- return fs.readFileSync(fixture(_path), 'utf8');
16
+ const { expect } = chai;
17
+
18
+ const fixture = path.resolve.bind( path, __dirname, 'fixtures' );
19
+
20
+ function file( _path ) {
21
+ return fs.readFileSync( fixture( _path ), 'utf8' );
16
22
  }
17
23
 
18
- describe('metalsmith-markdown-partials', () => {
24
+ describe( 'metalsmith-markdown-partials', () => {
19
25
 
20
- it('should replace marker with markdown partial', done => {
26
+ it( 'should replace marker with markdown partial', done => {
21
27
 
22
- metalsmith(fixture())
23
- .use(mdPartials({
24
- libraryPath: path.join(fixture(), `/src/md-partials/`),
25
- fileSuffix: '.md',
26
- }))
28
+ metalsmith( fixture() )
29
+ .use( mdPartials( {
30
+ libraryPath: path.join( fixture(), `/src/md-partials/` ),
31
+ fileSuffix: '.md',
32
+ } ) )
27
33
  .build( err => {
28
- if (err) {
29
- return done(err);
34
+ if ( err ) {
35
+ return done( err );
30
36
  }
31
- expect(file('build/markdown.md')).to.be.eql(file('expected/final-markdown.md'));
32
-
37
+ expect( file( 'build/markdown.md' ) ).to.be.eql( file( 'expected/final-markdown.md' ) );
38
+
33
39
  done();
34
- });
35
- });
36
- });
40
+ } );
41
+ } );
42
+ } );
@@ -1 +0,0 @@
1
- {"/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/lib/index.js":{"path":"/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/lib/index.js","statementMap":{"0":{"start":{"line":7,"column":17},"end":{"line":10,"column":1}},"1":{"start":{"line":18,"column":2},"end":{"line":18,"column":52}},"2":{"start":{"line":31,"column":29},"end":{"line":31,"column":31}},"3":{"start":{"line":34,"column":24},"end":{"line":34,"column":67}},"4":{"start":{"line":35,"column":24},"end":{"line":35,"column":59}},"5":{"start":{"line":37,"column":4},"end":{"line":76,"column":7}},"6":{"start":{"line":48,"column":6},"end":{"line":75,"column":7}},"7":{"start":{"line":49,"column":28},"end":{"line":49,"column":34}},"8":{"start":{"line":50,"column":26},"end":{"line":50,"column":30}},"9":{"start":{"line":51,"column":20},"end":{"line":51,"column":51}},"10":{"start":{"line":54,"column":22},"end":{"line":54,"column":62}},"11":{"start":{"line":57,"column":8},"end":{"line":74,"column":9}},"12":{"start":{"line":58,"column":10},"end":{"line":73,"column":11}},"13":{"start":{"line":58,"column":23},"end":{"line":58,"column":24}},"14":{"start":{"line":59,"column":27},"end":{"line":59,"column":65}},"15":{"start":{"line":60,"column":35},"end":{"line":60,"column":121}},"16":{"start":{"line":65,"column":38},"end":{"line":65,"column":99}},"17":{"start":{"line":67,"column":12},"end":{"line":71,"column":15}},"18":{"start":{"line":79,"column":4},"end":{"line":83,"column":7}},"19":{"start":{"line":80,"column":6},"end":{"line":82,"column":7}},"20":{"start":{"line":81,"column":8},"end":{"line":81,"column":27}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":27}},"22":{"start":{"line":98,"column":2},"end":{"line":110,"column":5}},"23":{"start":{"line":100,"column":21},"end":{"line":100,"column":48}},"24":{"start":{"line":103,"column":4},"end":{"line":108,"column":5}},"25":{"start":{"line":104,"column":23},"end":{"line":104,"column":51}},"26":{"start":{"line":105,"column":6},"end":{"line":105,"column":115}},"27":{"start":{"line":107,"column":6},"end":{"line":107,"column":23}},"28":{"start":{"line":124,"column":2},"end":{"line":124,"column":38}},"29":{"start":{"line":126,"column":2},"end":{"line":137,"column":4}},"30":{"start":{"line":127,"column":4},"end":{"line":127,"column":23}},"31":{"start":{"line":130,"column":29},"end":{"line":130,"column":64}},"32":{"start":{"line":133,"column":4},"end":{"line":135,"column":5}},"33":{"start":{"line":134,"column":6},"end":{"line":134,"column":55}},"34":{"start":{"line":140,"column":0},"end":{"line":140,"column":38}}},"fnMap":{"0":{"name":"normalizeOptions","decl":{"start":{"line":17,"column":10},"end":{"line":17,"column":26}},"loc":{"start":{"line":17,"column":36},"end":{"line":19,"column":1}},"line":17},"1":{"name":"getMarkdownIncludes","decl":{"start":{"line":30,"column":9},"end":{"line":30,"column":28}},"loc":{"start":{"line":30,"column":45},"end":{"line":86,"column":1}},"line":30},"2":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":31},"end":{"line":37,"column":32}},"loc":{"start":{"line":37,"column":47},"end":{"line":76,"column":5}},"line":37},"3":{"name":"(anonymous_3)","decl":{"start":{"line":79,"column":31},"end":{"line":79,"column":32}},"loc":{"start":{"line":79,"column":47},"end":{"line":83,"column":5}},"line":79},"4":{"name":"resolveMarkdownIncludes","decl":{"start":{"line":96,"column":9},"end":{"line":96,"column":32}},"loc":{"start":{"line":96,"column":58},"end":{"line":111,"column":1}},"line":96},"5":{"name":"(anonymous_5)","decl":{"start":{"line":98,"column":27},"end":{"line":98,"column":28}},"loc":{"start":{"line":98,"column":53},"end":{"line":110,"column":3}},"line":98},"6":{"name":"initMarkdownPartials","decl":{"start":{"line":123,"column":9},"end":{"line":123,"column":29}},"loc":{"start":{"line":123,"column":39},"end":{"line":138,"column":1}},"line":123},"7":{"name":"markdownPartials","decl":{"start":{"line":126,"column":18},"end":{"line":126,"column":34}},"loc":{"start":{"line":126,"column":60},"end":{"line":137,"column":3}},"line":126}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":37},"end":{"line":18,"column":50}},"type":"binary-expr","locations":[{"start":{"line":18,"column":37},"end":{"line":18,"column":44}},{"start":{"line":18,"column":48},"end":{"line":18,"column":50}}],"line":18},"1":{"loc":{"start":{"line":48,"column":6},"end":{"line":75,"column":7}},"type":"if","locations":[{"start":{"line":48,"column":6},"end":{"line":75,"column":7}},{"start":{"line":48,"column":6},"end":{"line":75,"column":7}}],"line":48},"2":{"loc":{"start":{"line":48,"column":10},"end":{"line":48,"column":76}},"type":"binary-expr","locations":[{"start":{"line":48,"column":10},"end":{"line":48,"column":43}},{"start":{"line":48,"column":47},"end":{"line":48,"column":76}}],"line":48},"3":{"loc":{"start":{"line":57,"column":8},"end":{"line":74,"column":9}},"type":"if","locations":[{"start":{"line":57,"column":8},"end":{"line":74,"column":9}},{"start":{"line":57,"column":8},"end":{"line":74,"column":9}}],"line":57},"4":{"loc":{"start":{"line":80,"column":6},"end":{"line":82,"column":7}},"type":"if","locations":[{"start":{"line":80,"column":6},"end":{"line":82,"column":7}},{"start":{"line":80,"column":6},"end":{"line":82,"column":7}}],"line":80},"5":{"loc":{"start":{"line":133,"column":4},"end":{"line":135,"column":5}},"type":"if","locations":[{"start":{"line":133,"column":4},"end":{"line":135,"column":5}},{"start":{"line":133,"column":4},"end":{"line":135,"column":5}}],"line":133}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":2,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":2,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":0,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1},"f":{"0":1,"1":1,"2":2,"3":2,"4":1,"5":1,"6":1,"7":1},"b":{"0":[1,0],"1":[1,1],"2":[2,2],"3":[1,0],"4":[1,1],"5":[1,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d30875f7d9fd9a483e52f4e94bf0a91003da47ff","contentHash":"87380a6c441133d03a472090227144e67609864995ff212e4601aab62ea569dd"}}
@@ -1 +0,0 @@
1
- {"parent":null,"pid":22552,"argv":["/Users/wernerglinka/.nvm/versions/node/v16.17.1/bin/node","/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/node_modules/.bin/mocha","./tests/index.js"],"execArgv":[],"cwd":"/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials","time":1685729137316,"ppid":22550,"coverageFilename":"/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/.nyc_output/d6df1464-1710-492c-bd87-9bf64bde6d5d.json","externalId":"","uuid":"d6df1464-1710-492c-bd87-9bf64bde6d5d","files":["/Users/wernerglinka/Documents/Projects/Metalsmith/>>>plugins/ms-markdown-partials/lib/index.js"]}