UNPKG

hkopendata

Version:

Access different Opendata API and data in Hong Kong

75 lines (67 loc) 1.92 kB
let _LANG = {}; function GetAvailableLang(item) { return Object.keys(item).filter(v => /^(en|tc|sc)$/i.test(v)); } function GetRaw(name) { name = name || "common"; let locale = {}; try { name = name.replace(/\.\.\/|\.\//g, ""); let LANG = _LANG[name]; if (!LANG) { LANG = require(`./${name}.json`); _LANG[name] = LANG; } locale = LANG; } catch (e) {} return locale; } function Get(name, lang) { name = name || "common"; lang = lang || "en"; let locale = {}; try { name = name.replace(/\.\.\/|\.\//g, ""); let LANG = _LANG[name]; if (!LANG) { LANG = require(`./${name}.json`); _LANG[name] = LANG; } for (let key in LANG) { let tLang = lang; if (typeof LANG[key] !== "string" && !(lang in LANG[key])) { tLang = GetAvailableLang(LANG[key])[0]; } if (typeof LANG[key] === "string") locale[key] = LANG[key] else if (Array.isArray(LANG[key][tLang])) locale[key] = LANG[key][tLang][0] else locale[key] = LANG[key][tLang] } } catch (e) {} return locale; } function GetPackage(name, lang) { name = name || "common"; if (/^(bus|rail|ferry)$/.test(name)) name = "transport"; if (/^airline$/.test(name)) name = "airport"; let arr = ["common", "week", "weather", "coordinate", name]; if (name == "ogcio") arr.push("geo"); return GetMulti(arr.filter((v, i, l) => l.indexOf(v) == i), lang); } function GetMulti(arr, lang) { arr = arr || []; let locale = {}, list = arr.map(v => Get(v, lang)); list.map(pack => { for (let key in pack) { locale[key] = pack[key]; } }) return locale; } module.exports = { Get, GetRaw, GetPackage, GetMulti, GetAvailableLang, }