summaryrefslogtreecommitdiff
path: root/packages/markdown-it-14.1.0/lib/rules_inline/html_inline.mjs
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2024-05-12 12:14:02 +0700
committeraltaf-creator <dev@altafcreator.com>2024-05-12 12:14:02 +0700
commitd607ac12097afb5cb6f398a4e7b5cf4316efedc6 (patch)
tree6f4bc5b98a6ff3a1c3189f7ef9b570c0481e100d /packages/markdown-it-14.1.0/lib/rules_inline/html_inline.mjs
parent7441f212967256ac4c9a93ba0b1f026308a8bfb6 (diff)
self host
Diffstat (limited to 'packages/markdown-it-14.1.0/lib/rules_inline/html_inline.mjs')
-rw-r--r--packages/markdown-it-14.1.0/lib/rules_inline/html_inline.mjs50
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/markdown-it-14.1.0/lib/rules_inline/html_inline.mjs b/packages/markdown-it-14.1.0/lib/rules_inline/html_inline.mjs
new file mode 100644
index 0000000..256efad
--- /dev/null
+++ b/packages/markdown-it-14.1.0/lib/rules_inline/html_inline.mjs
@@ -0,0 +1,50 @@
+// Process html tags
+
+import { HTML_TAG_RE } from '../common/html_re.mjs'
+
+function isLinkOpen (str) {
+ return /^<a[>\s]/i.test(str)
+}
+function isLinkClose (str) {
+ return /^<\/a\s*>/i.test(str)
+}
+
+function isLetter (ch) {
+ /* eslint no-bitwise:0 */
+ const lc = ch | 0x20 // to lower case
+ return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */)
+}
+
+export default function html_inline (state, silent) {
+ if (!state.md.options.html) { return false }
+
+ // Check start
+ const max = state.posMax
+ const pos = state.pos
+ if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||
+ pos + 2 >= max) {
+ return false
+ }
+
+ // Quick fail on second char
+ const ch = state.src.charCodeAt(pos + 1)
+ if (ch !== 0x21/* ! */ &&
+ ch !== 0x3F/* ? */ &&
+ ch !== 0x2F/* / */ &&
+ !isLetter(ch)) {
+ return false
+ }
+
+ const match = state.src.slice(pos).match(HTML_TAG_RE)
+ if (!match) { return false }
+
+ if (!silent) {
+ const token = state.push('html_inline', '', 0)
+ token.content = match[0]
+
+ if (isLinkOpen(token.content)) state.linkLevel++
+ if (isLinkClose(token.content)) state.linkLevel--
+ }
+ state.pos += match[0].length
+ return true
+}