Skip to content

ryanve/eol

Repository files navigation

Newline character converter node module for JavaScript or TypeScript

  • npm install eol
  • let eol = require("eol")
  • import eol from "eol"

eol.auto(text)

  • Normalize line endings in text to match the current operating system
  • Returns string with line endings normalized to \r\n or \n

eol.crlf(text)

  • Normalize line endings in text to CRLF (Windows, DOS)
  • Returns string with line endings normalized to \r\n

eol.lf(text)

  • Normalize line endings in text to LF (Unix, OS X)
  • Returns string with line endings normalized to \n

eol.cr(text)

  • Normalize line endings in text to CR (Mac OS)
  • Returns string with line endings normalized to \r

eol.dub(text)

eol.before(text)

  • Add linebreak before text
  • Returns string with linebreak added before text
  • Uses eol.auto linebreak
  • eol.lf(eol.before(text))

eol.after(text)

  • Add linebreak after text
  • Returns string with linebreak added after text
  • Uses eol.auto linebreak
  • eol.lf(eol.after(text))

eol.match(text)

  • Detect or inspect linebreaks in text
  • Returns array of matched linebreaks

eol.split(text)

  • Split text by newline
  • Returns array of lines

Joining

Coercing normalizers to string yields the appropriate character...useful glue for joining

String(eol.lf) // "\n"
eol.split(text).join(eol.auto) // === eol.auto(text)
eol.split(text).filter(line => line).join(eol.auto) // text joined after removing empty lines
eol.split(text).slice(-3).join(eol.auto) // last 3 lines joined

Matching

Detect or inspect via match

eol.match(" ") // []
eol.match("world\nwide\nweb") // ["\n","\n"]

Dubbing

Generate alternate normalizers

let extra = eol.dub("\n\n\n")
extra("...")
let huh = eol.dub("???")
huh("...")

modularitY

let eol = require("eol")
let edit = require("edit-file")

edit("sample.txt", eol.lf)
let eol = require("eol")
let map = require("map-file")

map({
  from: "from.txt",
  to: "to.txt",
  map: eol.lf
})
let ssv = require("ssv")
let eol = require("eol")

let deep = eol.split("spaced.txt").map(ssv.split)

Yours

Have an eol sample to share?

Then please do 🧪 🧪 🧪 🧪

MIT License

∞/0