Tex export functional
This commit is contained in:
parent
ebfe4d6e7c
commit
85e0c3abc5
32
src/main.rs
32
src/main.rs
@ -85,7 +85,15 @@ fn graphviz_export(tree: &TreeNode) -> String {
|
|||||||
out
|
out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn tex_escape_str(s: &str) -> String {
|
||||||
|
s.replace('_', "\\_")
|
||||||
|
.trim_start_matches('\n')
|
||||||
|
.replace("\n\n", "\n")
|
||||||
|
.replace('\n', "\\newline\n")
|
||||||
|
}
|
||||||
|
|
||||||
fn tex_export_inner(tree: &ObjectChild, out: &mut String, required: bool) {
|
fn tex_export_inner(tree: &ObjectChild, out: &mut String, required: bool) {
|
||||||
|
out.push_str("\\begin{minipage}{0.45\\textwidth}\n");
|
||||||
let type_str = match &tree.node.r#type {
|
let type_str = match &tree.node.r#type {
|
||||||
NodeType::Null => "NULL".to_string(),
|
NodeType::Null => "NULL".to_string(),
|
||||||
NodeType::Boolean => "bool".to_string(),
|
NodeType::Boolean => "bool".to_string(),
|
||||||
@ -96,25 +104,37 @@ fn tex_export_inner(tree: &ObjectChild, out: &mut String, required: bool) {
|
|||||||
NodeType::Integer => "integer".to_string(),
|
NodeType::Integer => "integer".to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
write!(out, "\\textbf{{{}}}", tree.name).unwrap();
|
write!(out, "\\textbf{{{}}}", tex_escape_str(&tree.name)).unwrap();
|
||||||
if required {
|
if required {
|
||||||
out.push_str("\\textcolor{red}{*}");
|
out.push_str("\\textcolor{red}{*}");
|
||||||
}
|
}
|
||||||
out.push_str("\n\\newline");
|
out.push_str("\n\\newline");
|
||||||
write!(out, "\\textit{{\\textcolor{{gray}}{{{type_str}}}}}").unwrap();
|
write!(
|
||||||
|
out,
|
||||||
|
"\\textit{{\\textcolor{{gray}}{{{}}}}}",
|
||||||
|
tex_escape_str(&type_str)
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
if let Some(description) = &tree.node.description {
|
if let Some(description) = &tree.node.description {
|
||||||
write!(out, "\\newline\n\textcolor{{gray}}{{{}}}", description).unwrap();
|
write!(
|
||||||
|
out,
|
||||||
|
"\\newline\n\\textcolor{{gray}}{{{}}}",
|
||||||
|
tex_escape_str(description)
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(example) = &tree.node.examples.get(0) {
|
if let Some(example) = &tree.node.examples.get(0) {
|
||||||
write!(
|
write!(
|
||||||
out,
|
out,
|
||||||
"\\newline\n\textcolor{{gray}}{{Exemple : {}}}",
|
"\\newline\n\\textcolor{{gray}}{{Exemple : {}}}",
|
||||||
example
|
tex_escape_str(example)
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out.push_str("\\end{minipage}\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tex_export(tree: &TreeNode) -> String {
|
fn tex_export(tree: &TreeNode) -> String {
|
||||||
@ -133,7 +153,7 @@ fn tex_export(tree: &TreeNode) -> String {
|
|||||||
.unwrap_or(false),
|
.unwrap_or(false),
|
||||||
);
|
);
|
||||||
|
|
||||||
out.push_str("\n\n");
|
out.push_str("\n\n \\vspace{0.2cm} \n\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => tex_export_inner(
|
_ => tex_export_inner(
|
||||||
|
Loading…
Reference in New Issue
Block a user