1.0.1 • Published 6 years ago

expressive-js-config v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
6 years ago

expressive-js-config

Expressive JS config is a configuration format and parser that allows config files to build up with a syntax extrememly similar to javascript, allowing inline comments and expressions (Which update as other values change) to be defined in the config.

Getting Started

npm install expressive-js-config

const parse = require('expressive-js-config')

const obj = parse('foo: "bar", hello: "world"', {})

obj in this case will be an object with 2 properties foo and hello. If the parser is unable to parse the content, it will attempt to wrap the content in { and } to parse an object. If this also fails it will attempt [ and ] to attempt as an array.

Expressions

Expressions are attached to the resultant objects as accessors. If they are surrounded by an outer static() call, they will only be exeucted once, and the same value / Error returned on every subsequent access.

Setters

When set, expression values become constant and are no longer affected by changes to dependent properties

reset()

The reset function is attached to the property set accessor will remove any previous set override, allowing the expression to act as though it had never been overridden.

Valid code blocks

The following code blocks are permitted for use in expressions:

  • ConditionalExpression
  • ObjectExpression
  • BinaryExpression
  • MemberExpression
  • UnaryExpression
  • ArrayExpression
  • TemplateLiteral
  • TemplateElement
  • CallExpression
  • ThisExpression
  • NewExpression
  • Identifier
  • Property
  • Literal

Any other encountered code blocks will cause an exception

Options

The following options are available

id

If an id property with a string value is passed as an option, any parsed object with a property named for the supplied value, that object will be registered with the contextual lookup allowing that object to be referenced in expressions with it's given name.

errorContext

The error context property will be injected into any error messages generated by the expression or parsing.

context

context may either be an object in which case the properties on that object will be available as identifiers to expressions. Or context may be a function in which case it will be called to lookup any identifiers.

context.register(id, obj)

If context is a function, an optional register function may be attached to register objects which have the relevant id property into the context for use with expressions