Normalize dot segments in paths

This commit is contained in:
mtkennerly 2024-04-21 20:07:26 -04:00
parent d132d15c21
commit 22bae27388
No known key found for this signature in database
GPG key ID: E764BE00BE6E6408
3 changed files with 411 additions and 462 deletions

File diff suppressed because it is too large Load diff

View file

@ -1549,6 +1549,8 @@
* [Arcane Domains](https://www.pcgamingwiki.com/wiki/?curid=125837)
* [Arcane Legacy](https://www.pcgamingwiki.com/wiki/?curid=113962)
* [Arcane Maelstrom](https://www.pcgamingwiki.com/wiki/?curid=60924)
* [Arcane PreRaise](https://www.pcgamingwiki.com/wiki/?curid=59383)
* [Arcane ReRaise](https://www.pcgamingwiki.com/wiki/?curid=59409)
* [Arcane Sorcery](https://www.pcgamingwiki.com/wiki/?curid=46456)
* [Arcane Trials](https://www.pcgamingwiki.com/wiki/?curid=110648)
* [Arcane Worlds](https://www.pcgamingwiki.com/wiki/?curid=14715)
@ -2874,6 +2876,7 @@
* [Biolab](https://www.pcgamingwiki.com/wiki/?curid=157780)
* [Biolab Wars](https://www.pcgamingwiki.com/wiki/?curid=141663)
* [Biology Battle](https://www.pcgamingwiki.com/wiki/?curid=48911)
* [Biomagnet](https://www.pcgamingwiki.com/wiki/?curid=148818)
* [Biomass](https://www.pcgamingwiki.com/wiki/?curid=145304)
* [BioMech](https://www.pcgamingwiki.com/wiki/?curid=144727)
* [Biomydra](https://www.pcgamingwiki.com/wiki/?curid=59061)
@ -3503,6 +3506,8 @@
* [Boyar](https://www.pcgamingwiki.com/wiki/?curid=54293)
* [Braid Anniversary Edition](https://www.pcgamingwiki.com/wiki/?curid=162560)
* [Brain 43°C](https://www.pcgamingwiki.com/wiki/?curid=96379)
* [Brain Booster](https://www.pcgamingwiki.com/wiki/?curid=55548)
* [Brain Crush](https://www.pcgamingwiki.com/wiki/?curid=67861)
* [Brain in a Vat Lies](https://www.pcgamingwiki.com/wiki/?curid=149775)
* [Brain In My Head](https://www.pcgamingwiki.com/wiki/?curid=54788)
* [Brain Storm: Tower Bombarde](https://www.pcgamingwiki.com/wiki/?curid=65484)
@ -7865,6 +7870,7 @@
* [Eclipse: New Dawn for the Galaxy](https://www.pcgamingwiki.com/wiki/?curid=39049)
* [Eclipsed](https://www.pcgamingwiki.com/wiki/?curid=44581)
* [ECON](https://www.pcgamingwiki.com/wiki/?curid=123964)
* [Economic Conquest](https://www.pcgamingwiki.com/wiki/?curid=55930)
* [Ecopoiesis](https://www.pcgamingwiki.com/wiki/?curid=76596)
* [EcoQuest: The Search for Cetus](https://www.pcgamingwiki.com/wiki/?curid=147102)
* [ECrossminton](https://www.pcgamingwiki.com/wiki/?curid=130648)

View file

@ -14,6 +14,8 @@ pub fn normalize(path: &str) -> String {
static UNNECESSARY_DOUBLE_STAR_1: Lazy<Regex> = Lazy::new(|| Regex::new(r"([^/*])\*{2,}").unwrap());
static UNNECESSARY_DOUBLE_STAR_2: Lazy<Regex> = Lazy::new(|| Regex::new(r"\*{2,}([^/*])").unwrap());
static ENDING_WILDCARD: Lazy<Regex> = Lazy::new(|| Regex::new(r"(/\*)+$").unwrap());
static ENDING_DOT: Lazy<Regex> = Lazy::new(|| Regex::new(r"(/\.)$").unwrap());
static INTERMEDIATE_DOT: Lazy<Regex> = Lazy::new(|| Regex::new(r"(/\./)").unwrap());
static APP_DATA: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?i)%appdata%").unwrap());
static APP_DATA_ROAMING: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?i)%userprofile%/AppData/Roaming").unwrap());
static APP_DATA_LOCAL: Lazy<Regex> = Lazy::new(|| Regex::new(r"(?i)%localappdata%").unwrap());
@ -26,6 +28,8 @@ pub fn normalize(path: &str) -> String {
(&UNNECESSARY_DOUBLE_STAR_1, "${1}*"),
(&UNNECESSARY_DOUBLE_STAR_2, "*${1}"),
(&ENDING_WILDCARD, ""),
(&ENDING_DOT, ""),
(&INTERMEDIATE_DOT, "/"),
(&APP_DATA, placeholder::WIN_APP_DATA),
(&APP_DATA_ROAMING, placeholder::WIN_APP_DATA),
(&APP_DATA_LOCAL, placeholder::WIN_LOCAL_APP_DATA),
@ -87,6 +91,8 @@ pub fn too_broad(path: &str) -> bool {
// Several games/episodes are grouped together here.
for item in [
format!("{HOME}/*/"),
format!("{HOME}/**/"),
format!("{WIN_DOCUMENTS}/Telltale Games/*/"),
format!("{XDG_CONFIG}/unity3d/*"),
format!("{XDG_DATA}/unity3d/*"),