Skip to content

Commit f53f77d

Browse files
committed
chore: better build, code celanup
1 parent bab7c92 commit f53f77d

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rae-cli"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
edition = "2021"
55

66
[dependencies]
@@ -12,3 +12,6 @@ reqwest = { version = "0.12.8", features = ["blocking"] }
1212
scraper = "0.20.0"
1313
terminal-menu = "3.0.0"
1414
termsize = "0.1.9"
15+
16+
[profile.release]
17+
lto = true

src/main.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::{env, usize};
1+
use std::env;
22
use std::fmt::Display;
33
use const_format::concatcp;
44
use inquire::InquireError;
@@ -11,16 +11,11 @@ use scraper::{Html, Selector};
1111
use reqwest::{self, StatusCode};
1212
use html2text::config;
1313

14-
use std::cell::LazyCell;
15-
1614
use clap::{arg, Command};
1715

1816
const VERSION: &str = env!("CARGO_PKG_VERSION");
1917
const NAME: &str = env!("CARGO_PKG_NAME");
2018
const CLI_USER_AGENT: &str = concatcp!(NAME, "/", VERSION);
21-
const DIV_RESULTS_SELECTOR: LazyCell<Selector> = LazyCell::new(|| { Selector::parse(r#"div[id="resultados"]"#).unwrap() });
22-
const RESULT_OR_SUGGESTION_SELECTOR: LazyCell<Selector> = LazyCell::new(|| { Selector::parse(r#"article, div[class="item-list"]"#).unwrap() });
23-
const OPTIONS_SELECTOR: LazyCell<Selector> = LazyCell::new(|| { Selector::parse("a").unwrap() });
2419

2520
#[derive(Debug)]
2621
enum RaeError {
@@ -94,8 +89,10 @@ fn extract_definition(definicion_html: ElementRef) -> RaeResult {
9489
fn handle_suggestions(options_list: ElementRef) -> RaeResult {
9590
use inquire::Select;
9691

92+
let options_selector = Selector::parse("a").unwrap();
93+
9794
let suggestion_list = options_list
98-
.select(&OPTIONS_SELECTOR)
95+
.select(&options_selector)
9996
.filter_map(|x| x.text().next())
10097
.collect::<Vec<&str>>();
10198

@@ -111,7 +108,9 @@ fn handle_suggestions(options_list: ElementRef) -> RaeResult {
111108
}
112109

113110
fn try_get_definition(page_core: ElementRef) -> RaeResult {
114-
match page_core.select(&RESULT_OR_SUGGESTION_SELECTOR).next() {
111+
let result_or_suggestion_selector = Selector::parse(r#"article, div[class="item-list"]"#).unwrap();
112+
113+
match page_core.select(&result_or_suggestion_selector).next() {
115114
Some(w) => match w.value().name() {
116115
"article" => extract_definition(page_core),
117116
"div" => handle_suggestions(w),
@@ -135,10 +134,11 @@ fn buschar_palabra(palabra: &str) -> RaeResult {
135134
if !response.status().is_success() {
136135
Err(RaeError::ResponseError(response.status()))
137136
} else { // I hate it that i have to use else here
137+
let div_results_selector:Selector = Selector::parse(r#"div[id="resultados"]"#).unwrap();
138138
let raw_page = response.text()?;
139139
let dom_fragment = Html::parse_document(&raw_page);
140140

141-
match dom_fragment.select(&DIV_RESULTS_SELECTOR).next() {
141+
match dom_fragment.select(&div_results_selector).next() {
142142
Some(c) => try_get_definition(c),
143143
_ => Err(RaeError::UnexpectedSiteStructure),
144144
}

0 commit comments

Comments
 (0)