diff --git a/data/manifest.yaml b/data/manifest.yaml index c0d810f0..a26b8253 100644 --- a/data/manifest.yaml +++ b/data/manifest.yaml @@ -3978,7 +3978,7 @@ $1 Ride: id: 737600 40 Winks: files: - "/memcard/Mcd****.mcr": + "/memcard/Mcd*.mcr": tags: - save when: @@ -23788,7 +23788,7 @@ Alien Bubble Destroyer: id: 779310 Alien Cabal: files: - "/AC95****.ACG": + "/AC95*.ACG": tags: - save when: @@ -23803,7 +23803,7 @@ Alien Cabal: - config when: - os: windows - "/SAVE****.ACG": + "/SAVE*.ACG": tags: - save when: @@ -24090,7 +24090,7 @@ Alien Legacy: - save when: - os: dos - "/SAVE**.GAM": + "/SAVE*.GAM": tags: - save when: @@ -60331,7 +60331,7 @@ Beneath The Surface: id: 792050 Beneath a Steel Sky: files: - "/SKY-VM.***": + "/SKY-VM.*": tags: - save when: @@ -70645,7 +70645,7 @@ Blood will be Spilled: - config when: - os: windows - "/Nightdive Studios/Blood EX/saves/save_**.sav": + "/Nightdive Studios/Blood EX/saves/save_*.sav": tags: - save when: @@ -90305,14 +90305,14 @@ Carnivore Land: id: 397860 Carnivores: files: - "/trophy**.sav": + "/trophy*.sav": tags: - save when: - os: windows Carnivores 2: files: - "/trophy**.sav": + "/trophy*.sav": tags: - save when: @@ -101277,7 +101277,7 @@ Chronomaster: - save when: - os: dos - "/SAVE.0**": + "/SAVE.0*": tags: - save when: @@ -110335,7 +110335,7 @@ Command & Conquer: - config when: - os: dos - "/savegame.***": + "/savegame.*": tags: - save when: @@ -110539,7 +110539,7 @@ Command & Conquer Remastered Collection: - config when: - os: windows - "/savegame.***": + "/savegame.*": tags: - save when: @@ -110679,7 +110679,7 @@ Command & Conquer Remastered Collection: - os: windows "Command & Conquer: Tiberian Sun": files: - "/SAVE****.sav": + "/SAVE*.sav": tags: - save when: @@ -127277,7 +127277,7 @@ CyberHive: - save when: - os: dos - "/SAVE0**.DAT": + "/SAVE0*.DAT": tags: - save when: @@ -132951,7 +132951,7 @@ Dark Space Conqueror: - config when: - os: dos - "/SAVE**.SAV": + "/SAVE*.SAV": tags: - save when: @@ -132975,7 +132975,7 @@ Dark Space Conqueror: - config when: - os: dos - "/SAVE**.SAV": + "/SAVE*.SAV": tags: - save when: @@ -139567,7 +139567,7 @@ Death Gasp VR: id: 1199130 Death Gate: files: - "/DGATE***.SAV": + "/DGATE*.SAV": tags: - save when: @@ -140571,7 +140571,7 @@ DeathCrank: id: 391290 DeathKeep: files: - "/DkSave**.sav": + "/DkSave*.sav": tags: - save when: @@ -148378,7 +148378,7 @@ Deus: - config when: - os: dos - "/SAVE**": + "/SAVE*": tags: - save when: @@ -162323,7 +162323,7 @@ Dragonsphere: - config when: - os: dos - "/DRAG0**.SAV": + "/DRAG0*.SAV": tags: - save when: @@ -166391,7 +166391,7 @@ Drymir Cave under Richmordnom: id: 913570 "DrĂ¡scula: The Vampire Strikes Back": files: - "/drascula**": + "/drascula*": tags: - save when: @@ -183628,7 +183628,7 @@ Eradicated: id: 548270 Eradicator: files: - "/ERAD**.SAV": + "/ERAD*.SAV": tags: - save when: @@ -195541,7 +195541,7 @@ Fallen Empires: id: 228260 Fallen Haven: files: - "/savegame.**": + "/savegame.*": tags: - save when: @@ -207388,7 +207388,7 @@ Flight of the Amazon Queen: - config when: - os: windows - "/queen.s**": + "/queen.s*": tags: - save when: @@ -232834,7 +232834,7 @@ Gold Rush In The Oort Cloud: id: 661530 Gold Rush!: files: - "/GRSG.**": + "/GRSG.*": tags: - save when: @@ -238767,7 +238767,7 @@ Grim Earth: id: 940990 Grim Fandango: files: - "/grim**.gsv": + "/grim*.gsv": tags: - save when: @@ -242816,7 +242816,7 @@ Gurugedara: id: 701010 "Gurumin: A Monstrous Adventure": files: - "/userdata//322290/remote/gdata**.sav": + "/userdata//322290/remote/gdata*.sav": tags: - save when: @@ -245782,7 +245782,7 @@ Halls of Torment: id: 2218750 "Halls of the Dead: Faery Tale Adventure II": files: - "/0**.SAV": + "/0*.SAV": tags: - save when: @@ -287005,7 +287005,7 @@ Jazz Jackrabbit 2: - config when: - os: windows - "/SAVEGAME.***": + "/SAVEGAME.*": tags: - save when: @@ -297367,7 +297367,7 @@ King under the Mountain: id: 10100 "King's Quest IV: The Perils of Rosella": files: - "/KQ4SG.***": + "/KQ4SG.*": tags: - save when: @@ -297388,7 +297388,7 @@ King under the Mountain: id: 10100 "King's Quest V: Absence Makes the Heart Go Yonder!": files: - "/KQ5SG.***": + "/KQ5SG.*": tags: - save when: @@ -297406,7 +297406,7 @@ King under the Mountain: id: 10100 "King's Quest VI: Heir Today, Gone Tomorrow": files: - "/KQ6SG.***": + "/KQ6SG.*": tags: - save when: @@ -297424,7 +297424,7 @@ King under the Mountain: id: 10100 "King's Quest VII: The Princeless Bride": files: - "/KQ7CDSG.***": + "/KQ7CDSG.*": tags: - save when: @@ -304956,7 +304956,7 @@ Lands of Lore III: - 1207658980 "Lands of Lore: The Throne of Chaos": files: - "/_SAVE***.DAT": + "/_SAVE*.DAT": tags: - save when: @@ -309539,7 +309539,7 @@ Legends of Time: id: 514400 Legends of Valour: files: - "/CHAR**.DAT": + "/CHAR*.DAT": tags: - save when: @@ -316002,7 +316002,7 @@ Little Big Adventure: - config when: - os: dos - "/S****.LBA": + "/S*.LBA": tags: - save when: @@ -319991,7 +319991,7 @@ Lost Dimension: id: 626600 Lost Eden: files: - "/EDV2_***.SAV": + "/EDV2_*.SAV": tags: - save when: @@ -338991,7 +338991,7 @@ Mega Man Legacy Collection 2: id: 495050 Mega Man Legends: files: - "/DASH_**.MCD": + "/DASH_*.MCD": tags: - save when: @@ -340827,7 +340827,7 @@ Menzoberranzan: - config when: - os: dos - "/SAVE**": + "/SAVE*": tags: - save when: @@ -345077,7 +345077,7 @@ Might & Mayhem: - 1207658788 "Might and Magic III: Isles of Terra": files: - "/SAVE**.MM3": + "/SAVE*.MM3": tags: - save when: @@ -345155,7 +345155,7 @@ Might and Magic IX: alias: "Might & Magic: Clash of Heroes" "Might and Magic: Clouds of Xeen": files: - "/XEEN**.SAV": + "/XEEN*.SAV": tags: - save when: @@ -345172,7 +345172,7 @@ Might and Magic IX: - 1207658788 "Might and Magic: Darkside of Xeen": files: - "/DARK**.SAV": + "/DARK*.SAV": tags: - save when: @@ -345189,12 +345189,12 @@ Might and Magic IX: - 1207658788 "Might and Magic: World of Xeen": files: - "/XEEN**.SAV": + "/XEEN*.SAV": tags: - save when: - os: dos - "/XEEN**.WOX": + "/XEEN*.WOX": tags: - save when: @@ -351245,7 +351245,7 @@ Monkey GO Happy: id: 32460 "Monkey Island 2: LeChuck's Revenge": files: - "/SAVEGAME.***": + "/SAVEGAME.*": tags: - save when: @@ -353646,7 +353646,7 @@ Monty Python & the Quest for the Holy Grail: - os: windows "Monty Python's Complete Waste of Time": files: - "/7THLEVEL.***": + "/7THLEVEL.*": tags: - save when: @@ -389188,7 +389188,7 @@ Orion (2018): id: 811190 Orion Burger: files: - "/BURG0**.SAV": + "/BURG0*.SAV": tags: - save when: @@ -412457,12 +412457,12 @@ Police Patrol: - config when: - os: windows - "/PQ2/PQSG.***": + "/PQ2/PQSG.*": tags: - save when: - os: windows - "/cloud_saves/PQSG.***": + "/cloud_saves/PQSG.*": tags: - save when: @@ -412516,7 +412516,7 @@ Police Patrol: - save when: - os: windows - "/PQ1SG.***": + "/PQ1SG.*": tags: - save when: @@ -417731,7 +417731,7 @@ Prince of Persia (2008): - os: dos Prince of Persia 3D: files: - "/Level ** Start, Level ** Start.bmp": + "/Level * Start, Level * Start.bmp": tags: - save when: @@ -428227,7 +428227,7 @@ Quest for Conquest: id: 1147020 "Quest for Glory II: Trial by Fire": files: - "/TRIALSG.***": + "/TRIALSG.*": tags: - save when: @@ -428244,7 +428244,7 @@ Quest for Conquest: id: 502750 "Quest for Glory III: Wages of War": files: - "/GLORYSG.***": + "/GLORYSG.*": tags: - save when: @@ -428281,7 +428281,7 @@ Quest for Conquest: id: 502750 "Quest for Glory: Shadows of Darkness": files: - "/GLORYSG.***": + "/GLORYSG.*": tags: - save when: @@ -428301,7 +428301,7 @@ Quest for Conquest: id: 502750 "Quest for Glory: So You Want to Be a Hero": files: - "/GLORYSG.***": + "/GLORYSG.*": tags: - save when: @@ -434217,7 +434217,7 @@ Raptor Valley: id: 524120 "Raptor: Call of the Shadows": files: - "/CHAR****.FIL": + "/CHAR*.FIL": tags: - save when: @@ -434250,7 +434250,7 @@ Raptor Valley: id: 358360 "Raptor: Call of the Shadows 2010 Edition": files: - "/CHAR****.FIL": + "/CHAR*.FIL": tags: - save when: @@ -434723,7 +434723,7 @@ Ravenland: - config when: - os: dos - "/SAVE**": + "/SAVE*": tags: - save when: @@ -434748,7 +434748,7 @@ Ravenland: - config when: - os: dos - "/SAVE**": + "/SAVE*": tags: - save when: @@ -463201,7 +463201,7 @@ Sam & Max Hit the Road: - config when: - os: windows - "/samnmax.s**": + "/samnmax.s*": tags: - save when: @@ -466767,7 +466767,7 @@ Schein: - config when: - os: windows - "/Schizm.s**": + "/Schizm.s*": tags: - save when: @@ -500126,7 +500126,7 @@ Space Punks: - config when: - os: windows - "/sq6/SQ6SG.***": + "/sq6/SQ6SG.*": tags: - save when: @@ -500214,7 +500214,7 @@ Space Punks: - config when: - os: windows - "/sq4/SQ4SG.***": + "/sq4/SQ4SG.*": tags: - save when: @@ -500237,7 +500237,7 @@ Space Punks: - config when: - os: windows - "/sq5/SQ5SG.***": + "/sq5/SQ5SG.*": tags: - save when: @@ -500255,7 +500255,7 @@ Space Punks: id: 10110 "Space Quest: Chapter I - The Sarien Encounter": files: - "/SQ1SG.***": + "/SQ1SG.*": tags: - save when: @@ -521096,7 +521096,7 @@ Stronghold: - save when: - os: dos - "/STRONG.SAV/SAVE.***": + "/STRONG.SAV/SAVE.*": tags: - save when: @@ -533983,7 +533983,7 @@ Swords of Legends Online: id: 1418100 Swords of Xeen: files: - "/SWRD**.SAV": + "/SWRD*.SAV": tags: - save when: @@ -535117,7 +535117,7 @@ System Shock 2 Enhanced Edition: - save when: - os: windows - "/Nightdive Studios/System Shock EE/savegame/archive/savgam**.dat": + "/Nightdive Studios/System Shock EE/savegame/archive/savgam*.dat": tags: - save when: @@ -551902,7 +551902,7 @@ The Collider 2: id: 357010 "The Colonel's Bequest": files: - "/CB1SG.***": + "/CB1SG.*": tags: - save when: @@ -561091,7 +561091,7 @@ The Imperial Gatekeeper: - save when: - os: windows - "/save/Sandbox.sav**": + "/save/Sandbox.sav*": tags: - save when: @@ -565926,7 +565926,7 @@ The Lion King: id: 561120 "The Lion King II: Simba's Pride GameBreak!": registry: - HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Disney Interactive/SPAG**: + HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Disney Interactive/SPAG*: tags: - config "The Lion's Song": @@ -607486,7 +607486,7 @@ Ultima Defesa: - 1207658965 "Ultima VII Part Two: Serpent Isle": files: - "/GAME**.U7": + "/GAME*.U7": tags: - save when: @@ -607500,7 +607500,7 @@ Ultima Defesa: id: 1207662633 "Ultima VII: The Black Gate": files: - "/GAME**.U7": + "/GAME*.U7": tags: - save when: @@ -630487,7 +630487,7 @@ Warriors Orochi 4: id: 831560 Warriors of Legend: files: - "/GAME**.DAT": + "/GAME*.DAT": tags: - save when: @@ -638730,7 +638730,7 @@ Wing Commander: - 1207658960 "Wing Commander III: Heart of the Tiger": files: - "/00000***.WSG": + "/00000*.WSG": tags: - save when: @@ -646302,7 +646302,7 @@ X-ray Hospital: id: 850720 "X2: The Threat": files: - "/**.sav": + "/*.sav": tags: - save when: @@ -652510,7 +652510,7 @@ Zak McKracken and the Alien Mindbenders: - config when: - os: windows - "/zak.s**": + "/zak.s*": tags: - save when: diff --git a/src/wiki.rs b/src/wiki.rs index 3a2619d1..bd57912e 100644 --- a/src/wiki.rs +++ b/src/wiki.rs @@ -558,6 +558,8 @@ impl WikiPath { } static CONSECUTIVE_SLASHES: Lazy = Lazy::new(|| Regex::new(r"/{2,}").unwrap()); + static UNNECESSARY_DOUBLE_STAR_1: Lazy = Lazy::new(|| Regex::new(r"([^/*])\*{2,}").unwrap()); + static UNNECESSARY_DOUBLE_STAR_2: Lazy = Lazy::new(|| Regex::new(r"\*{2,}([^/*])").unwrap()); static ENDING_WILDCARD: Lazy = Lazy::new(|| Regex::new(r"(/\*)+$").unwrap()); static APP_DATA: Lazy = Lazy::new(|| Regex::new(r"(?i)%appdata%").unwrap()); static APP_DATA_ROAMING: Lazy = Lazy::new(|| Regex::new(r"(?i)%userprofile%/AppData/Roaming").unwrap()); @@ -568,6 +570,8 @@ impl WikiPath { for (pattern, replacement) in [ (&CONSECUTIVE_SLASHES, "/"), + (&UNNECESSARY_DOUBLE_STAR_1, "${1}*"), + (&UNNECESSARY_DOUBLE_STAR_2, "*${1}"), (&ENDING_WILDCARD, ""), (&APP_DATA, placeholder::WIN_APP_DATA), (&APP_DATA_ROAMING, placeholder::WIN_APP_DATA),