| var blockQuote = { |
| name: 'blockQuote', |
| tokenize: tokenizeBlockQuoteStart, |
| continuation: {tokenize: tokenizeBlockQuoteContinuation}, |
| exit: exit |
| } |
| export default blockQuote |
| |
| import codes from '../character/codes.mjs' |
| import markdownSpace from '../character/markdown-space.mjs' |
| import constants from '../constant/constants.mjs' |
| import types from '../constant/types.mjs' |
| import spaceFactory from './factory-space.mjs' |
| |
| function tokenizeBlockQuoteStart(effects, ok, nok) { |
| var self = this |
| |
| return start |
| |
| function start(code) { |
| if (code === codes.greaterThan) { |
| if (!self.containerState.open) { |
| effects.enter(types.blockQuote, {_container: true}) |
| self.containerState.open = true |
| } |
| |
| effects.enter(types.blockQuotePrefix) |
| effects.enter(types.blockQuoteMarker) |
| effects.consume(code) |
| effects.exit(types.blockQuoteMarker) |
| return after |
| } |
| |
| return nok(code) |
| } |
| |
| function after(code) { |
| if (markdownSpace(code)) { |
| effects.enter(types.blockQuotePrefixWhitespace) |
| effects.consume(code) |
| effects.exit(types.blockQuotePrefixWhitespace) |
| effects.exit(types.blockQuotePrefix) |
| return ok |
| } |
| |
| effects.exit(types.blockQuotePrefix) |
| return ok(code) |
| } |
| } |
| |
| function tokenizeBlockQuoteContinuation(effects, ok, nok) { |
| return spaceFactory( |
| effects, |
| effects.attempt(blockQuote, ok, nok), |
| types.linePrefix, |
| this.parser.constructs.disable.null.indexOf('codeIndented') > -1 |
| ? undefined |
| : constants.tabSize |
| ) |
| } |
| |
| function exit(effects) { |
| effects.exit(types.blockQuote) |
| } |