# All files / src/lib/markdown-it/patches/custom-component htmlRe.js

100% Statements 15/15
100% Branches 0/0
100% Functions 0/0
100% Lines 15/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46

    10x

    10x
    10x
    10x

    10x

    10x

    10x

    10x
    10x
    10x
    10x
    10x

    10x

    10x

    10x
     // Forked and modified from 'markdown-it/lib/common/html_re.js'

    // Regexps to match html elements

    // MODIFIED HERE: Support `@` as the first char of attr name
    const attr_name = '[a-zA-Z_:@][a-zA-Z0-9:._-]*'

    const unquoted = '[^"\'=<>`\\x00-\\x20]+'
    const single_quoted = "'[^']*'"
    const double_quoted = '"[^"]*"'

    const attr_value =
      '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'

    const attribute = '(?:\\s+' + attr_name + '(?:\\s*=\\s*' + attr_value + ')?)'

    const open_tag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>'

    const close_tag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>'
    const comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->'
    const processing = '<[?][\\s\\S]*?[?]>'
    const declaration = '<![A-Z]+\\s+[^>]*>'
    const cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'

    const HTML_TAG_RE = new RegExp(
      '^(?:' +
        open_tag +
        '|' +
        close_tag +
        '|' +
        comment +
        '|' +
        processing +
        '|' +
        declaration +
        '|' +
        cdata +
        ')'
    )

    const HTML_OPEN_CLOSE_TAG_RE = new RegExp(
      '^(?:' + open_tag + '|' + close_tag + ')'
    )

    module.exports = { HTML_TAG_RE, HTML_OPEN_CLOSE_TAG_RE };