Split special case mappings into logical groups
This commit is contained in:
parent
82c66ba3f0
commit
79de3635a3
1 changed files with 42 additions and 22 deletions
64
script.js
64
script.js
|
|
@ -61,31 +61,54 @@ searchInput?.addEventListener("input", (event) => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const specialCaseMap = {
|
// OCR/formatting errors from epub conversion
|
||||||
|
const typoFixes = {
|
||||||
|
"GAY MA G E": "GAY MAGE",
|
||||||
|
"MORE ON RIVERS RIVERS": "RIVERS",
|
||||||
|
"REEK OF WRONG NESS": "REEK OF WRONGNESS",
|
||||||
|
"WITCH LIGHT": "WITCHLIGHT",
|
||||||
|
};
|
||||||
|
|
||||||
|
// truncated possessives and hyphenated terms
|
||||||
|
const partialMatches = {
|
||||||
|
"A KING'S": "KINGS",
|
||||||
|
"KING'": "KINGS",
|
||||||
|
"MERCHANT'": "MERCHANTS",
|
||||||
|
"POWER-": "POWER",
|
||||||
|
"WIZARD'": "WIZARDS",
|
||||||
|
"WIZARD'S": "WIZARDS",
|
||||||
|
"WIZARD'S BREEDING PROGRAMME": "BREEDING PROGRAMMES",
|
||||||
|
"WIZARD'S STAFF": "STAFFS",
|
||||||
|
};
|
||||||
|
|
||||||
|
// British/American spelling and verb forms
|
||||||
|
const spellingVariants = {
|
||||||
|
AMBUSHED: "AMBUSHES",
|
||||||
|
BACKLASHES: "BACKLASH OF MAGIC",
|
||||||
|
CURSED: "CURSES",
|
||||||
|
"FELLOW TRAVELLER": "FELLOW TRAVELERS",
|
||||||
|
"FELLOW TRAVELLERS": "FELLOW TRAVELERS",
|
||||||
|
};
|
||||||
|
|
||||||
|
// different terms mapping to canonical entries
|
||||||
|
const synonyms = {
|
||||||
"A BARD": "BARDS",
|
"A BARD": "BARDS",
|
||||||
"A COURTIER": "COURTIERS",
|
"A COURTIER": "COURTIERS",
|
||||||
"A DEMON": "DEMONS",
|
"A DEMON": "DEMONS",
|
||||||
"A GODDESS OR GOD": "GODDESSES AND GODS",
|
"A GODDESS OR GOD": "GODDESSES AND GODS",
|
||||||
"A HERBWOMAN": "HERBWOMAN",
|
"A HERBWOMAN": "HERBWOMAN",
|
||||||
"A KING'S": "KINGS",
|
|
||||||
"A MAGIC USER": "MAGIC USERS",
|
"A MAGIC USER": "MAGIC USERS",
|
||||||
"A SEER": "SEER",
|
"A SEER": "SEER",
|
||||||
"A WIZARD": "WIZARDS",
|
"A WIZARD": "WIZARDS",
|
||||||
AMBUSHED: "AMBUSHES",
|
|
||||||
ASSASSIN: "ASSASSINS, GUILD OF",
|
ASSASSIN: "ASSASSINS, GUILD OF",
|
||||||
ASSASSINS: "ASSASSINS, GUILD OF",
|
ASSASSINS: "ASSASSINS, GUILD OF",
|
||||||
BACKLASHES: "BACKLASH OF MAGIC",
|
|
||||||
BALLAD: "BALLAD, How to Compose a",
|
BALLAD: "BALLAD, How to Compose a",
|
||||||
BALLADS: "BALLAD, How to Compose a",
|
BALLADS: "BALLAD, How to Compose a",
|
||||||
BLOCKED: "MOUNTAIN PASS, BLOCKED",
|
BLOCKED: "MOUNTAIN PASS, BLOCKED",
|
||||||
CHILD: "CHILDREN",
|
CHILD: "CHILDREN",
|
||||||
CURSED: "CURSES",
|
|
||||||
ETERNAL: "ETERNAL QUEST",
|
ETERNAL: "ETERNAL QUEST",
|
||||||
"EVIL SPELLS": "SPELLS",
|
"EVIL SPELLS": "SPELLS",
|
||||||
FEMALE: "SLAVES, FEMALE,",
|
FEMALE: "SLAVES, FEMALE,",
|
||||||
"FELLOW TRAVELLER": "FELLOW TRAVELERS",
|
|
||||||
"FELLOW TRAVELLERS": "FELLOW TRAVELERS",
|
|
||||||
"GAY MA G E": "GAY MAGE",
|
|
||||||
"GIFT OF SIGHT": "SIGHT",
|
"GIFT OF SIGHT": "SIGHT",
|
||||||
GOD: "GODDESSES AND GODS",
|
GOD: "GODDESSES AND GODS",
|
||||||
GODDESS: "GODDESSES AND GODS",
|
GODDESS: "GODDESSES AND GODS",
|
||||||
|
|
@ -102,43 +125,40 @@ const specialCaseMap = {
|
||||||
"HOW TO INTERACT WITH WIZARDS": "WIZARDS",
|
"HOW TO INTERACT WITH WIZARDS": "WIZARDS",
|
||||||
IMPORT: "IMPORT/EXPORT",
|
IMPORT: "IMPORT/EXPORT",
|
||||||
"JOURNEY CAKE": "WAYBREAD OR JOURNEY CAKE",
|
"JOURNEY CAKE": "WAYBREAD OR JOURNEY CAKE",
|
||||||
"KING'": "KINGS",
|
|
||||||
"LOST LAND": "LOST LANDS,",
|
"LOST LAND": "LOST LANDS,",
|
||||||
"LOST LANDS": "LOST LANDS,",
|
"LOST LANDS": "LOST LANDS,",
|
||||||
MAGELIGHT: "MAGELIGHT OR MAGEFIRE",
|
MAGELIGHT: "MAGELIGHT OR MAGEFIRE",
|
||||||
MALE: "SLAVES, MALE,",
|
MALE: "SLAVES, MALE,",
|
||||||
"MERCHANT'": "MERCHANTS",
|
|
||||||
MINION: "MINIONS OF THE DARK LORD",
|
MINION: "MINIONS OF THE DARK LORD",
|
||||||
"MINION OF THE DARK LORD": "MINIONS OF THE DARK LORD",
|
"MINION OF THE DARK LORD": "MINIONS OF THE DARK LORD",
|
||||||
MINIONS: "MINIONS OF THE DARK LORD",
|
MINIONS: "MINIONS OF THE DARK LORD",
|
||||||
"MORE ON RIVERS": "RIVERS",
|
|
||||||
"MORE ON RIVERS RIVERS": "RIVERS",
|
|
||||||
MOON: "MOON(S)",
|
MOON: "MOON(S)",
|
||||||
|
"MORE ON RIVERS": "RIVERS",
|
||||||
"MOUNTAIN PASS": "MOUNTAIN PASS, BLOCKED",
|
"MOUNTAIN PASS": "MOUNTAIN PASS, BLOCKED",
|
||||||
"NORTHERN BARBARIANS DWELL": "NORTHERN BARBARIANS",
|
"NORTHERN BARBARIANS DWELL": "NORTHERN BARBARIANS",
|
||||||
PANCELTIC: "PANCELTIC TOURS",
|
PANCELTIC: "PANCELTIC TOURS",
|
||||||
"PANCELTIC TOUR": "PANCELTIC TOURS",
|
"PANCELTIC TOUR": "PANCELTIC TOURS",
|
||||||
PENTAGRAM: "PENTAGRAM OR PENTACLE",
|
PENTAGRAM: "PENTAGRAM OR PENTACLE",
|
||||||
PENTAGRAMS: "PENTAGRAM OR PENTACLE",
|
PENTAGRAMS: "PENTAGRAM OR PENTACLE",
|
||||||
"POWER-": "POWER",
|
|
||||||
"PRACTICE RING": "PRACTICE RING OR COMBAT RING",
|
"PRACTICE RING": "PRACTICE RING OR COMBAT RING",
|
||||||
PRIESTESSES: "HIGH PRIESTESSES",
|
PRIESTESSES: "HIGH PRIESTESSES",
|
||||||
"SECRET VALLEY": "VALLEYS",
|
|
||||||
RIVERBOAT: "RIVERS",
|
RIVERBOAT: "RIVERS",
|
||||||
"REEK OF WRONG NESS": "REEK OF WRONGNESS",
|
"SECRET VALLEY": "VALLEYS",
|
||||||
SLAVE: "GALLEY SLAVE",
|
SLAVE: "GALLEY SLAVE",
|
||||||
SLAVES: "SLAVES, MALE,",
|
SLAVES: "SLAVES, MALE,",
|
||||||
"STANDING STONES": "STONE CIRCLES",
|
"STANDING STONES": "STONE CIRCLES",
|
||||||
THIEVES: "THIEVES’ GUILD",
|
THIEVES: "THIEVES' GUILD",
|
||||||
"TOWN COUNCIL": "COUNCIL",
|
|
||||||
"TOUR COMPANIONS": "COMPANIONS",
|
"TOUR COMPANIONS": "COMPANIONS",
|
||||||
|
"TOWN COUNCIL": "COUNCIL",
|
||||||
TROTS: "TROTS, THE",
|
TROTS: "TROTS, THE",
|
||||||
WAYBREAD: "WAYBREAD OR JOURNEY CAKE",
|
WAYBREAD: "WAYBREAD OR JOURNEY CAKE",
|
||||||
"WITCH LIGHT": "WITCHLIGHT",
|
};
|
||||||
"WIZARD'": "WIZARDS",
|
|
||||||
"WIZARD'S": "WIZARDS",
|
const specialCaseMap = {
|
||||||
"WIZARD'S BREEDING PROGRAMME": "BREEDING PROGRAMMES",
|
...typoFixes,
|
||||||
"WIZARD'S STAFF": "STAFFS",
|
...partialMatches,
|
||||||
|
...spellingVariants,
|
||||||
|
...synonyms,
|
||||||
};
|
};
|
||||||
|
|
||||||
const resolveTerm = (term) => {
|
const resolveTerm = (term) => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue