# line-ending-corrector

> Line Ending Corrector - An utility that makes sure your files have consistent line endings.

Latest version **1.0.1** (published 2017-12-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install line-ending-corrector
pnpm add line-ending-corrector
yarn add line-ending-corrector
bun add line-ending-corrector
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2017-12-03 |
| First published | 2015-10-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 6 |
| Author | Sayem Shafayet |
| Maintainers | ishafayet |
| Keywords | Utility, Line, Ending, CRLF, LF, Linefeed, Newline |

## Links

- npm: https://www.npmjs.com/package/line-ending-corrector
- Repository: https://github.com/iShafayet/line-ending-corrector
- Issues: https://github.com/iShafayet/line-ending-corrector/issues
- npm.io page: https://npm.io/package/line-ending-corrector

## Dependencies (1)

- [coffeescript](https://npm.io/package/coffeescript.md) ^2.0.3

## Alternatives

- [localforage](https://npm.io/package/localforage.md) — 6.2M weekly downloads
- [localforage-observable](https://npm.io/package/localforage-observable.md) — 30.8K weekly downloads
- [@y/y](https://npm.io/package/@y/y.md) — 30.1K weekly downloads
- [@metaobjectsdev/render](https://npm.io/package/@metaobjectsdev/render.md) — 3.5K weekly downloads
- [@ledgerhq/coin-algorand](https://npm.io/package/@ledgerhq/coin-algorand.md) — 1.1K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2017-12-03
- 1.0.0 — 2015-10-04
- 0.0.4 — 2015-10-04
- 0.0.3 — 2015-10-03
- 0.0.2 — 2015-10-03
- 0.0.1 — 2015-10-03

## README

# line-ending-corrector
Line Ending Corrector - A utility that makes sure your files have consistent line endings.

It converts all those pesky `\r\n` (a.k.a `CRLF`) line endings in Microsoft Windows operating systems into the more commonly used and recognized `\n` (a.k.a `LF`). Though it lets you do the opposite as well ( converting `LF` to `CRLF` ). It supports `\r` (a.k.a `CR`) as well for the sake of completion.

You should definitely have this in your build process especially if someone in your team works from a non UNIX system.

# Features

* Supports recusive mode for all files in a directory
* Can be used from the command line using `lec`. [See Here](https://github.com/iShafayet/line-ending-corrector)
* Has a gulp module
* Exposes a programmatic API.

# Installation

For using programmatically

```bash
[sudo] npm install line-ending-corrector
```
    
# Programmatic Usage

## To require

CoffeeScript
```CoffeeScript
{ LineEndingCorrector } = require 'line-ending-corrector'
```

JavaScript
```JavaScript
LineEndingCorrector = require('line-ending-corrector').LineEndingCorrector
```

## Methods

### LineEndingCorrector.correctSync(contents, options)
returns `[ wasAltered Boolean, modifiedContents String ]`

CoffeeScript
```CoffeeScript
contentsOfSomeFile = arbitaryFunctionToLoadFile()
[ wasAltered, modifiedContents ] = LineEndingCorrector.correctSync contentsOfSomeFile
if wasAltered
  arbitaryFunctionToSaveFile modifiedContents
```

JavaScript
```JavaScript
contentsOfSomeFile = arbitaryFunctionToLoadFile();
res = LineEndingCorrector.correctSync(contentsOfSomeFile);
if(res.wasAltered) {
  arbitaryFunctionToSaveFile(res.modifiedContents);
}
```

ES6
```JavaScript
contentsOfSomeFile = arbitaryFunctionToLoadFile();
{ wasAltered, modifiedContents } = LineEndingCorrector.correctSync(contentsOfSomeFile);
if(wasAltered) {
  arbitaryFunctionToSaveFile(modifiedContents);
}
```

### LineEndingCorrector.correctStream(contentStream, options)
returns `modifiedContentStream stream.Readable`

CoffeeScript
```CoffeeScript
contentStream = arbitaryFunctionToLoadFileAsStream()
modifiedContentStream = LineEndingCorrector.correctStream contentStream, { encoding: 'utf8', eolc: 'LF'}
arbitaryFunctionToSaveFileFromStream modifiedContents
```


### LineEndingCorrector.correct(content, options, callbackFunction)
`callbackFunction` is called with `(err Error, wasAltered boolean, modifiedContent String)`

CoffeeScript
```CoffeeScript
content = arbitaryFunctionToLoadFile()
LineEndingCorrector.correct content, { eolc: 'LF' }, (err, wasAltered, modifiedContent)=>
  throw err if err
  if wasAltered
    arbitaryFunctionToSaveFileFromStream modifiedContent
```

## Options

`eolc`
Desired End of Line character. can be `CR` (`\r`), `LF`(`\n`) (Default), `CRLF`(`\r\n`)

`encoding`
Any meaningful encoding that nodejs supports. Default `utf8`. It is advisable to use `utf8` since others are not tested by the devs.

# Gulp

See [gulp-line-ending-corrector](https://github.com/ishafayet/gulp-line-ending-corrector)

# Testing

You need [mocha](https://github.com/mochajs/mocha)

`npm test`


# Contributing

We actively check for issues even for the least used repositories (unless explicitly abandoned). All of our opensource repositories are being used in commercial projects by teamO4 or bbsenterprise. So, it is very likely that we will sort out important issues not long after they are posted.

Please create a github issue if you find a bug or have a feature request.

Pull requests are always welcome for any of our public repos.

---
_Source: https://npm.io/package/line-ending-corrector · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
