x
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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>,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
@@ -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::*;
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user