osm-compare
Compare functions are small atomic functions that are designed identify what changed during a feature edit on OpenStreetMap. Compare functions can be broadly split up into two categories:
- Property (tags) checking compare function
- Geometry checking compare functions
Compare functions take as inputs the following:
oldVersion- GeoJSON of the feature's old versionnewVersion- GeoJSON of the feature's new versioncallback- A function to call after processing.
Compare functions output the following:
error- Error if any during processing ornull.result- Object containing key value pairs representing findings of the compare function or an empty object.
# Format of compare function result where value can be primary data types or objects
{
'result:comparator_name': value
}
# Format of compare function if no result, (default)
{
'result:comparator_name': {}
}
How do I create a new compare function?
- Clone this repository with
git clone https://github.com/mapbox/osm-compare cd osm-comparenpm install- Check if all tests pass before making your changes with
npm test - Create a new test fixture in the directory
tests/fixtures/ - Create a new compare function in the directory
comparators/(check comparators/example.js for format) - Test your new compare function with
npm test - Add your new comparator to
index.js - Along with a brief description of the comparator, add it to comparators/README.md
- Push to a new branch on Github and create a Pull Request
How do I test a single compare function against a new fixture?
cd osm-compare/tests/- Create new fixture file in
tests/fixtures/folder (check tests/fixtures/example.json for format) - Test your fixture with
node tests/test_compare_function.js tests/fixtures/example.json
How do I build an npm package?
- We use Semantic Versioning Specification for versioning releases.
- Create an appropriate version of the npm package with
npm version [major|minor|patch]. - Push the package tag commit with
git push --tags - Publish the NPM package with
npm publish