conf-cfg-ini
Version:
encode and decode ini,conf,cfg files
96 lines (80 loc) • 3.1 kB
Markdown
# conf-cfg-ini
[](http://badge.fury.io/js/conf-cfg-ini)
[](https://travis-ci.org/loge5/conf-cfg-ini)
[](https://david-dm.org/loge5/conf-cfg-ini)
[](https://david-dm.org/loge5/conf-cfg-ini?type=dev)
**Encode and decode conf/cfg/ini-Files with Node.js**
loge5/conf-cfg-ini
There are already a lot of ini-parser on the npm repository.
But none of these fits all my needs.
So here is an attempt to create a very flexible but easy to use parser.
**Features**
- Linebreak detection (windows, unix, mac)
- Set custom identifiers for sections, comments and assignments
- line trim is optional
- set default value
- tested with mocha+chai
### Installation ###
```Shell
npm install conf-cfg-ini
```
### Usage ###
```JavaScript
//read config-String from file
var fs = require('fs');
var raw = fs.readFileSync('./test.ini');
var Config = require('conf-cfg-ini');
var config = new Config();
config.options.lineEnding = config.detectLineEnding(raw);
//decode to get a simple js object
var configObject = config.decode(raw);
//encode to get a config-String
var configString = config.encode(configObject);
```
Example Config:
```INI
[SectionA]
a=1
b=2
[SectionB]
bar=foo
```
will be decoded to:
```JSON
{
"SectionA": {
"a": "1",
"b": "2"
},
"SectionB": {
"bar": "foo"
}
}
```
### Options ###
There are two ways to set options:
```JavaScript
//set options at construction
var config = new Config({
lineEnding: "\r\n",
sectionOpenIdentifier: '[',
sectionCloseIdentifier: ']',
defaultValue: true,
assignIdentifier: "=",
commentIdentifiers: [";"],
trimLines: true
});
//or after construction
config.options.lineEnding = "\n";
```
| Option | Default | Description |
| ------------------------------ | ------------- | ---------------------------------------- |
| lineEnding | "\r\n" | Line ending (break) |
| sectionOpenIdentifier | "[" | First char of section line |
| sectionCloseIdentifier | "]" | Last char of section line |
| defaultValue | true | Default value for keys without value |
| assignIdentifier | "=" | String after key and before value |
| commentIdentifiers | [";"] | List of commentIdentifiers (strings) |
| trimLines | true | Ignore space |
| valueIdentifier | undefined | surroundings of values (key="value1") |
| ignoreMultipleAssignIdentifier | false | `A==B` would be read as `A=B` (usefull for tab/spaced files)|