|
@ -9,30 +9,31 @@ module.exports = function escape(state) { |
|
|
max = state.posMax; |
|
|
max = state.posMax; |
|
|
|
|
|
|
|
|
// ' \n' -> hardbreak
|
|
|
// ' \n' -> hardbreak
|
|
|
if (pmax >= 1 && |
|
|
// Lookup in pending chars is bad practice! Don't copy to other rules!
|
|
|
state.pending.charCodeAt(pmax) === 0x20 && |
|
|
// Pending string is stored in concat mode, indexed lookups will cause
|
|
|
state.pending.charCodeAt(pmax - 1) === 0x20) { |
|
|
// convertion to flat mode.
|
|
|
|
|
|
if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { |
|
|
|
|
|
if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { |
|
|
state.pending = state.pending.replace(/ +$/, ''); |
|
|
state.pending = state.pending.replace(/ +$/, ''); |
|
|
state.push({ |
|
|
state.push({ |
|
|
type: 'hardbreak' |
|
|
type: 'hardbreak' |
|
|
}); |
|
|
}); |
|
|
|
|
|
} else { |
|
|
pos++; |
|
|
state.pending = state.pending.slice(0, -1); |
|
|
// skip spaces
|
|
|
state.push({ |
|
|
while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } |
|
|
type: 'softbreak' |
|
|
|
|
|
}); |
|
|
state.pos = pos; |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (pmax > 0 && state.pending.charCodeAt(pmax) === 0x20) { |
|
|
} else { |
|
|
state.pending = state.pending.replace(/ +$/, ''); |
|
|
state.push({ |
|
|
|
|
|
type: 'softbreak' |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
state.pending += '\n'; |
|
|
|
|
|
|
|
|
|
|
|
pos++; |
|
|
pos++; |
|
|
// skip spaces
|
|
|
|
|
|
|
|
|
// skip heading spaces for next line
|
|
|
while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } |
|
|
while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } |
|
|
|
|
|
|
|
|
state.pos = pos; |
|
|
state.pos = pos; |
|
|