12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- '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
|