'use strict' var markdownSpace = require('../character/markdown-space.js') var factorySpace = require('./factory-space.js') var blockQuote = { name: 'blockQuote', tokenize: tokenizeBlockQuoteStart, continuation: { tokenize: tokenizeBlockQuoteContinuation }, exit: exit } function tokenizeBlockQuoteStart(effects, ok, nok) { var self = this return start function start(code) { if (code === 62) { if (!self.containerState.open) { effects.enter('blockQuote', { _container: true }) self.containerState.open = true } effects.enter('blockQuotePrefix') effects.enter('blockQuoteMarker') effects.consume(code) effects.exit('blockQuoteMarker') return after } return nok(code) } function after(code) { if (markdownSpace(code)) { effects.enter('blockQuotePrefixWhitespace') effects.consume(code) effects.exit('blockQuotePrefixWhitespace') effects.exit('blockQuotePrefix') return ok } effects.exit('blockQuotePrefix') return ok(code) } } function tokenizeBlockQuoteContinuation(effects, ok, nok) { return factorySpace( effects, effects.attempt(blockQuote, ok, nok), 'linePrefix', this.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4 ) } function exit(effects) { effects.exit('blockQuote') } module.exports = blockQuote