| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | // Horizontal rule'use strict';var isSpace = require('../common/utils').isSpace;module.exports = function hr(state, startLine, endLine, silent) {  var marker, cnt, ch, token,      pos = state.bMarks[startLine] + state.tShift[startLine],      max = state.eMarks[startLine];  // if it's indented more than 3 spaces, it should be a code block  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }  marker = state.src.charCodeAt(pos++);  // Check hr marker  if (marker !== 0x2A/* * */ &&      marker !== 0x2D/* - */ &&      marker !== 0x5F/* _ */) {    return false;  }  // markers can be mixed with spaces, but there should be at least 3 of them  cnt = 1;  while (pos < max) {    ch = state.src.charCodeAt(pos++);    if (ch !== marker && !isSpace(ch)) { return false; }    if (ch === marker) { cnt++; }  }  if (cnt < 3) { return false; }  if (silent) { return true; }  state.line = startLine + 1;  token        = state.push('hr', 'hr', 0);  token.map    = [ startLine, state.line ];  token.markup = Array(cnt + 1).join(String.fromCharCode(marker));  return true;};
 |