From 3e71dd56cd90915938f9d3fe433d53b69be8cd00 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Mon, 4 Feb 2013 17:20:06 -0500 Subject: [PATCH] Wipe out some tags entirely, refs #585 --- data/deprecated.js | 10 +++++++++- js/id/actions/deprecate_tags.js | 6 +++--- test/spec/actions/deprecate_tags.js | 7 +++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/data/deprecated.js b/data/deprecated.js index 53457c9f3..7cc6904ed 100644 --- a/data/deprecated.js +++ b/data/deprecated.js @@ -108,5 +108,13 @@ iD.data.deprecated = [ shop: 'supermarket', organic: 'only' } - } + }, + // entirely discarded tags + { old: { 'tiger:upload_uuid': '*' } }, + { old: { 'tiger:tlid': '*' } }, + { old: { 'tiger:source': '*' } }, + { old: { 'tiger:separated': '*' } }, + { old: { 'geobase:datasetName': '*' } }, + { old: { 'geobase:uuid': '*' } }, + { old: { 'sub_sea:type': '*' } } ]; diff --git a/js/id/actions/deprecate_tags.js b/js/id/actions/deprecate_tags.js index 8f7a56404..68b9f9d2e 100644 --- a/js/id/actions/deprecate_tags.js +++ b/js/id/actions/deprecate_tags.js @@ -10,19 +10,19 @@ iD.actions.DeprecateTags = function(entityId) { rule = iD.data.deprecated[i]; var match = _.pairs(rule.old)[0], - replacements = _.pairs(rule.replace); + replacements = rule.replace ? _.pairs(rule.replace) : null; if (entity.tags[match[0]] && match[1] === '*') { var value = entity.tags[match[0]]; - if (!newtags[replacements[0][0]]) { + if (replacements && !newtags[replacements[0][0]]) { newtags[replacements[0][0]] = value; } delete newtags[match[0]]; change = true; } else if (entity.tags[match[0]] === match[1]) { - newtags = _.assign({}, rule.replace, _.omit(newtags, match[0])); + newtags = _.assign({}, rule.replace || {}, _.omit(newtags, match[0])); change = true; } } diff --git a/test/spec/actions/deprecate_tags.js b/test/spec/actions/deprecate_tags.js index 4f202e97f..61d1da4fb 100644 --- a/test/spec/actions/deprecate_tags.js +++ b/test/spec/actions/deprecate_tags.js @@ -29,6 +29,13 @@ describe('iD.actions.DeprecateTags', function () { expect(graph.entity(entity.id).tags).to.eql(undeprecated); }); + it('wipes out tags that should be entirely removed', function () { + var entity = iD.Entity({ tags: { 'tiger:source': 'foo' } }), + graph = iD.actions.DeprecateTags(entity.id)(iD.Graph([entity])), + undeprecated = { }; + expect(graph.entity(entity.id).tags).to.eql(undeprecated); + }); + it('replaces keys', function () { var entity = iD.Entity({ tags: { power_rating: '1 billion volts' } }), graph = iD.actions.DeprecateTags(entity.id)(iD.Graph([entity])),