modules/entities/schema_manager.js (37 lines of code) (raw):
import { groupManager } from './group_manager';
function entitySchemaManager() {
var manager = {};
manager.canSnapNodeWithTagsToNode = function(nodeTags, node, graph) {
var parentWays = graph.parentWays(node);
var vertexGroups = groupManager.groupsWithVertexOf.filter(function(group) {
return group.matchesTags(nodeTags, 'vertex');
});
if (vertexGroups.length === 0) return true;
for (var j in parentWays) {
var way = parentWays[j];
for (var i in vertexGroups) {
var vertexGroup = vertexGroups[i];
if (groupManager.group(vertexGroup.vertexOf).matchesTags(way.tags, way.geometry(graph))) {
return true;
}
}
}
return false;
};
manager.canAddNodeWithTagsToWay = function(nodeTags, way, graph) {
var vertexGroups = groupManager.groupsWithVertexOf.filter(function(group) {
return group.matchesTags(nodeTags, 'vertex');
});
if (vertexGroups.length === 0) return true;
for (var i in vertexGroups) {
var vertexGroup = vertexGroups[i];
if (groupManager.group(vertexGroup.vertexOf).matchesTags(way.tags, way.geometry(graph))) {
return true;
}
}
return false;
};
return manager;
}
var schemaManager = entitySchemaManager();
// use a singleton
export { schemaManager };