multi-ini
An ini-file parser which supports multi line, multiple levels and arrays to get a maximum of compatibility with Zend config files.
Last updated 5 years ago by mgeppert .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install multi-ini 
SYNC missed versions from official npm registry.

multi-ini Build Status Coverage Status

Join the chat at https://gitter.im/evangelion1204/multi-ini

An ini-file parser which supports multi line, multiple levels and arrays to get a maximum of compatibility with Zend config files.

Install

npm install multi-ini

Usage

ini = require('multi-ini');
content = ini.read(file);
content.section.key = value;
ini.write(file, content);

Options

Following options are available:

  • encoding ['utf8'] - directly passed to readFileSync
  • keep_quotes [false] - does not strip quotes around values
  • filters - predefined lowercase, uppercase, trim, constants, boolean

Examples

encoding

ini = require('multi-ini');
content = ini.read(file, {encoding: 'utf8'});
content.section.key = value;
ini.write(file, content, {encoding: 'utf8'});

keep_quotes

This option is by default off to be backward compatible, if you ever need the value containing the quotes then use this.

key="value"

Enabling this option will result in "value" instead of value.

ini = require('multi-ini');
content = ini.read(file, {keep_quotes: true});

This will also affect the Serializer and serialized values. Using it will not quote anything automatically.

{
    production: {
        quoted: '"quoted"',
        not_quoted: 'not_quoted'
    }
}

Will result in a ini like

[production]
quoted="quoted"
not_quotes=not_quoted

filters

MultiIni = require('multi-ini');
ini = new MultiIni.Class({
    filters: [MultiIni.filters.lowercase]
});
content = ini.read(file);

Replacing constants

MultiIni = require('multi-ini');
ini = new MultiIni.Class({
  constants: {'CONSTANT': 'replacement'},
  filters: [MultiIni.filters.constants]
});
content = ini.read(file);

Define a custom filter

MultiIni = require('multi-ini');
ini = new MultiIni.Class({
    filters: [
        function (value) {
            return "Prepend " + value;
        }
    ]
});
content = ini.read(file);

line_breaks

Either unix or windows for line breaks.

ini = require('multi-ini');
content = ini.read(file, {line_breaks: 'windows'});
content.section.key = value;

Parser

It's also possible to parse a ini file from an array of strings.

ini = require('multi-ini');
parser = new ini.Parser();
content = parser.parse(lines);

Serializer

Like parsing it's also possible to serialize an ini object to a string.

ini = require('multi-ini');
serializer = new ini.Serializer();
content = serializer.serialize({
    production: {
        base_url: 'https://google.com'
    }
});

Changelog

2.1.2

  • Fixed prototype pollution by ignoring constructor and prototype

2.1.1

  • Fixed prototype pollution by ignoring __proto__

1.0.1

  • Fixed bug with keep_quotes ignored when writing files

1.0.0

  • First full release keeping backwards compatibility

0.5.2

  • Introduced option for line breaks

0.5.1

  • Fixed a bug where single lines of multilines got trimmed

0.5.0

  • Added support for filters per value

0.4.0

  • Refactoring of the basic implementation to be no longer a singleton
  • Fixed a bug with wrong detected escaped double quotes

0.2.5

Now correctly reads

key= example

to the value "example" instead of "** example**"

0.2.4

Implemented support for constants and removed a lot of bugs and the options ignore_invalid and oninvalid, this may be introduced again but are currently not necessary.

0.2.3

Fixed a bug that the module was not recognized as a module by Node.

Current Tags

  • 2.1.2                                ...           latest (5 years ago)

20 Versions

  • 2.1.2                                ...           5 years ago
  • 2.1.1                                ...           5 years ago
  • 2.1.0                                ...           6 years ago
  • 2.0.0                                ...           8 years ago
  • 1.0.1                                ...           9 years ago
  • 1.0.0                                ...           9 years ago
  • 0.5.2                                ...           11 years ago
  • 0.5.1                                ...           11 years ago
  • 0.5.0                                ...           11 years ago
  • 0.4.1                                ...           11 years ago
  • 0.4.0                                ...           12 years ago
  • 0.2.5                                ...           12 years ago
  • 0.2.4                                ...           12 years ago
  • 0.2.3                                ...           12 years ago
  • 0.2.2                                ...           12 years ago
  • 0.2.1                                ...           12 years ago
  • 0.1.2                                ...           12 years ago
  • 0.1.1                                ...           12 years ago
  • 0.1.0                                ...           12 years ago
  • 0.0.1                                ...           12 years ago

Copyright 2013 - present © cnpmjs.org | Home |