mirror of
https://github.com/tdurieux/anonymous_github.git
synced 2026-05-15 22:48:00 +02:00
feat(#169): add emoji support for markdown
This commit is contained in:
+1879
File diff suppressed because it is too large
Load Diff
+57
@@ -0,0 +1,57 @@
|
||||
const defaultOptions = {
|
||||
// emojis: {}, required
|
||||
unicode: false,
|
||||
};
|
||||
|
||||
function markedEmoji(options) {
|
||||
options = {
|
||||
...defaultOptions,
|
||||
...options,
|
||||
};
|
||||
|
||||
if (!options.emojis) {
|
||||
throw new Error("Must provide emojis to markedEmoji");
|
||||
}
|
||||
|
||||
return {
|
||||
extensions: [
|
||||
{
|
||||
name: "emoji",
|
||||
level: "inline",
|
||||
start(src) {
|
||||
return src.indexOf(":");
|
||||
},
|
||||
tokenizer(src, tokens) {
|
||||
const rule = /^:(.+?):/;
|
||||
const match = rule.exec(src);
|
||||
if (!match) {
|
||||
return;
|
||||
}
|
||||
|
||||
const name = match[1];
|
||||
const emoji = options.emojis[name];
|
||||
|
||||
if (!emoji) {
|
||||
return;
|
||||
}
|
||||
|
||||
return {
|
||||
type: "emoji",
|
||||
raw: match[0],
|
||||
name,
|
||||
emoji,
|
||||
};
|
||||
},
|
||||
renderer(token) {
|
||||
if (options.unicode) {
|
||||
return token.emoji;
|
||||
} else {
|
||||
return `<img class="emoji" alt="${token.name}" src="${
|
||||
token.emoji
|
||||
}"${this.parser.options.xhtml ? " /" : ""}>`;
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user