0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-03 21:22:39 +00:00

extract smartypants into package

This commit is contained in:
Trevor Buckner
2023-06-22 14:31:14 -04:00
parent 69ef4d7653
commit b33b3cd49b
3 changed files with 17607 additions and 17635 deletions

9
package-lock.json generated
View File

@@ -32,6 +32,7 @@
"marked": "5.1.0", "marked": "5.1.0",
"marked-extended-tables": "^1.0.6", "marked-extended-tables": "^1.0.6",
"marked-gfm-heading-id": "^3.0.4", "marked-gfm-heading-id": "^3.0.4",
"marked-smartypants-lite": "^1.0.0",
"markedLegacy": "npm:marked@^0.3.19", "markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.4", "moment": "^2.29.4",
"mongoose": "^7.3.0", "mongoose": "^7.3.0",
@@ -9677,6 +9678,14 @@
"marked": "^4 || ^5" "marked": "^4 || ^5"
} }
}, },
"node_modules/marked-smartypants-lite": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/marked-smartypants-lite/-/marked-smartypants-lite-1.0.0.tgz",
"integrity": "sha512-+EGU6lP4VVoQBJp1OMoM3wDG0m/n9z2pek9hA9NtOG1EDrW0DCQc6T4KzdEzaVAghc2XMyEBDqlUsN/3/QvD9g==",
"peerDependencies": {
"marked": "^4 || ^5"
}
},
"node_modules/markedLegacy": { "node_modules/markedLegacy": {
"name": "marked", "name": "marked",
"version": "0.3.19", "version": "0.3.19",

View File

@@ -100,6 +100,7 @@
"marked": "5.1.0", "marked": "5.1.0",
"marked-extended-tables": "^1.0.6", "marked-extended-tables": "^1.0.6",
"marked-gfm-heading-id": "^3.0.4", "marked-gfm-heading-id": "^3.0.4",
"marked-smartypants-lite": "^1.0.0",
"markedLegacy": "npm:marked@^0.3.19", "markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.4", "moment": "^2.29.4",
"mongoose": "^7.3.0", "mongoose": "^7.3.0",

View File

@@ -2,6 +2,7 @@
const _ = require('lodash'); const _ = require('lodash');
const Marked = require('marked'); const Marked = require('marked');
const MarkedExtendedTables = require('marked-extended-tables'); const MarkedExtendedTables = require('marked-extended-tables');
const { markedSmartypantsLite: MarkedSmartypantsLite } = require('marked-smartypants-lite');
const { gfmHeadingId: MarkedGFMHeadingId } = require('marked-gfm-heading-id'); const { gfmHeadingId: MarkedGFMHeadingId } = require('marked-gfm-heading-id');
const renderer = new Marked.Renderer(); const renderer = new Marked.Renderer();
@@ -237,49 +238,10 @@ const definitionLists = {
} }
}; };
const MarkedSmartyPantsLite = ()=>{
return {
tokenizer : {
inlineText(src) {
// don't escape inlineText
const cap = this.rules.inline.text.exec(src);
/* istanbul ignore next */
if(!cap) {
// should never happen
return;
}
const text = cap[0]
// em-dashes
.replace(/---/g, '\u2014')
// en-dashes
.replace(/--/g, '\u2013')
// opening singles
.replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
// closing singles & apostrophes
.replace(/'/g, '\u2019')
// opening doubles
.replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
// closing doubles
.replace(/"/g, '\u201d')
// ellipses
.replace(/\.{3}/g, '\u2026');
return {
type : 'text',
raw : cap[0],
text : text
};
}
}
};
};
Marked.use({ extensions: [mustacheSpans, mustacheDivs, mustacheInjectInline, definitionLists] }); Marked.use({ extensions: [mustacheSpans, mustacheDivs, mustacheInjectInline, definitionLists] });
Marked.use(mustacheInjectBlock); Marked.use(mustacheInjectBlock);
Marked.use({ renderer: renderer, mangle: false }); Marked.use({ renderer: renderer, mangle: false });
Marked.use(MarkedExtendedTables(), MarkedGFMHeadingId(), MarkedSmartyPantsLite()); Marked.use(MarkedExtendedTables(), MarkedGFMHeadingId(), MarkedSmartypantsLite());
//Fix local links in the Preview iFrame to link inside the frame //Fix local links in the Preview iFrame to link inside the frame
renderer.link = function (href, title, text) { renderer.link = function (href, title, text) {