diff --git a/modules/actions/reverse.js b/modules/actions/reverse.js index fc0d6faa3..a560abbc0 100644 --- a/modules/actions/reverse.js +++ b/modules/actions/reverse.js @@ -25,7 +25,11 @@ export function actionReverse(wayID, options) { [/:right$/, ':left'], [/:left$/, ':right'], [/:forward$/, ':backward'], - [/:backward$/, ':forward'] + [/:backward$/, ':forward'], + [/:right:/, ':left:'], + [/:left:/, ':right:'], + [/:forward:/, ':backward:'], + [/:backward:/, ':forward:'] ]; var valueReplacements = { left: 'right', diff --git a/test/spec/actions/reverse.js b/test/spec/actions/reverse.js index df1fd5ea9..6ed6ca10c 100644 --- a/test/spec/actions/reverse.js +++ b/test/spec/actions/reverse.js @@ -103,6 +103,17 @@ describe('iD.actionReverse', function () { expect(graph.entity(way.id).tags).to.eql({'cycleway:right': 'lane'}); }); + it('transforms *:right:*=* ⟺ *:left:*=*', function () { + var way = iD.osmWay({tags: {'cycleway:right:surface': 'paved'}}); + var graph = iD.coreGraph([way]); + + graph = iD.actionReverse(way.id)(graph); + expect(graph.entity(way.id).tags).to.eql({'cycleway:left:surface': 'paved'}); + + graph = iD.actionReverse(way.id)(graph); + expect(graph.entity(way.id).tags).to.eql({'cycleway:right:surface': 'paved'}); + }); + it('transforms *:forward=* ⟺ *:backward=*', function () { var way = iD.osmWay({tags: {'maxspeed:forward': '25'}}); var graph = iD.coreGraph([way]);