use std LazyLock and simplify a .replace
This commit is contained in:
parent
ea256f007f
commit
cb0edfd4fc
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -1092,7 +1092,6 @@ dependencies = [
|
|||||||
"futures",
|
"futures",
|
||||||
"maud",
|
"maud",
|
||||||
"numbat",
|
"numbat",
|
||||||
"once_cell",
|
|
||||||
"rand",
|
"rand",
|
||||||
"regex",
|
"regex",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
|
@ -25,10 +25,14 @@ fend-core = "1.4.5"
|
|||||||
futures = "0.3.30"
|
futures = "0.3.30"
|
||||||
maud = "0.26.0"
|
maud = "0.26.0"
|
||||||
numbat = "1.11.0"
|
numbat = "1.11.0"
|
||||||
once_cell = "1.19.0"
|
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
regex = "1.10.3"
|
regex = "1.10.3"
|
||||||
reqwest = { version = "0.11.26", default-features = false, features = ["rustls-tls", "gzip", "deflate", "brotli"] }
|
reqwest = { version = "0.11.26", default-features = false, features = [
|
||||||
|
"rustls-tls",
|
||||||
|
"gzip",
|
||||||
|
"deflate",
|
||||||
|
"brotli",
|
||||||
|
] }
|
||||||
scraper = "0.19.0"
|
scraper = "0.19.0"
|
||||||
serde = { version = "1.0.197", features = ["derive"] }
|
serde = { version = "1.0.197", features = ["derive"] }
|
||||||
# preserve_order is needed for google images. yippee!
|
# preserve_order is needed for google images. yippee!
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
use std::{collections::HashMap, fs, net::SocketAddr, path::Path};
|
use std::{collections::HashMap, fs, net::SocketAddr, path::Path, sync::LazyLock};
|
||||||
|
|
||||||
use once_cell::sync::Lazy;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
|
||||||
@ -221,7 +220,7 @@ impl Default for EngineConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static DEFAULT_ENGINE_CONFIG_REF: Lazy<EngineConfig> = Lazy::new(EngineConfig::default);
|
static DEFAULT_ENGINE_CONFIG_REF: LazyLock<EngineConfig> = LazyLock::new(EngineConfig::default);
|
||||||
impl EngineConfig {
|
impl EngineConfig {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self::default()
|
Self::default()
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
use std::cell::Cell;
|
use std::{cell::Cell, sync::LazyLock};
|
||||||
|
|
||||||
use fend_core::SpanKind;
|
use fend_core::SpanKind;
|
||||||
use maud::{html, PreEscaped};
|
use maud::{html, PreEscaped};
|
||||||
use once_cell::sync::Lazy;
|
|
||||||
|
|
||||||
use crate::engines::EngineResponse;
|
use crate::engines::EngineResponse;
|
||||||
|
|
||||||
@ -106,7 +105,7 @@ fn evaluate_to_html(query: &str, html: bool) -> Option<PreEscaped<String>> {
|
|||||||
Some(PreEscaped(result_html))
|
Some(PreEscaped(result_html))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub static FEND_CONTEXT: Lazy<fend_core::Context> = Lazy::new(|| {
|
pub static FEND_CTX: LazyLock<fend_core::Context> = LazyLock::new(|| {
|
||||||
let mut context = fend_core::Context::new();
|
let mut context = fend_core::Context::new();
|
||||||
|
|
||||||
// make lowercase f and c work
|
// make lowercase f and c work
|
||||||
@ -185,7 +184,7 @@ fn evaluate_into_spans(query: &str, multiline: bool) -> Vec<Span> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut context = FEND_CONTEXT.clone();
|
let mut context = FEND_CTX.clone();
|
||||||
if multiline {
|
if multiline {
|
||||||
// this makes it generate slightly nicer outputs for some queries like 2d6
|
// this makes it generate slightly nicer outputs for some queries like 2d6
|
||||||
context.set_output_mode_terminal();
|
context.set_output_mode_terminal();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use std::collections::HashSet;
|
use std::{collections::HashSet, sync::LazyLock};
|
||||||
|
|
||||||
use fend_core::SpanKind;
|
use fend_core::SpanKind;
|
||||||
use maud::{html, PreEscaped};
|
use maud::{html, PreEscaped};
|
||||||
@ -8,7 +8,6 @@ use numbat::{
|
|||||||
resolver::CodeSource,
|
resolver::CodeSource,
|
||||||
InterpreterResult, InterpreterSettings, Statement,
|
InterpreterResult, InterpreterSettings, Statement,
|
||||||
};
|
};
|
||||||
use once_cell::sync::Lazy;
|
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
|
|
||||||
use crate::engines::EngineResponse;
|
use crate::engines::EngineResponse;
|
||||||
@ -179,7 +178,7 @@ fn markup_to_html(markup: Markup) -> PreEscaped<String> {
|
|||||||
PreEscaped(html)
|
PreEscaped(html)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub static NUMBAT_CTX: Lazy<numbat::Context> = Lazy::new(|| {
|
pub static NUMBAT_CTX: LazyLock<numbat::Context> = LazyLock::new(|| {
|
||||||
let mut ctx = numbat::Context::new(numbat::module_importer::BuiltinModuleImporter {});
|
let mut ctx = numbat::Context::new(numbat::module_importer::BuiltinModuleImporter {});
|
||||||
let _ = ctx.interpret("use prelude", CodeSource::Internal);
|
let _ = ctx.interpret("use prelude", CodeSource::Internal);
|
||||||
let _ = ctx.interpret("use units::currencies", CodeSource::Internal);
|
let _ = ctx.interpret("use units::currencies", CodeSource::Internal);
|
||||||
|
@ -4,14 +4,13 @@ use std::{
|
|||||||
net::IpAddr,
|
net::IpAddr,
|
||||||
ops::Deref,
|
ops::Deref,
|
||||||
str::FromStr,
|
str::FromStr,
|
||||||
sync::Arc,
|
sync::{Arc, LazyLock},
|
||||||
time::{Duration, Instant},
|
time::{Duration, Instant},
|
||||||
};
|
};
|
||||||
|
|
||||||
use eyre::bail;
|
use eyre::bail;
|
||||||
use futures::future::join_all;
|
use futures::future::join_all;
|
||||||
use maud::PreEscaped;
|
use maud::PreEscaped;
|
||||||
use once_cell::sync::Lazy;
|
|
||||||
use reqwest::{header::HeaderMap, RequestBuilder};
|
use reqwest::{header::HeaderMap, RequestBuilder};
|
||||||
use serde::{Deserialize, Deserializer};
|
use serde::{Deserialize, Deserializer};
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
@ -587,7 +586,7 @@ pub async fn autocomplete(config: &Config, query: &str) -> eyre::Result<Vec<Stri
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub static CLIENT: Lazy<reqwest::Client> = Lazy::new(|| {
|
pub static CLIENT: LazyLock<reqwest::Client> = LazyLock::new(|| {
|
||||||
reqwest::ClientBuilder::new()
|
reqwest::ClientBuilder::new()
|
||||||
.local_address(IpAddr::from_str("0.0.0.0").unwrap())
|
.local_address(IpAddr::from_str("0.0.0.0").unwrap())
|
||||||
// we pretend to be a normal browser so websites don't block us
|
// we pretend to be a normal browser so websites don't block us
|
||||||
|
@ -115,8 +115,7 @@ pub fn parse_images_response(body: &str) -> eyre::Result<EngineImagesResponse> {
|
|||||||
.and_then(|v| v.as_str())
|
.and_then(|v| v.as_str())
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
// bing adds these unicode characters around matches
|
// bing adds these unicode characters around matches
|
||||||
.replace('', "")
|
.replace(['', ''], "");
|
||||||
.replace('', "");
|
|
||||||
|
|
||||||
// the text looks like "1200 x 1600 · jpegWikipedia"
|
// the text looks like "1200 x 1600 · jpegWikipedia"
|
||||||
// (the last part is incorrectly parsed since the actual text is inside another
|
// (the last part is incorrectly parsed since the actual text is inside another
|
||||||
|
Loading…
Reference in New Issue
Block a user