Blame view

node_modules/markdown-it/lib/rules_inline/backticks.js 1.09 KB
290144e9   易尊强   第一次
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
  // Parse backticks
  
  'use strict';
  
  module.exports = function backtick(state, silent) {
    var start, max, marker, matchStart, matchEnd, token,
        pos = state.pos,
        ch = state.src.charCodeAt(pos);
  
    if (ch !== 0x60/* ` */) { return false; }
  
    start = pos;
    pos++;
    max = state.posMax;
  
    while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }
  
    marker = state.src.slice(start, pos);
  
    matchStart = matchEnd = pos;
  
    while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {
      matchEnd = matchStart + 1;
  
      while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }
  
      if (matchEnd - matchStart === marker.length) {
        if (!silent) {
          token         = state.push('code_inline', 'code', 0);
          token.markup  = marker;
          token.content = state.src.slice(pos, matchStart)
                                   .replace(/[ \n]+/g, ' ')
                                   .trim();
        }
        state.pos = matchEnd;
        return true;
      }
    }
  
    if (!silent) { state.pending += marker; }
    state.pos += marker.length;
    return true;
  };