noosphere_into/transform/
transform_implementation.rs1use noosphere_core::context::HasSphereContext;
2use noosphere_storage::Storage;
3
4use crate::{Resolver, SphereContentTranscluder, StaticHtmlResolver, Transcluder};
5
6pub trait Transform: Clone {
10 type Resolver: Resolver;
11 type Transcluder: Transcluder;
12
13 fn resolver(&self) -> &Self::Resolver;
14 fn transcluder(&self) -> &Self::Transcluder;
15}
16
17#[derive(Clone)]
20pub struct StaticHtmlTransform<R, S>
21where
22 R: HasSphereContext<S> + Clone,
23 S: Storage + 'static,
24{
25 pub resolver: StaticHtmlResolver,
26 pub transcluder: SphereContentTranscluder<R, S>,
27}
28
29impl<R, S> StaticHtmlTransform<R, S>
30where
31 R: HasSphereContext<S> + Clone,
32 S: Storage + 'static,
33{
34 pub fn new(content: R) -> Self {
35 StaticHtmlTransform {
36 resolver: StaticHtmlResolver(),
37 transcluder: SphereContentTranscluder::new(content),
38 }
39 }
40}
41
42impl<R, S> Transform for StaticHtmlTransform<R, S>
43where
44 R: HasSphereContext<S> + Clone,
45 S: Storage + 'static,
46{
47 type Resolver = StaticHtmlResolver;
48
49 type Transcluder = SphereContentTranscluder<R, S>;
50
51 fn resolver(&self) -> &Self::Resolver {
52 &self.resolver
53 }
54
55 fn transcluder(&self) -> &Self::Transcluder {
56 &self.transcluder
57 }
58}