123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Proceess '\n'
- 'use strict';
- var isSpace = require('../common/utils').isSpace;
- module.exports = function newline(state, silent) {
- var pmax, max, pos = state.pos;
- if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; }
- pmax = state.pending.length - 1;
- max = state.posMax;
- // ' \n' -> hardbreak
- // Lookup in pending chars is bad practice! Don't copy to other rules!
- // Pending string is stored in concat mode, indexed lookups will cause
- // convertion to flat mode.
- if (!silent) {
- if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {
- if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {
- state.pending = state.pending.replace(/ +$/, '');
- state.push('hardbreak', 'br', 0);
- } else {
- state.pending = state.pending.slice(0, -1);
- state.push('softbreak', 'br', 0);
- }
- } else {
- state.push('softbreak', 'br', 0);
- }
- }
- pos++;
- // skip heading spaces for next line
- while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; }
- state.pos = pos;
- return true;
- };
|