From 07a4ccadf0ff0118348b7880cda5607bbc0d9f00 Mon Sep 17 00:00:00 2001 From: "r.portalez" Date: Wed, 10 Mar 2021 16:28:38 +0100 Subject: [PATCH] move crawl-delay into a feature as it won't be user by many --- Cargo.toml | 3 +++ src/dfa.rs | 45 +++++++++++++++++++++++++++------------------ src/parse.rs | 1 + 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c82cf6d..8e93acc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,9 @@ license = "MIT" keywords = ["robots", "txt", "parse", "compile"] repository = "https://github.com/crestonbunch/cylon" +[features] +crawl-delay = [] + [dependencies] futures-util = "0.3" serde = "1.0" diff --git a/src/dfa.rs b/src/dfa.rs index 6c39eb4..f239d73 100644 --- a/src/dfa.rs +++ b/src/dfa.rs @@ -1,3 +1,4 @@ +#[cfg(feature = "crawl-delay")] use std::cmp::Ordering; use serde_derive::{Deserialize, Serialize}; @@ -45,10 +46,12 @@ enum State { pub struct Cylon { states: Vec, transitions: Vec>, + #[cfg(feature = "crawl-delay")] delay: Option, } impl Cylon { + #[cfg(feature = "crawl-delay")] pub fn delay(&self) -> Option { self.delay } @@ -204,28 +207,34 @@ impl Cylon { transitions.push(t); } - let mut delays: Vec> = rules.iter().filter(|rule| { - match rule { - Rule::Delay(_) => true, - _ => false - } - }).map(|r| { - r.inner().parse::().ok() - }).collect(); - delays.sort_unstable_by(|a, b| { - match (a, b) { - (None, Some(_)) => Ordering::Greater, - (Some(_), None) => Ordering::Less, - (None, None) => Ordering::Equal, - (Some(aa), Some(bb)) => aa.cmp(bb) + #[cfg(feature = "crawl-delay")] + { + let mut delays: Vec> = rules.iter().filter(|rule| { + match rule { + Rule::Delay(_) => true, + _ => false + } + }).map(|r| { + r.inner().parse::().ok() + }).collect(); + delays.sort_unstable_by(|a, b| { + match (a, b) { + (None, Some(_)) => Ordering::Greater, + (Some(_), None) => Ordering::Less, + (None, None) => Ordering::Equal, + (Some(aa), Some(bb)) => aa.cmp(bb) + } + }); + Self { + delay: *delays.get(0).unwrap_or(&None), + states, + transitions, } - }); - - + } + #[cfg(not(feature = "crawl-delay"))] Self { - delay: *delays.get(0).unwrap_or(&None), states, transitions, } diff --git a/src/parse.rs b/src/parse.rs index ebc1ba5..1bfb750 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -312,6 +312,7 @@ mod tests { } #[test] + #[cfg(feature = "crawl-delay")] fn test_crawl_delay() { tokio_test::block_on(async { let example_robots = r#"