Add support for rendering the images.
This commit is contained in:
parent
eb18185131
commit
4fb67c18ae
@ -32,7 +32,8 @@
|
||||
{@eq value="code"}{>code/}{/eq}
|
||||
{@eq value="verbatim"}{>verbatim/}{/eq}
|
||||
{@eq value="plain_text"}{>plain_text/}{/eq}
|
||||
{@eq value="regular_link"}{>regular_link/}{/eq}
|
||||
{@eq value="regular_link_anchor"}{>regular_link_anchor/}{/eq}
|
||||
{@eq value="regular_link_image"}{>regular_link_image/}{/eq}
|
||||
{@eq value="radio_link"}{>radio_link/}{/eq}
|
||||
{@eq value="radio_target"}{>radio_target/}{/eq}
|
||||
{@eq value="plain_link"}{>plain_link/}{/eq}
|
||||
|
@ -6,7 +6,8 @@
|
||||
{@eq value="code"}{>code/}{/eq}
|
||||
{@eq value="verbatim"}{>verbatim/}{/eq}
|
||||
{@eq value="plain_text"}{>plain_text/}{/eq}
|
||||
{@eq value="regular_link"}{>regular_link/}{/eq}
|
||||
{@eq value="regular_link_anchor"}{>regular_link_anchor/}{/eq}
|
||||
{@eq value="regular_link_image"}{>regular_link_image/}{/eq}
|
||||
{@eq value="radio_link"}{>radio_link/}{/eq}
|
||||
{@eq value="radio_target"}{>radio_target/}{/eq}
|
||||
{@eq value="plain_link"}{>plain_link/}{/eq}
|
||||
|
@ -0,0 +1 @@
|
||||
<img src="{.src}" alt="{.alt}" />
|
@ -3,6 +3,7 @@ use serde::Serialize;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IRegularLink;
|
||||
use crate::intermediate::LinkTarget;
|
||||
|
||||
use super::macros::render;
|
||||
use super::RenderObject;
|
||||
@ -10,13 +11,29 @@ use super::RenderObject;
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(tag = "type")]
|
||||
#[serde(rename = "regular_link")]
|
||||
pub(crate) struct RenderRegularLink {
|
||||
pub(crate) enum RenderRegularLink {
|
||||
#[serde(rename = "regular_link_anchor")]
|
||||
Anchor(RenderRegularLinkAnchor),
|
||||
#[serde(rename = "regular_link_image")]
|
||||
Image(RenderRegularLinkImage),
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub(crate) struct RenderRegularLinkAnchor {
|
||||
target: String,
|
||||
raw_link: String,
|
||||
children: Vec<RenderObject>,
|
||||
post_blank: organic::types::PostBlank,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub(crate) struct RenderRegularLinkImage {
|
||||
src: String,
|
||||
alt: String,
|
||||
raw_link: String,
|
||||
post_blank: organic::types::PostBlank,
|
||||
}
|
||||
|
||||
render!(RenderRegularLink, IRegularLink, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
@ -31,10 +48,22 @@ render!(RenderRegularLink, IRegularLink, original, render_context, {
|
||||
.generate_final_target(render_context.clone())?
|
||||
.unwrap_or_else(|| "".to_owned());
|
||||
|
||||
Ok(RenderRegularLink {
|
||||
target,
|
||||
raw_link: original.raw_link.clone(),
|
||||
children,
|
||||
post_blank: original.post_blank,
|
||||
})
|
||||
let render_link = match &original.target {
|
||||
LinkTarget::Raw(_) | LinkTarget::Post { .. } | LinkTarget::Target { .. } => {
|
||||
RenderRegularLink::Anchor(RenderRegularLinkAnchor {
|
||||
target,
|
||||
raw_link: original.raw_link.clone(),
|
||||
children,
|
||||
post_blank: original.post_blank,
|
||||
})
|
||||
}
|
||||
LinkTarget::Image { alt, .. } => RenderRegularLink::Image(RenderRegularLinkImage {
|
||||
src: target,
|
||||
alt: alt.clone(),
|
||||
raw_link: original.raw_link.clone(),
|
||||
post_blank: original.post_blank,
|
||||
}),
|
||||
};
|
||||
|
||||
Ok(render_link)
|
||||
});
|
||||
|
@ -123,6 +123,7 @@ pub(crate) use radio_link::IRadioLink;
|
||||
pub(crate) use radio_target::IRadioTarget;
|
||||
pub(crate) use registry::Registry;
|
||||
pub(crate) use regular_link::IRegularLink;
|
||||
pub(crate) use regular_link::LinkTarget;
|
||||
pub(crate) use section::ISection;
|
||||
pub(crate) use special_block::ISpecialBlock;
|
||||
pub(crate) use src_block::ISrcBlock;
|
||||
|
Loading…
x
Reference in New Issue
Block a user