From 76e84100a415d503cde6d94cc2bae83f07396863 Mon Sep 17 00:00:00 2001 From: Sam Denty Date: Mon, 26 Dec 2022 15:15:01 +0000 Subject: [PATCH] 0.4.3: fix bug & increase SiteLogo weight for first match --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/icons.rs | 20 +++++++++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f5ae5a8..ba2767f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1638,7 +1638,7 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "site_icons" -version = "0.4.2" +version = "0.4.3" dependencies = [ "byteorder", "clap", diff --git a/Cargo.toml b/Cargo.toml index fec9568..320e6f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "site_icons" -version = "0.4.2" +version = "0.4.3" authors = ["Sam Denty "] edition = "2018" license = "GPL-3.0" diff --git a/src/icons.rs b/src/icons.rs index 10c75b6..6f7a610 100644 --- a/src/icons.rs +++ b/src/icons.rs @@ -187,15 +187,17 @@ impl Icons { "img[alt*=logo], svg[alt*=logo]", "img[class*=logo], svg[class*=logo]", )) - .filter_map(|elem_ref| { - let mut ancestors = elem_ref + .enumerate() + .filter_map(|(i, elem_ref)| { + let ancestors = elem_ref .ancestors() .map(ElementRef::wrap) .flatten() - .map(|elem_ref| elem_ref.value()); + .map(|elem_ref| elem_ref.value()) + .collect::>(); let skip_classnames = regex!("menu|search"); - let should_skip = ancestors.any(|ancestor| { + let should_skip = ancestors.iter().any(|ancestor| { ancestor .attr("class") .map(|attr| skip_classnames.is_match(&attr.to_lowercase())) @@ -214,12 +216,16 @@ impl Icons { let mut weight = 0; // if in the header - if ancestors.any(|element| element.name() == "header") { + if ancestors.iter().any(|element| element.name() == "header") { weight += 2; } - let mut mentions_logo = |attr_name| { - ancestors.any(|ancestor| { + if i == 0 { + weight += 1; + } + + let mentions_logo = |attr_name| { + ancestors.iter().any(|ancestor| { ancestor .attr(attr_name) .map(|attr| regex!("logo([^s]|$)").is_match(&attr.to_lowercase()))