49de5f80e1e62194f78943535bce8ab6ff15d138be58fbd3b1aca0ec44178f42.json 18 KB

1
  1. {"ast":null,"code":"// Block quotes\n\nimport { isSpace } from '../common/utils.mjs';\nexport default function blockquote(state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine];\n let max = state.eMarks[startLine];\n const oldLineMax = state.lineMax;\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos) !== 0x3E /* > */) {\n return false;\n }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) {\n return true;\n }\n const oldBMarks = [];\n const oldBSCount = [];\n const oldSCount = [];\n const oldTShift = [];\n const terminatorRules = state.md.block.ruler.getRules('blockquote');\n const oldParentType = state.parentType;\n state.parentType = 'blockquote';\n let lastLineEmpty = false;\n let nextLine;\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n const isOutdented = state.sCount[nextLine] < state.blkIndent;\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n if (state.src.charCodeAt(pos++) === 0x3E /* > */ && !isOutdented) {\n // This line is inside the blockquote.\n\n // set offset past spaces and \">\"\n let initial = state.sCount[nextLine] + 1;\n let spaceAfterMarker;\n let adjustTab;\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true;\n if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n let offset = initial;\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n while (pos < max) {\n const ch = state.src.charCodeAt(pos);\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n pos++;\n }\n lastLineEmpty = pos >= max;\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) {\n break;\n }\n\n // Case 3: another tag found.\n let terminate = false;\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n break;\n }\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1;\n }\n const oldIndent = state.blkIndent;\n state.blkIndent = 0;\n const token_o = state.push('blockquote_open', 'blockquote', 1);\n token_o.markup = '>';\n const lines = [startLine, 0];\n token_o.map = lines;\n state.md.block.tokenize(state, startLine, nextLine);\n const token_c = state.push('blockquote_close', 'blockquote', -1);\n token_c.markup = '>';\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line;\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (let i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n state.blkIndent = oldIndent;\n return true;\n}","map":{"version":3,"names":["isSpace","blockquote","state","startLine","endLine","silent","pos","bMarks","tShift","max","eMarks","oldLineMax","lineMax","sCount","blkIndent","src","charCodeAt","oldBMarks","oldBSCount","oldSCount","oldTShift","terminatorRules","md","block","ruler","getRules","oldParentType","parentType","lastLineEmpty","nextLine","isOutdented","initial","spaceAfterMarker","adjustTab","bsCount","offset","push","ch","terminate","i","l","length","oldIndent","token_o","markup","lines","map","tokenize","token_c","line"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/markdown-it/lib/rules_block/blockquote.mjs"],"sourcesContent":["// Block quotes\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function blockquote (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n const oldLineMax = state.lineMax\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos) !== 0x3E/* > */) { return false }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true }\n\n const oldBMarks = []\n const oldBSCount = []\n const oldSCount = []\n const oldTShift = []\n\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const oldParentType = state.parentType\n state.parentType = 'blockquote'\n let lastLineEmpty = false\n let nextLine\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n const isOutdented = state.sCount[nextLine] < state.blkIndent\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n // This line is inside the blockquote.\n\n // set offset past spaces and \">\"\n let initial = state.sCount[nextLine] + 1\n let spaceAfterMarker\n let adjustTab\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++\n initial++\n adjustTab = false\n spaceAfterMarker = true\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true\n\n if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++\n initial++\n adjustTab = false\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true\n }\n } else {\n spaceAfterMarker = false\n }\n\n let offset = initial\n oldBMarks.push(state.bMarks[nextLine])\n state.bMarks[nextLine] = pos\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4\n } else {\n offset++\n }\n } else {\n break\n }\n\n pos++\n }\n\n lastLineEmpty = pos >= max\n\n oldBSCount.push(state.bsCount[nextLine])\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0)\n\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] = offset - initial\n\n oldTShift.push(state.tShift[nextLine])\n state.tShift[nextLine] = pos - state.bMarks[nextLine]\n continue\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break }\n\n // Case 3: another tag found.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] -= state.blkIndent\n }\n\n break\n }\n\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1\n }\n\n const oldIndent = state.blkIndent\n state.blkIndent = 0\n\n const token_o = state.push('blockquote_open', 'blockquote', 1)\n token_o.markup = '>'\n const lines = [startLine, 0]\n token_o.map = lines\n\n state.md.block.tokenize(state, startLine, nextLine)\n\n const token_c = state.push('blockquote_close', 'blockquote', -1)\n token_c.markup = '>'\n\n state.lineMax = oldLineMax\n state.parentType = oldParentType\n lines[1] = state.line\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (let i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i]\n state.tShift[i + startLine] = oldTShift[i]\n state.sCount[i + startLine] = oldSCount[i]\n state.bsCount[i + startLine] = oldBSCount[i]\n }\n state.blkIndent = oldIndent\n\n return true\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}