blob: 8db41e04775976612153c8f6f6744eee57fe18cd [file] [edit]
exports.tokenize = tokenizeBlockQuoteStart
exports.continuation = {tokenize: tokenizeBlockQuoteContinuation}
exports.exit = exit
var codes = require('../character/codes')
var markdownSpace = require('../character/markdown-space')
var constants = require('../constant/constants')
var types = require('../constant/types')
var createSpace = require('./factory-space')
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 createSpace(
effects,
effects.attempt(exports, ok, nok),
types.linePrefix,
constants.tabSize
)
}
function exit(effects) {
effects.exit(types.blockQuote)
}