EASYAIuniappNewUI/dist/dev/mp-weixin/components/firstui/fui-parse/high-light/languages/markdown.js
2025-02-08 18:50:38 +08:00

124 lines
2.5 KiB
JavaScript

"use strict";
function markdown(hljs) {
return {
aliases: ["md", "mkdown", "mkd"],
contains: [
// highlight headers
{
className: "section",
variants: [
{ begin: "^#{1,6}", end: "$" },
{ begin: "^.+?\\n[=-]{2,}$" }
]
},
// inline html
{
begin: "<",
end: ">",
subLanguage: "xml",
relevance: 0
},
// lists (indicators only)
{
className: "bullet",
begin: "^\\s*([*+-]|(\\d+\\.))\\s+"
},
// strong segments
{
className: "strong",
begin: "[*_]{2}.+?[*_]{2}"
},
// emphasis segments
{
className: "emphasis",
variants: [
{ begin: "\\*.+?\\*" },
{
begin: "_.+?_",
relevance: 0
}
]
},
// blockquotes
{
className: "quote",
begin: "^>\\s+",
end: "$"
},
// code snippets
{
className: "code",
variants: [
{
begin: "^```\\w*\\s*$",
end: "^```[ ]*$"
},
{
begin: "`.+?`"
},
{
begin: "^( {4}|\\t)",
end: "$",
relevance: 0
}
]
},
// horizontal rules
{
begin: "^[-\\*]{3,}",
end: "$"
},
// using links - title and link
{
begin: "\\[.+?\\][\\(\\[].*?[\\)\\]]",
returnBegin: true,
contains: [
{
className: "string",
begin: "\\[",
end: "\\]",
excludeBegin: true,
returnEnd: true,
relevance: 0
},
{
className: "link",
begin: "\\]\\(",
end: "\\)",
excludeBegin: true,
excludeEnd: true
},
{
className: "symbol",
begin: "\\]\\[",
end: "\\]",
excludeBegin: true,
excludeEnd: true
}
],
relevance: 10
},
{
begin: /^\[[^\n]+\]:/,
returnBegin: true,
contains: [
{
className: "symbol",
begin: /\[/,
end: /\]/,
excludeBegin: true,
excludeEnd: true
},
{
className: "link",
begin: /:\s*/,
end: /$/,
excludeBegin: true
}
]
}
]
};
}
exports.markdown = markdown;