semver-select.js
Select an attribute of an object based on semver versioning
Current status
API is stable. All features tested and working.
What's it for
A few useful tools for when you need to select a function or other variable based on a semver version.
For example, if you are writing an app which interacts with an API which needs a different calling signature depending on it's version, you can use this to choose a function that implements the right interface for that API version.
Usage
semverSelect(version, choices)
Takes a list of choices as an object with semver match strings as the object's attributes.
Loops through choice
's attributes and returns the first matching result.
Returns undefined
if no match found.
var semverSelect = require('semver-select');
var fns = {
'^1.0.0': function(in) { return 'v1' },
'^2.0.0': function(in) { return 'v2' },
'*': function(in) { return 'other' }
};
semverSelect('1.0.2', fns)();
semverSelect('2.3.8', fns)();
semverSelect('4.0.0', fns)();
semverSelect.object(version, choicesObject)
Takes an object and maps the values of attributes to the semver-chosen choice.
semverSelect('2.3.8', {
monkey: {
'^1.0.0': 'v1',
'1.0.0 - 2.x.x': 'v2',
'*': 'other'
},
dinosaur: {
'^1.0.0': 'ver1',
'^2.0.0': 'ver2'
}
});
Tests
Use npm test
to run the tests. Use npm run cover
to check coverage.
Changelog
See changelog.md
Issues
If you discover a bug, please raise an issue on Github. https://github.com/overlookmotel/semver-select/issues
Contribution
Pull requests are very welcome. Please:
- ensure all tests pass before submitting PR
- add an entry to changelog
- add tests for new features
- document new functionality/API additions in README