An open API service indexing awesome lists of open source software.

https://github.com/fabiospampinato/ini-simple-parser

A simple, fast and configurable INI parser.
https://github.com/fabiospampinato/ini-simple-parser

editorconfig ini parser simple

Last synced: 2 months ago
JSON representation

A simple, fast and configurable INI parser.

Awesome Lists containing this project

README

          

# INI Simple Parser

A simple, fast and configurable INI parser.

## Install

```sh
npm install ini-simple-parser
```

## Usage

The following options are supported:

```ts
type Options = {
inferBooleans?: boolean, // Interpret true/TRUE/false/FALSE as booleans
inferNulls?: boolean, // Interpret null/NULL as nulls
inferNumbers?: boolean, // Interpret some strings that can be parsed as numbers as numbers
inferStrings?: boolean, // Automatically remove wrapping quotes from strings
inlineComments?: boolean // Automatically remove inline comments
};
```

This is how you'd use it:

```ts
import parse from 'ini-simple-parser';

// Let's define some initial string to parse

const INPUT = `
root=true
notRoot="false"

; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Widgets Inc.

[database]
# use IP address in case network name resolution is not working
server = 192.0.2.62
port = 143
file = "payroll.dat"
extra1 = something ; Inline comment
extra2 = something else # Inline comment
null = null
nil = "0"
`;

// Let's parse it normally, without setting any options

const parsed = parse ( INPUT );
// {
// root: 'true',
// notRoot: '"false"',
// owner: {
// name: 'John Doe',
// organization: 'Acme Widgets Inc.'
// },
// database: {
// server: '192.0.2.62',
// port: '143',
// file: '"payroll.dat"',
// extra1: 'something ; Inline comment',
// extra2: 'something else # Inline comment',
// null: 'null',
// nil: '"0"'
// }
// }

// Let's parse with every option enabled

const parsed = parse ( INPUT, {
inferBooleans: true,
inferNulls: true,
inferNumbers: true,
inferStrings: true,
inlineComments: true
});
// {
// root: true,
// notRoot: 'false',
// owner: {
// name: 'John Doe',
// organization: 'Acme Widgets Inc.'
// },
// database: {
// server: '192.0.2.62',
// port: 143,
// file: 'payroll.dat',
// extra1: 'something',
// extra2: 'something else',
// null: null,
// nil: '0'
// }
// }
```

## License

MIT © Fabio Spampinato