Browse Source

Make permalinks out of co-located images

index-subcmd
Vincent Prouillet 6 years ago
parent
commit
d69ada09d2
2 changed files with 22 additions and 3 deletions
  1. +9
    -1
      components/rendering/src/markdown.rs
  2. +13
    -2
      components/rendering/tests/markdown.rs

+ 9
- 1
components/rendering/src/markdown.rs View File

@@ -108,7 +108,15 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result<(Strin
highlighter = None; highlighter = None;
Event::Html(Owned("</pre>".to_string())) Event::Html(Owned("</pre>".to_string()))
}, },
// Need to handle relative links
Event::Start(Tag::Image(src, title)) => {
if is_colocated_asset_link(&src) {
return Event::Start(
Tag::Image(Owned(format!("{}{}", context.current_page_permalink, src)), title)
);
}

Event::Start(Tag::Link(src, title))
},
Event::Start(Tag::Link(link, title)) => { Event::Start(Tag::Link(link, title)) => {
// A few situations here: // A few situations here:
// - it could be a relative link (starting with `./`) // - it could be a relative link (starting with `./`)


+ 13
- 2
components/rendering/tests/markdown.rs View File

@@ -492,9 +492,8 @@ fn can_make_valid_relative_link_in_header() {
); );
} }



#[test] #[test]
fn can_make_permalinks_with_colocated_assets() {
fn can_make_permalinks_with_colocated_assets_for_link() {
let permalinks_ctx = HashMap::new(); let permalinks_ctx = HashMap::new();
let config = Config::default(); let config = Config::default();
let context = RenderContext::new(&GUTENBERG_TERA, &config, "https://vincent.is/about/", &permalinks_ctx, InsertAnchor::None); let context = RenderContext::new(&GUTENBERG_TERA, &config, "https://vincent.is/about/", &permalinks_ctx, InsertAnchor::None);
@@ -504,3 +503,15 @@ fn can_make_permalinks_with_colocated_assets() {
"<p><a href=\"https://vincent.is/about/image.jpg\">an image</a></p>\n" "<p><a href=\"https://vincent.is/about/image.jpg\">an image</a></p>\n"
); );
} }

#[test]
fn can_make_permalinks_with_colocated_assets_for_image() {
let permalinks_ctx = HashMap::new();
let config = Config::default();
let context = RenderContext::new(&GUTENBERG_TERA, &config, "https://vincent.is/about/", &permalinks_ctx, InsertAnchor::None);
let res = render_content("![alt text](image.jpg)", &context).unwrap();
assert_eq!(
res.0,
"<p><img src=\"https://vincent.is/about/image.jpg\" alt=\"alt text\" /></p>\n"
);
}

Loading…
Cancel
Save