All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
33 lines
684 B
JavaScript
33 lines
684 B
JavaScript
'use strict'
|
|
|
|
var markdownLineEnding = require('../character/markdown-line-ending.js')
|
|
var markdownSpace = require('../character/markdown-space.js')
|
|
var factorySpace = require('./factory-space.js')
|
|
|
|
function whitespaceFactory(effects, ok) {
|
|
var seen
|
|
return start
|
|
|
|
function start(code) {
|
|
if (markdownLineEnding(code)) {
|
|
effects.enter('lineEnding')
|
|
effects.consume(code)
|
|
effects.exit('lineEnding')
|
|
seen = true
|
|
return start
|
|
}
|
|
|
|
if (markdownSpace(code)) {
|
|
return factorySpace(
|
|
effects,
|
|
start,
|
|
seen ? 'linePrefix' : 'lineSuffix'
|
|
)(code)
|
|
}
|
|
|
|
return ok(code)
|
|
}
|
|
}
|
|
|
|
module.exports = whitespaceFactory
|