This commit is contained in:
2026-03-11 10:37:07 -07:00
parent d052e793f3
commit 65482b848b
12 changed files with 34 additions and 27 deletions

View File

@@ -6,7 +6,10 @@ use std::{
}; };
use tracing::debug; use tracing::debug;
use crate::{value::{Item, PileValue, SyncReadBridge}, extract::traits::ObjectExtractor}; use crate::{
extract::traits::ObjectExtractor,
value::{Item, PileValue, SyncReadBridge},
};
pub struct EpubTextExtractor { pub struct EpubTextExtractor {
item: Item, item: Item,

View File

@@ -6,7 +6,10 @@ use std::{
}; };
use tracing::trace; use tracing::trace;
use crate::{value::{Item, PileValue, SyncReadBridge}, extract::traits::ObjectExtractor}; use crate::{
extract::traits::ObjectExtractor,
value::{Item, PileValue, SyncReadBridge},
};
pub struct ExifExtractor { pub struct ExifExtractor {
item: Item, item: Item,

View File

@@ -8,8 +8,8 @@ use std::{
}; };
use crate::{ use crate::{
value::{Item, PileValue, SyncReadBridge},
extract::traits::{ListExtractor, ObjectExtractor}, extract::traits::{ListExtractor, ObjectExtractor},
value::{Item, PileValue, SyncReadBridge},
}; };
pub struct FlacImagesExtractor { pub struct FlacImagesExtractor {

View File

@@ -5,7 +5,10 @@ use std::{
sync::{Arc, OnceLock}, sync::{Arc, OnceLock},
}; };
use crate::{value::{Item, PileValue}, extract::traits::ObjectExtractor}; use crate::{
extract::traits::ObjectExtractor,
value::{Item, PileValue},
};
pub struct FsExtractor { pub struct FsExtractor {
item: Item, item: Item,

View File

@@ -12,7 +12,10 @@ pub use pdf_meta::*;
mod pdf_text; mod pdf_text;
pub use pdf_text::*; pub use pdf_text::*;
use crate::{value::{Item, PileValue}, extract::traits::ObjectExtractor}; use crate::{
extract::traits::ObjectExtractor,
value::{Item, PileValue},
};
pub struct PdfExtractor { pub struct PdfExtractor {
text: Arc<PdfTextExtractor>, text: Arc<PdfTextExtractor>,

View File

@@ -8,7 +8,10 @@ use std::{
}; };
use tracing::trace; use tracing::trace;
use crate::{extract::traits::ObjectExtractor, value::{Item, PileValue, SyncReadBridge}}; use crate::{
extract::traits::ObjectExtractor,
value::{Item, PileValue, SyncReadBridge},
};
pub struct PdfMetaExtractor { pub struct PdfMetaExtractor {
item: Item, item: Item,

View File

@@ -8,7 +8,10 @@ use std::{
}; };
use tracing::trace; use tracing::trace;
use crate::{extract::traits::ObjectExtractor, value::{Item, PileValue, SyncReadBridge}}; use crate::{
extract::traits::ObjectExtractor,
value::{Item, PileValue, SyncReadBridge},
};
pub struct PdfTextExtractor { pub struct PdfTextExtractor {
item: Item, item: Item,

View File

@@ -1,11 +1,11 @@
use pile_config::Label; use pile_config::Label;
use std::sync::OnceLock; use std::sync::OnceLock;
use crate::{
value::{Item, PileValue},
extract::traits::ObjectExtractor,
};
use super::TomlExtractor; use super::TomlExtractor;
use crate::{
extract::traits::ObjectExtractor,
value::{Item, PileValue},
};
pub struct SidecarExtractor { pub struct SidecarExtractor {
item: Item, item: Item,

View File

@@ -3,18 +3,11 @@ use std::collections::HashMap;
use crate::{extract::traits::ObjectExtractor, value::PileValue}; use crate::{extract::traits::ObjectExtractor, value::PileValue};
#[derive(Default)]
pub struct MapExtractor { pub struct MapExtractor {
pub inner: HashMap<Label, PileValue>, pub inner: HashMap<Label, PileValue>,
} }
impl Default for MapExtractor {
fn default() -> Self {
Self {
inner: HashMap::new(),
}
}
}
#[async_trait::async_trait] #[async_trait::async_trait]
impl ObjectExtractor for MapExtractor { impl ObjectExtractor for MapExtractor {
async fn field(&self, name: &Label) -> Result<Option<PileValue>, std::io::Error> { async fn field(&self, name: &Label) -> Result<Option<PileValue>, std::io::Error> {

View File

@@ -1,15 +1,10 @@
use crate::{extract::traits::ListExtractor, value::PileValue}; use crate::{extract::traits::ListExtractor, value::PileValue};
#[derive(Default)]
pub struct VecExtractor { pub struct VecExtractor {
pub inner: Vec<PileValue>, pub inner: Vec<PileValue>,
} }
impl Default for VecExtractor {
fn default() -> Self {
Self { inner: Vec::new() }
}
}
#[async_trait::async_trait] #[async_trait::async_trait]
impl ListExtractor for VecExtractor { impl ListExtractor for VecExtractor {
async fn get(&self, idx: usize) -> Result<Option<PileValue>, std::io::Error> { async fn get(&self, idx: usize) -> Result<Option<PileValue>, std::io::Error> {

View File

@@ -4,5 +4,6 @@ pub use item::*;
mod readers; mod readers;
pub use readers::*; pub use readers::*;
#[expect(clippy::module_inception)]
mod value; mod value;
pub use value::*; pub use value::*;

View File

@@ -69,7 +69,7 @@ impl PileValue {
Self::U64(_) => Arc::new(MapExtractor::default()), Self::U64(_) => Arc::new(MapExtractor::default()),
Self::I64(_) => Arc::new(MapExtractor::default()), Self::I64(_) => Arc::new(MapExtractor::default()),
Self::Array(_) => Arc::new(MapExtractor::default()), Self::Array(_) => Arc::new(MapExtractor::default()),
Self::String(s) => Arc::new(StringExtractor::new(&s)), Self::String(s) => Arc::new(StringExtractor::new(s)),
Self::Blob { .. } => Arc::new(MapExtractor::default()), Self::Blob { .. } => Arc::new(MapExtractor::default()),
Self::ListExtractor(_) => Arc::new(MapExtractor::default()), Self::ListExtractor(_) => Arc::new(MapExtractor::default()),
Self::ObjectExtractor(e) => e.clone(), Self::ObjectExtractor(e) => e.clone(),
@@ -106,7 +106,7 @@ impl PileValue {
} }
}; };
out = e.field(&field).await?; out = e.field(field).await?;
} }
PathSegment::Index(idx) => { PathSegment::Index(idx) => {