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="code"}{>code/}{/eq}
|
||||||
{@eq value="verbatim"}{>verbatim/}{/eq}
|
{@eq value="verbatim"}{>verbatim/}{/eq}
|
||||||
{@eq value="plain_text"}{>plain_text/}{/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_link"}{>radio_link/}{/eq}
|
||||||
{@eq value="radio_target"}{>radio_target/}{/eq}
|
{@eq value="radio_target"}{>radio_target/}{/eq}
|
||||||
{@eq value="plain_link"}{>plain_link/}{/eq}
|
{@eq value="plain_link"}{>plain_link/}{/eq}
|
||||||
|
@ -6,7 +6,8 @@
|
|||||||
{@eq value="code"}{>code/}{/eq}
|
{@eq value="code"}{>code/}{/eq}
|
||||||
{@eq value="verbatim"}{>verbatim/}{/eq}
|
{@eq value="verbatim"}{>verbatim/}{/eq}
|
||||||
{@eq value="plain_text"}{>plain_text/}{/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_link"}{>radio_link/}{/eq}
|
||||||
{@eq value="radio_target"}{>radio_target/}{/eq}
|
{@eq value="radio_target"}{>radio_target/}{/eq}
|
||||||
{@eq value="plain_link"}{>plain_link/}{/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 super::render_context::RenderContext;
|
||||||
use crate::error::CustomError;
|
use crate::error::CustomError;
|
||||||
use crate::intermediate::IRegularLink;
|
use crate::intermediate::IRegularLink;
|
||||||
|
use crate::intermediate::LinkTarget;
|
||||||
|
|
||||||
use super::macros::render;
|
use super::macros::render;
|
||||||
use super::RenderObject;
|
use super::RenderObject;
|
||||||
@ -10,13 +11,29 @@ use super::RenderObject;
|
|||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
#[serde(tag = "type")]
|
#[serde(tag = "type")]
|
||||||
#[serde(rename = "regular_link")]
|
#[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,
|
target: String,
|
||||||
raw_link: String,
|
raw_link: String,
|
||||||
children: Vec<RenderObject>,
|
children: Vec<RenderObject>,
|
||||||
post_blank: organic::types::PostBlank,
|
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, {
|
render!(RenderRegularLink, IRegularLink, original, render_context, {
|
||||||
let children = {
|
let children = {
|
||||||
let mut ret = Vec::new();
|
let mut ret = Vec::new();
|
||||||
@ -31,10 +48,22 @@ render!(RenderRegularLink, IRegularLink, original, render_context, {
|
|||||||
.generate_final_target(render_context.clone())?
|
.generate_final_target(render_context.clone())?
|
||||||
.unwrap_or_else(|| "".to_owned());
|
.unwrap_or_else(|| "".to_owned());
|
||||||
|
|
||||||
Ok(RenderRegularLink {
|
let render_link = match &original.target {
|
||||||
target,
|
LinkTarget::Raw(_) | LinkTarget::Post { .. } | LinkTarget::Target { .. } => {
|
||||||
raw_link: original.raw_link.clone(),
|
RenderRegularLink::Anchor(RenderRegularLinkAnchor {
|
||||||
children,
|
target,
|
||||||
post_blank: original.post_blank,
|
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 radio_target::IRadioTarget;
|
||||||
pub(crate) use registry::Registry;
|
pub(crate) use registry::Registry;
|
||||||
pub(crate) use regular_link::IRegularLink;
|
pub(crate) use regular_link::IRegularLink;
|
||||||
|
pub(crate) use regular_link::LinkTarget;
|
||||||
pub(crate) use section::ISection;
|
pub(crate) use section::ISection;
|
||||||
pub(crate) use special_block::ISpecialBlock;
|
pub(crate) use special_block::ISpecialBlock;
|
||||||
pub(crate) use src_block::ISrcBlock;
|
pub(crate) use src_block::ISrcBlock;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user