Reverse internal left/right/forward/backward keyparts

(closes #6235)

Previously only trailing keyparts would reverse:
 `cycleway:left` ⟺  `cycleway:right`
Now it can do internal keyparts too:
 `cycleway:left:surface` ⟺  `cycleway:right:surface`
This commit is contained in:
Bryan Housel
2019-04-29 21:13:18 -04:00
parent f9eacc9507
commit bd2490a965
2 changed files with 16 additions and 1 deletions
+5 -1
View File
@@ -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',
+11
View File
@@ -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]);