mirror of
https://github.com/zyllian/webdog.git
synced 2025-06-28 01:15:44 -07:00
Compare commits
No commits in common. "main" and "v0.1.3" have entirely different histories.
4 changed files with 50 additions and 16 deletions
29
Cargo.lock
generated
29
Cargo.lock
generated
|
@ -690,6 +690,12 @@ dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fs_extra"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fsevent-sys"
|
name = "fsevent-sys"
|
||||||
version = "4.1.0"
|
version = "4.1.0"
|
||||||
|
@ -1291,6 +1297,15 @@ version = "1.70.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
|
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
|
@ -2637,9 +2652,21 @@ dependencies = [
|
||||||
"mio 1.0.4",
|
"mio 1.0.4",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"socket2",
|
"socket2",
|
||||||
|
"tokio-macros",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-macros"
|
||||||
|
version = "2.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.101",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-tungstenite"
|
name = "tokio-tungstenite"
|
||||||
version = "0.21.0"
|
version = "0.21.0"
|
||||||
|
@ -2998,11 +3025,13 @@ dependencies = [
|
||||||
"color-eyre",
|
"color-eyre",
|
||||||
"extract-frontmatter",
|
"extract-frontmatter",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
"fs_extra",
|
||||||
"futures",
|
"futures",
|
||||||
"grass",
|
"grass",
|
||||||
"hotwatch",
|
"hotwatch",
|
||||||
"html5ever 0.31.0",
|
"html5ever 0.31.0",
|
||||||
"include_dir",
|
"include_dir",
|
||||||
|
"itertools",
|
||||||
"kuchikiki",
|
"kuchikiki",
|
||||||
"lol_html",
|
"lol_html",
|
||||||
"minifier",
|
"minifier",
|
||||||
|
|
|
@ -13,11 +13,13 @@ clap = { version = "4", features = ["derive"] }
|
||||||
color-eyre = { version = "0.6", optional = true }
|
color-eyre = { version = "0.6", optional = true }
|
||||||
extract-frontmatter = "4"
|
extract-frontmatter = "4"
|
||||||
eyre = "0.6"
|
eyre = "0.6"
|
||||||
|
fs_extra = "1.2"
|
||||||
futures = { version = "0.3", optional = true }
|
futures = { version = "0.3", optional = true }
|
||||||
grass = { version = "0.13", default-features = false }
|
grass = { version = "0.13", default-features = false }
|
||||||
hotwatch = { version = "0.5", optional = true }
|
hotwatch = { version = "0.5", optional = true }
|
||||||
html5ever = "0.31"
|
html5ever = "0.31"
|
||||||
include_dir = "0.7"
|
include_dir = "0.7"
|
||||||
|
itertools = "0.14"
|
||||||
kuchikiki = "0.8.8-speedreader"
|
kuchikiki = "0.8.8-speedreader"
|
||||||
lol_html = "2"
|
lol_html = "2"
|
||||||
minifier = { version = "0.3", features = ["html"] }
|
minifier = { version = "0.3", features = ["html"] }
|
||||||
|
@ -33,7 +35,10 @@ serde_yaml_ng = "0.10"
|
||||||
syntect = "5"
|
syntect = "5"
|
||||||
tera = "1"
|
tera = "1"
|
||||||
time = { version = "0.3", features = ["serde-human-readable"] }
|
time = { version = "0.3", features = ["serde-human-readable"] }
|
||||||
tokio = { version = "1", features = ["rt-multi-thread"], optional = true }
|
tokio = { version = "1", features = [
|
||||||
|
"macros",
|
||||||
|
"rt-multi-thread",
|
||||||
|
], optional = true }
|
||||||
url = { version = "2", features = ["serde"] }
|
url = { version = "2", features = ["serde"] }
|
||||||
walkdir = "2"
|
walkdir = "2"
|
||||||
warp = { version = "0.3", optional = true }
|
warp = { version = "0.3", optional = true }
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use lol_html::{RewriteStrSettings, element};
|
use itertools::Itertools;
|
||||||
|
use lol_html::{element, RewriteStrSettings};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{builder::SiteBuilder, resource::ResourceTemplateData};
|
use crate::{builder::SiteBuilder, resource::ResourceTemplateData};
|
||||||
|
@ -110,12 +111,10 @@ fn resource_list_outside(
|
||||||
)
|
)
|
||||||
.map(|ts| (id, v, ts))
|
.map(|ts| (id, v, ts))
|
||||||
})
|
})
|
||||||
.map(|v| {
|
.map_ok(|(id, v, ts)| ResourceTemplateData {
|
||||||
v.map(|(id, v, ts)| ResourceTemplateData {
|
resource: v,
|
||||||
resource: v,
|
id: id.clone(),
|
||||||
id: id.clone(),
|
readable_timestamp: ts,
|
||||||
readable_timestamp: ts,
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
.collect::<eyre::Result<Vec<_>>>()?,
|
.collect::<eyre::Result<Vec<_>>>()?,
|
||||||
})?,
|
})?,
|
||||||
|
|
|
@ -4,16 +4,17 @@ use std::{
|
||||||
};
|
};
|
||||||
|
|
||||||
use eyre::Context;
|
use eyre::Context;
|
||||||
use rss::{ChannelBuilder, ItemBuilder, validation::Validate};
|
use itertools::Itertools;
|
||||||
|
use rss::{validation::Validate, ChannelBuilder, ItemBuilder};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use time::{OffsetDateTime, format_description::well_known::Rfc2822};
|
use time::{format_description::well_known::Rfc2822, OffsetDateTime};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
PageMetadata,
|
|
||||||
builder::SiteBuilder,
|
builder::SiteBuilder,
|
||||||
frontmatter::FrontMatterRequired,
|
frontmatter::FrontMatterRequired,
|
||||||
link_list::Link,
|
link_list::Link,
|
||||||
util::{self, format_timestamp},
|
util::{self, format_timestamp},
|
||||||
|
PageMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Metadata for resources.
|
/// Metadata for resources.
|
||||||
|
@ -318,7 +319,7 @@ impl ResourceBuilder {
|
||||||
let page_max = list.len() / items_per_page + (list.len() % items_per_page).min(1);
|
let page_max = list.len() / items_per_page + (list.len() % items_per_page).min(1);
|
||||||
let mut previous = None;
|
let mut previous = None;
|
||||||
let mut next;
|
let mut next;
|
||||||
for (page, iter) in list.chunks(items_per_page).enumerate() {
|
for (page, iter) in list.iter().chunks(items_per_page).into_iter().enumerate() {
|
||||||
next = (page + 1 != page_max).then_some(page + 2);
|
next = (page + 1 != page_max).then_some(page + 2);
|
||||||
let out = builder.build_page_raw(
|
let out = builder.build_page_raw(
|
||||||
PageMetadata {
|
PageMetadata {
|
||||||
|
@ -328,7 +329,7 @@ impl ResourceBuilder {
|
||||||
},
|
},
|
||||||
"",
|
"",
|
||||||
ResourceListTemplateData {
|
ResourceListTemplateData {
|
||||||
resources: iter.to_vec(),
|
resources: iter.copied().collect(),
|
||||||
tag,
|
tag,
|
||||||
rss_enabled: config.rss.is_some(),
|
rss_enabled: config.rss.is_some(),
|
||||||
page: page + 1,
|
page: page + 1,
|
||||||
|
@ -371,7 +372,7 @@ impl ResourceBuilder {
|
||||||
|
|
||||||
// Build list of tags
|
// Build list of tags
|
||||||
{
|
{
|
||||||
let mut links: Vec<_> = tags
|
let links = tags
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(tag, data)| {
|
.map(|(tag, data)| {
|
||||||
let count = data.len();
|
let count = data.len();
|
||||||
|
@ -383,9 +384,9 @@ impl ResourceBuilder {
|
||||||
count,
|
count,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
.sorted_by(|(_, a), (_, b)| b.cmp(a))
|
||||||
|
.map(|(l, _)| l)
|
||||||
.collect();
|
.collect();
|
||||||
links.sort_by(|(_, a), (_, b)| b.cmp(a));
|
|
||||||
let links = links.into_iter().map(|(l, _)| l).collect();
|
|
||||||
let out = crate::link_list::render_basic_link_list(
|
let out = crate::link_list::render_basic_link_list(
|
||||||
builder,
|
builder,
|
||||||
&self.config.tag_list_template,
|
&self.config.tag_list_template,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue