Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/goliatone/gsolver
https://github.com/goliatone/gsolver
configuration interpolation
Last synced: 7 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/goliatone/gsolver
- Owner: goliatone
- License: mit
- Created: 2015-06-22T01:21:23.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-03-03T06:27:13.000Z (almost 2 years ago)
- Last Synced: 2025-01-17T03:22:46.883Z (29 days ago)
- Topics: configuration, interpolation
- Language: JavaScript
- Size: 59.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# solver
This library is a small utility that it's used by [simple-config-loader][scl] to solve dependencies in configuration files.
It will resolve an object's templated properties which might reference other properties in the same object or in a provided context object.
Templated properties are strings that follow the syntax `${property}`. Properties can be nested within objects, `${property.name}`.
You reference objects or properties by their keypath. A keypath is a string representing the location of a piece of data.
```js
var data = {
user: {
name: 'Peperone',
address: {
city: 'New York'
}
}
};
```You can reference strings or objects using two different syntaxes:
* Object interpolation: `@{user}` or `@{user.address}`
* String interpolation: `${user.name}` or `${user.address.city}`[![Build Status](https://secure.travis-ci.org/goliatone/gsolver.png)](http://travis-ci.org/goliatone/gsolver)
## Getting Started
Install the module with: `npm install solver`
## Examples
Check out the [example][examples] directory in the github repository.A quick example:
```js
var Solver = require('..');var context = {
nick: 'Peperone',
greeting: 'Hello',
user: {
name: 'Pepe',
address: {
city: 'New York'
}
}
};var re = new Solver();
var output = re.solve({
strings: {
message: '${greeting} ${user.name}! Still living in ${user.address.city}?',
welcome: '${nick}, how are you?'
},
references: {
user: '@{user}'
}
}, context);console.log(output.strings.message); //Hello Pepe! Still living in New York?
console.log(output.strings.welcome); // Peperone, how are you?console.log(output.references.user); // { name: 'Pepe', address: { city: 'New York' } }
```## Documentation
To see how it's being used, check [simple-config-loader][scl].## License
Copyright (c) 2015 goliatone
Licensed under the MIT license.[examples]:https://github.com/goliatone/gsolver/tree/master/example
[scl]:https://github.com/goliatone/simple-config-loader