diff --git a/conf.js b/conf.js index c8406bd..014e5ac 100644 --- a/conf.js +++ b/conf.js @@ -28,7 +28,7 @@ const searchleader = "a" // See ./keys.js and ./completions.js util.rmMaps(keys.unmaps.mappings) util.rmSearchAliases(keys.unmaps.searchAliases) -util.processMaps(keys.maps, siteleader) +util.processMaps(keys.maps, keys.aliases, siteleader) util.processCompletions(completions, searchleader) module.exports = { siteleader, searchleader } diff --git a/keys.js b/keys.js index a84918d..3015d18 100644 --- a/keys.js +++ b/keys.js @@ -574,6 +574,36 @@ const maps = { } // Aliases -maps["en.wiktionary.org"] = maps["wikipedia.org"] +const aliases = { + "wikipedia.org": [ + // Wikimedia sites + "wiktionary.org", + "wikiquote.org", + "wikisource.org", + "wikimedia.org", + "mediawiki.org", + "wikivoyage.org", + "wikibooks.org", + "wikinews.org", + "wikiversity.org", + "wikidata.org", -module.exports = { unmaps, maps } + // MediaWiki-powered sites + "wiki.archlinux.org", + ], + + "stackoverflow.com": [ + "stackexchange.com", + "serverfault.com", + "superuser.com", + "askubuntu.com", + "stackapps.com", + "mathoverflow.net", + ], +} + +module.exports = { + unmaps, + maps, + aliases, +} diff --git a/util.js b/util.js index 8965df5..c6cbd01 100644 --- a/util.js +++ b/util.js @@ -70,11 +70,18 @@ util.rmSearchAliases = a => Object.entries(a).forEach(([leader, items]) => { }) // Process Mappings -util.processMaps = (maps, siteleader) => { +util.processMaps = (maps, aliases, siteleader) => { if (typeof map === "undefined" || typeof mapkey === "undefined") { return } - Object.entries(maps).forEach(([domain, domainMaps]) => domainMaps.forEach(((mapObj) => { + + const hydratedAliases = Object.entries(aliases) + .flatMap(([baseDomain, aliasDomains]) => + aliasDomains.flatMap(a => ({ [a]: maps[baseDomain] }))) + + const mapsAndAliases = Object.assign({}, maps, ...hydratedAliases) + + Object.entries(mapsAndAliases).forEach(([domain, domainMaps]) => domainMaps.forEach(((mapObj) => { const { alias, callback, @@ -84,7 +91,6 @@ util.processMaps = (maps, siteleader) => { } = mapObj const opts = {} - const key = `${leader}${alias}` // Determine if it's a site-specific mapping