59 lines
1.4 KiB
Lua
59 lines
1.4 KiB
Lua
local Directional = {}
|
|
|
|
-- return [forward,backward] values for a specific tag.
|
|
-- e.g. for maxspeed search forward:
|
|
-- maxspeed:forward
|
|
-- maxspeed
|
|
-- and backward:
|
|
-- maxspeed:backward
|
|
-- maxspeed
|
|
|
|
function Directional.get_values_by_key(way,data,key)
|
|
local forward = way:get_value_by_key(key .. ':forward')
|
|
local backward = way:get_value_by_key(key .. ':backward')
|
|
|
|
if forward and backward then
|
|
return forward, backward
|
|
end
|
|
|
|
local common = way:get_value_by_key(key)
|
|
return forward or common,
|
|
backward or common
|
|
end
|
|
|
|
-- return [forward,backward] values, searching a
|
|
-- prioritized sequence of tags
|
|
-- e.g. for the sequence [maxspeed,advisory] search forward:
|
|
-- maxspeed:forward
|
|
-- maxspeed
|
|
-- advisory:forward
|
|
-- advisory
|
|
-- and for backward:
|
|
-- maxspeed:backward
|
|
-- maxspeed
|
|
-- advisory:backward
|
|
-- advisory
|
|
|
|
function Directional.get_values_by_set(way,data,keys)
|
|
local forward, backward
|
|
for i,key in ipairs(keys) do
|
|
if not forward then
|
|
forward = way:get_value_by_key(key .. ':forward')
|
|
end
|
|
if not backward then
|
|
backward = way:get_value_by_key(key .. ':backward')
|
|
end
|
|
if not forward or not backward then
|
|
local common = way:get_value_by_key(key)
|
|
forward = forward or common
|
|
backward = backward or common
|
|
end
|
|
if forward and backward then
|
|
break
|
|
end
|
|
end
|
|
|
|
return forward, backward
|
|
end
|
|
|
|
return Directional |