A TOML parser that produces output compatible with ESLint.
- Converts TOML text to AST.
- Support for TOML 1.0.0
npm install --save-dev toml-eslint-parser
Use .eslintrc.*
file to configure parser. See also: https://eslint.org/docs/user-guide/configuring.
Example .eslintrc.js:
module.exports = {
"overrides": [
{
"files": ["*.toml"],
"parser": "toml-eslint-parser"
}
]
}
- AST.md is AST specification.
- keys-order.ts is an example.
- You can see the AST on the Online DEMO.
Example:
import type { AST } from "toml-eslint-parser"
import { parseTOML, getStaticTOMLValue } from "toml-eslint-parser"
const code = `
# This is a TOML document
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00
[database]
enabled = true
ports = [ 8001, 8001, 8002 ]
data = [ ["delta", "phi"], [3.14] ]
temp_targets = { cpu = 79.5, case = 72.0 }
[servers]
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"
[servers.beta]
ip = "10.0.0.2"
role = "backend"
`
const ast: AST.TOMLProgram = parseTOML(code)
console.log(ast)
// {
// type: 'Program',
// body: [
// {
// type: 'TOMLTopLevelTable',
// body: [
// {
// type: 'TOMLKeyValue',
// key: { /* ... */ },
// value: { /* ... */ },
// /* ... */
// },
// {
// type: 'TOMLTable',
// kind: 'standard',
// key: { /* ... */ },
// body: [ /* ... */ ],
// /* ... */
// },
// /* ... */
// ]
// /* ... */
// }
// ],
// tokens: [ /* ... */ ],
// comments: [
// {
// type: 'Block',
// value: ' This is a TOML document',
// // ...
// }
// ],
// }
const value = getStaticTOMLValue(ast)
console.log(value)
// {
// title: 'TOML Example',
// owner: { name: 'Tom Preston-Werner', dob: 1979-05-27T15:32:00.000Z },
// database: {
// enabled: true,
// ports: [ 8001, 8001, 8002 ],
// data: [ [ /* ... */ ], [ /* ... */ ] ],
// temp_targets: { cpu: 79.5, case: 72 }
// },
// servers: {
// alpha: { ip: '10.0.0.1', role: 'frontend' },
// beta: { ip: '10.0.0.2', role: 'backend' }
// }
// }
This project uses files from BurntSushi/toml-test and iarna/toml-spec-tests repositories for testing.
- eslint-plugin-jsonc ... ESLint plugin for JSON, JSON with comments (JSONC) and JSON5.
- eslint-plugin-yml ... ESLint plugin for YAML.
- eslint-plugin-toml ... ESLint plugin for TOML.
- eslint-plugin-json-schema-validator ... ESLint plugin that validates data using JSON Schema Validator.
- jsonc-eslint-parser ... JSON, JSONC and JSON5 parser for use with ESLint plugins.
- yaml-eslint-parser ... YAML parser for use with ESLint plugins.