From dc9f29fd0915fb0cdd684f497706fb4076656f39 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 18 Sep 2015 10:22:39 -0400 Subject: [PATCH] Use stricter regex for localized field key (closes #2658) Now it will no longer match `old_name` --- js/id/ui/preset/localized.js | 10 +++++----- test/spec/ui/preset/localized.js | 9 +++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/js/id/ui/preset/localized.js b/js/id/ui/preset/localized.js index c7d0e99b0..f8d55e9ff 100644 --- a/js/id/ui/preset/localized.js +++ b/js/id/ui/preset/localized.js @@ -209,11 +209,11 @@ iD.ui.preset.localized = function(field, context) { input.value(tags[field.key] || ''); - var postfixed = []; - for (var i in tags) { - var m = i.match(new RegExp(field.key + ':([a-zA-Z_-]+)$')); - if (m && m[1]) { - postfixed.push({ lang: m[1], value: tags[i]}); + var postfixed = [], k, m; + for (k in tags) { + m = k.match(/^(.*):([a-zA-Z_-]+)$/); + if (m && m[1] === field.key && m[2]) { + postfixed.push({ lang: m[2], value: tags[k] }); } } diff --git a/test/spec/ui/preset/localized.js b/test/spec/ui/preset/localized.js index d02a0dc1a..fb412548f 100644 --- a/test/spec/ui/preset/localized.js +++ b/test/spec/ui/preset/localized.js @@ -89,6 +89,15 @@ describe('iD.ui.preset.localized', function() { happen.once(selection.selectAll('.localized-lang').node(), {type: 'change'}); }); + it("ignores similar keys like `old_name`", function() { + var localized = iD.ui.preset.localized(field, {}); + selection.call(localized); + localized.tags({'old_name:de': 'Value'}); + + expect(selection.selectAll('.localized-lang').empty()).to.be.ok; + expect(selection.selectAll('.localized-value').empty()).to.be.ok; + }); + it("removes the tag when the language is emptied", function() { var localized = iD.ui.preset.localized(field, {}); selection.call(localized);