|
1 |
| -const parseEmojis = str => { |
2 |
| - const emojiData = require('markdown-it-emoji/lib/data/full.json') |
3 |
| - return str.replace(/:(.+?):/g, (placeholder, key) => emojiData[key] || placeholder) |
| 1 | +const parseHeaders = require('./parseHeaders') |
| 2 | + |
| 3 | +exports.compose = (...processors) => { |
| 4 | + if (processors.length === 0) { |
| 5 | + return input => input |
| 6 | + } |
| 7 | + if (processors.length === 1) { |
| 8 | + return processors[0] |
| 9 | + } |
| 10 | + return processors.reduce((prev, next) => { |
| 11 | + return (...args) => next(prev(...args)) |
| 12 | + }) |
4 | 13 | }
|
5 | 14 |
|
6 | 15 | exports.normalizeHeadTag = tag => {
|
@@ -35,11 +44,11 @@ exports.inferTitle = function (frontmatter) {
|
35 | 44 | return 'Home'
|
36 | 45 | }
|
37 | 46 | if (frontmatter.data.title) {
|
38 |
| - return parseEmojis(frontmatter.data.title) |
| 47 | + return parseHeaders(frontmatter.data.title) |
39 | 48 | }
|
40 | 49 | const match = frontmatter.content.trim().match(/^#+\s+(.*)/)
|
41 | 50 | if (match) {
|
42 |
| - return parseEmojis(match[1]) |
| 51 | + return parseHeaders(match[1]) |
43 | 52 | }
|
44 | 53 | }
|
45 | 54 |
|
@@ -71,7 +80,7 @@ exports.extractHeaders = (content, include = [], md) => {
|
71 | 80 | const res = []
|
72 | 81 | tokens.forEach((t, i) => {
|
73 | 82 | if (t.type === 'heading_open' && include.includes(t.tag)) {
|
74 |
| - const title = parseEmojis(tokens[i + 1].content) |
| 83 | + const title = parseHeaders(tokens[i + 1].content) |
75 | 84 | const slug = t.attrs.find(([name]) => name === 'id')[1]
|
76 | 85 | res.push({
|
77 | 86 | level: parseInt(t.tag.slice(1), 10),
|
|
0 commit comments