UNPKG

newline-iterator

Version:
66 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, /** * Create a newline iterator recognizing CR, LF, and CRLF using the Symbol.iterator interface * * @param string The string to iterate through * * ```typescript * import newlineIterator from "newline-iterator"; * * const iterator = newlineIterator("some\r\nstring\ncombination\r"); * const results = []; * for (const line of iterator) results.push(line); * console.log(results); // ["some", "string", "combination"]; * ``` */ "default", { enumerable: true, get: function() { return newlineIterator; } }); function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var REGEX_NEW_LINE = /\r?\n|\r/g; var root = typeof window === 'undefined' ? global : window; // biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy var Symbol = typeof root.Symbol === 'undefined' ? { iterator: undefined } : root.Symbol; function newlineIterator(string) { var lines = string.split(REGEX_NEW_LINE).reverse(); var iterator = _define_property({ next: function next() { if (lines.length === 0) return { value: null, done: true }; var value = lines.pop(); if (lines.length === 0 && value.length === 0) return { value: null, done: true }; return { value: value, done: false }; } }, Symbol.iterator, function() { return this; }); return iterator; } /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }