1
0
mirror of https://github.com/sasjs/lint.git synced 2025-12-10 17:34:36 +00:00
Files
lint/src/utils/splitText.ts
2022-12-29 00:47:54 +05:00

27 lines
932 B
TypeScript

import { LintConfig } from '../types/LintConfig'
import { LineEndings } from '../types/LineEndings'
/**
* Splits the given content into a list of lines, regardless of CRLF or LF line endings.
* @param {string} text - the text content to be split into lines.
* @returns {string[]} an array of lines from the given text
*/
export const splitText = (text: string, config: LintConfig): string[] => {
if (!text) return []
const expectedLineEndings =
config.lineEndings === LineEndings.LF ? '\n' : '\r\n'
const incorrectLineEndings = expectedLineEndings === '\n' ? '\r\n' : '\n'
text = text.replace(
new RegExp(incorrectLineEndings, 'g'),
expectedLineEndings
)
// splitting text on '\r\n' was causing some problem
// as it was retaining carriage return at the end of each line
// so, removed the carriage returns from text and splitted on line feed (lf)
return text.replace(/\r/g, '').split(/\n/)
}