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.
- package/.nyc_output/181518ec-15ce-4116-8650-58fc4a5be71d.json +1 -0
- package/.nyc_output/processinfo/181518ec-15ce-4116-8650-58fc4a5be71d.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/lib/index.js +69 -69
- package/package.json +12 -11
- package/tests/index.js +29 -23
- package/.nyc_output/d6df1464-1710-492c-bd87-9bf64bde6d5d.json +0 -1
- package/.nyc_output/processinfo/d6df1464-1710-492c-bd87-9bf64bde6d5d.json +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -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":{"
|
|
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
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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
|
-
|
|
140
|
+
export default initMarkdownPartials;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "metalsmith-markdown-partials",
|
|
3
|
-
"version": "2.
|
|
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.
|
|
28
|
+
"debug": "^4.3.7"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
|
-
"auto-changelog": "^2.
|
|
31
|
-
"chai": "^
|
|
31
|
+
"auto-changelog": "^2.5.0",
|
|
32
|
+
"chai": "^5.1.2",
|
|
32
33
|
"coveralls": "^3.1.1",
|
|
33
|
-
"eslint": "^
|
|
34
|
-
"eslint-config-prettier": "^
|
|
35
|
-
"metalsmith": "^2.6.
|
|
36
|
-
"mocha": "^10.2
|
|
37
|
-
"nyc": "^
|
|
38
|
-
"prettier": "^
|
|
39
|
-
"release-it": "^
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
13
|
+
/* eslint-disable no-underscore-dangle */
|
|
14
|
+
const __dirname = dirname( fileURLToPath( import.meta.url ) );
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
25
|
-
|
|
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"]}
|