recital / core / src / pipeline / 04-tokens / plugins / newlines.ts
newlines.ts
Raw
/**
 * Copyright (c) 2022 Amorphous
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

import { StringParserPlugin } from '../../../types'
import eol from 'eol'

export const parseNewlines: StringParserPlugin = (raw: string): string => {
	const lfRaw = eol.lf(raw)
	const intermediate = lfRaw.replace(/\n\n/gm, '\n').replace(/\n/gm, '\n\n')
	return intermediate.replace(/\n\n\n+/gm, '\n\n')
}