]> git.openstreetmap.org Git - nominatim.git/blob - lib-lua/taginfo.lua
convert import styles to themepark
[nominatim.git] / lib-lua / taginfo.lua
1 -- Prints taginfo project description in the standard output
2 --
3
4 -- create fake "osm2pgsql" table for flex-base, originally created by the main C++ program
5 osm2pgsql = {}
6 function osm2pgsql.define_table(...) end
7
8 -- provide path to flex-style lua file
9 package.path = arg[0]:match("(.*/)") .. "?.lua;" .. package.path
10 local flex = require('import-extratags')
11 local json = require ('dkjson')
12
13
14 ------------ helper functions ---------------------
15
16 function get_key_description(key, description)
17     local desc = {}
18     desc.key = key
19     desc.description = description
20     set_keyorder(desc, {'key', 'description'})
21     return desc
22 end
23
24 -- Sets the key order for the resulting JSON table
25 function set_keyorder(table, order)
26     setmetatable(table, {
27         __jsonorder = order
28     })
29 end
30
31
32 -- Prints the collected tags in the required format in JSON
33 function print_taginfo()
34     local tags = {}
35
36     for _, k in ipairs(flex.TAGINFO_MAIN.keys) do
37         local desc = get_key_description(k, 'POI/feature in the search database')
38         if flex.TAGINFO_MAIN.delete_tags[k] ~= nil then
39             desc.description = string.format('%s (except for values: %s).', desc.description,
40                                 table.concat(flex.TAGINFO_MAIN.delete_tags[k], ', '))
41         end
42         table.insert(tags, desc)
43     end
44
45     for k, _ in pairs(flex.TAGINFO_NAME_KEYS) do
46         local desc = get_key_description(k, 'Searchable name of the place.')
47         table.insert(tags, desc)
48     end
49     for k, _ in pairs(flex.TAGINFO_ADDRESS_KEYS) do
50         local desc = get_key_description(k, 'Used to determine the address of a place.')
51         table.insert(tags, desc)
52     end
53
54     local format = {
55         data_format = 1,
56         data_url = 'https://nominatim.openstreetmap.org/taginfo.json',
57         project = {
58             name = 'Nominatim',
59             description = 'OSM search engine.',
60             project_url = 'https://nominatim.openstreetmap.org',
61             doc_url = 'https://nominatim.org/release-docs/develop/',
62             contact_name = 'Sarah Hoffmann',
63             contact_email = 'lonvia@denofr.de'
64         }
65     }
66     format.tags = tags
67
68     set_keyorder(format, {'data_format', 'data_url', 'project', 'tags'})
69     set_keyorder(format.project, {'name', 'description', 'project_url', 'doc_url',
70                     'contact_name', 'contact_email'})
71
72     print(json.encode(format))
73 end
74
75 print_taginfo()