Basic cours support #44
2 changed files with 22 additions and 7 deletions
|
@ -2,7 +2,7 @@ use crate::misc::date::Date;
|
||||||
use base64::engine::general_purpose;
|
use base64::engine::general_purpose;
|
||||||
use base64::Engine;
|
use base64::Engine;
|
||||||
use comrak::nodes::{AstNode, NodeValue};
|
use comrak::nodes::{AstNode, NodeValue};
|
||||||
use comrak::{format_html, parse_document, Arena, ComrakOptions, ListStyleType};
|
use comrak::{format_html, parse_document, Arena, ComrakOptions, ListStyleType, Options};
|
||||||
use lol_html::html_content::ContentType;
|
use lol_html::html_content::ContentType;
|
||||||
use lol_html::{element, rewrite_str, HtmlRewriter, RewriteStrSettings, Settings};
|
use lol_html::{element, rewrite_str, HtmlRewriter, RewriteStrSettings, Settings};
|
||||||
use ramhorns::Content;
|
use ramhorns::Content;
|
||||||
|
@ -227,7 +227,14 @@ fn fix_images_and_integration(path: &str, html: String) -> (String, Metadata) {
|
||||||
if let Ok(file) = fs::read_to_string(&img_path) {
|
if let Ok(file) = fs::read_to_string(&img_path) {
|
||||||
let mime = mime_guess::from_path(&img_path).first_or_octet_stream();
|
let mime = mime_guess::from_path(&img_path).first_or_octet_stream();
|
||||||
if mime == "text/markdown" {
|
if mime == "text/markdown" {
|
||||||
let data = read_md(&img_path, &file, TypeFileMetadata::Generic);
|
let mut options = get_options();
|
||||||
|
options.extension.footnotes = false;
|
||||||
|
let data = read_md(
|
||||||
|
&img_path,
|
||||||
|
&file,
|
||||||
|
TypeFileMetadata::Generic,
|
||||||
|
Some(options),
|
||||||
|
);
|
||||||
el.replace(&data.content, ContentType::Html);
|
el.replace(&data.content, ContentType::Html);
|
||||||
metadata.merge(data.metadata);
|
metadata.merge(data.metadata);
|
||||||
} else {
|
} else {
|
||||||
|
@ -250,11 +257,19 @@ fn fix_images_and_integration(path: &str, html: String) -> (String, Metadata) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Transform markdown string to File structure
|
/// Transform markdown string to File structure
|
||||||
pub fn read_md(path: &str, raw_text: &str, metadata_type: TypeFileMetadata) -> File {
|
pub fn read_md(
|
||||||
|
path: &str,
|
||||||
|
raw_text: &str,
|
||||||
|
metadata_type: TypeFileMetadata,
|
||||||
|
options: Option<Options>,
|
||||||
|
) -> File {
|
||||||
let arena = Arena::new();
|
let arena = Arena::new();
|
||||||
|
|
||||||
let options = get_options();
|
let opt = match options {
|
||||||
let root = parse_document(&arena, raw_text, &options);
|
Some(specific_opt) => specific_opt,
|
||||||
|
None => get_options(),
|
||||||
|
};
|
||||||
|
let root = parse_document(&arena, raw_text, &opt);
|
||||||
|
|
||||||
// Find metadata
|
// Find metadata
|
||||||
let metadata = get_metadata(root, metadata_type);
|
let metadata = get_metadata(root, metadata_type);
|
||||||
|
@ -264,7 +279,7 @@ pub fn read_md(path: &str, raw_text: &str, metadata_type: TypeFileMetadata) -> F
|
||||||
|
|
||||||
// Convert to HTML
|
// Convert to HTML
|
||||||
let mut html = vec![];
|
let mut html = vec![];
|
||||||
format_html(root, &options, &mut html).unwrap();
|
format_html(root, &opt, &mut html).unwrap();
|
||||||
|
|
||||||
let mut html_content = String::from_utf8(html).unwrap();
|
let mut html_content = String::from_utf8(html).unwrap();
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ pub fn read_file(filename: &str, expected_file: TypeFileMetadata) -> Option<File
|
||||||
Err(_) => None,
|
Err(_) => None,
|
||||||
},
|
},
|
||||||
_ => match fs::read_to_string(filename) {
|
_ => match fs::read_to_string(filename) {
|
||||||
Ok(text) => Some(read_md(filename, &text, expected_file)),
|
Ok(text) => Some(read_md(filename, &text, expected_file, None)),
|
||||||
Err(_) => None,
|
Err(_) => None,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue