gsolver

0.9.0 • Public • Published

solver

This library is a small utility that it's used by simple-config-loader 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.

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

Getting Started

Install the module with: npm install solver

Examples

Check out the example directory in the github repository.

A quick example:

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.

License

Copyright (c) 2015 goliatone
Licensed under the MIT license.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.9.0
    6
    • latest

Version History

Package Sidebar

Install

npm i gsolver

Weekly Downloads

16

Version

0.9.0

License

none

Unpacked Size

18.8 kB

Total Files

15

Last publish

Collaborators

  • goliatone