style(cheddar): Reformat with rustfmt
Change-Id: I9a0764f23c1269447a8b18f3128074fc58f70456 Reviewed-on: https://cl.tvl.fyi/c/depot/+/492 Reviewed-by: glittershark <grfn@gws.fyi>
This commit is contained in:
parent
d1524a5a6f
commit
dbb4a57bbf
1 changed files with 44 additions and 37 deletions
|
@ -1,26 +1,24 @@
|
||||||
use clap::{Arg, App};
|
use clap::{App, Arg};
|
||||||
use comrak::arena_tree::Node;
|
use comrak::arena_tree::Node;
|
||||||
use comrak::nodes::{Ast, AstNode, NodeValue, NodeCodeBlock, NodeHtmlBlock};
|
use comrak::nodes::{Ast, AstNode, NodeCodeBlock, NodeHtmlBlock, NodeValue};
|
||||||
use comrak::{Arena, parse_document, format_html, ComrakOptions};
|
use comrak::{format_html, parse_document, Arena, ComrakOptions};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::ffi::OsStr;
|
use std::ffi::OsStr;
|
||||||
|
use std::io;
|
||||||
use std::io::BufRead;
|
use std::io::BufRead;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::io;
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use syntect::dumps::from_binary;
|
use syntect::dumps::from_binary;
|
||||||
use syntect::easy::HighlightLines;
|
use syntect::easy::HighlightLines;
|
||||||
use syntect::highlighting::ThemeSet;
|
use syntect::highlighting::ThemeSet;
|
||||||
use syntect::parsing::{SyntaxSet, SyntaxReference};
|
use syntect::parsing::{SyntaxReference, SyntaxSet};
|
||||||
use syntect::util::LinesWithEndings;
|
use syntect::util::LinesWithEndings;
|
||||||
|
|
||||||
use syntect::html::{
|
use syntect::html::{
|
||||||
IncludeBackground,
|
append_highlighted_html_for_styled_line, start_highlighted_html_snippet, IncludeBackground,
|
||||||
append_highlighted_html_for_styled_line,
|
|
||||||
start_highlighted_html_snippet,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
|
@ -81,7 +79,10 @@ fn should_continue(res: &io::Result<usize>) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function is taken from the Comrak documentation.
|
// This function is taken from the Comrak documentation.
|
||||||
fn iter_nodes<'a, F>(node: &'a AstNode<'a>, f: &F) where F : Fn(&'a AstNode<'a>) {
|
fn iter_nodes<'a, F>(node: &'a AstNode<'a>, f: &F)
|
||||||
|
where
|
||||||
|
F: Fn(&'a AstNode<'a>),
|
||||||
|
{
|
||||||
f(node);
|
f(node);
|
||||||
for c in node.children() {
|
for c in node.children() {
|
||||||
iter_nodes(c, f);
|
iter_nodes(c, f);
|
||||||
|
@ -95,7 +96,11 @@ fn iter_nodes<'a, F>(node: &'a AstNode<'a>, f: &F) where F : Fn(&'a AstNode<'a>)
|
||||||
// ASCII characters, anyways).
|
// ASCII characters, anyways).
|
||||||
fn find_syntax_case_insensitive(info: &str) -> Option<&'static SyntaxReference> {
|
fn find_syntax_case_insensitive(info: &str) -> Option<&'static SyntaxReference> {
|
||||||
// TODO(tazjin): memoize this lookup
|
// TODO(tazjin): memoize this lookup
|
||||||
SYNTAXES.syntaxes().iter().rev().find(|&s| info.eq_ignore_ascii_case(&s.name))
|
SYNTAXES
|
||||||
|
.syntaxes()
|
||||||
|
.iter()
|
||||||
|
.rev()
|
||||||
|
.find(|&s| info.eq_ignore_ascii_case(&s.name))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replaces code-block inside of a Markdown AST with HTML blocks rendered by
|
// Replaces code-block inside of a Markdown AST with HTML blocks rendered by
|
||||||
|
@ -119,9 +124,7 @@ fn highlight_code_block(code_block: &NodeCodeBlock) -> NodeValue {
|
||||||
|
|
||||||
for line in LinesWithEndings::from(&code) {
|
for line in LinesWithEndings::from(&code) {
|
||||||
let regions = hl.highlight(line, &SYNTAXES);
|
let regions = hl.highlight(line, &SYNTAXES);
|
||||||
append_highlighted_html_for_styled_line(
|
append_highlighted_html_for_styled_line(®ions[..], IncludeBackground::No, &mut buf);
|
||||||
®ions[..], IncludeBackground::No, &mut buf,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buf.push_str("</pre>");
|
buf.push_str("</pre>");
|
||||||
|
@ -151,17 +154,17 @@ fn has_callout<'a>(node: &Node<'a, RefCell<Ast>>) -> Option<Callout> {
|
||||||
Some(child) => match &child.value {
|
Some(child) => match &child.value {
|
||||||
NodeValue::Text(text) => {
|
NodeValue::Text(text) => {
|
||||||
if text.starts_with("TODO".as_bytes()) {
|
if text.starts_with("TODO".as_bytes()) {
|
||||||
return Some(Callout::Todo)
|
return Some(Callout::Todo);
|
||||||
} else if text.starts_with("WARNING".as_bytes()) {
|
} else if text.starts_with("WARNING".as_bytes()) {
|
||||||
return Some(Callout::Warning)
|
return Some(Callout::Warning);
|
||||||
} else if text.starts_with("QUESTION".as_bytes()) {
|
} else if text.starts_with("QUESTION".as_bytes()) {
|
||||||
return Some(Callout::Question)
|
return Some(Callout::Question);
|
||||||
} else if text.starts_with("TIP".as_bytes()) {
|
} else if text.starts_with("TIP".as_bytes()) {
|
||||||
return Some(Callout::Tip)
|
return Some(Callout::Tip);
|
||||||
}
|
}
|
||||||
|
|
||||||
return None
|
return None;
|
||||||
},
|
}
|
||||||
_ => return None,
|
_ => return None,
|
||||||
},
|
},
|
||||||
_ => return None,
|
_ => return None,
|
||||||
|
@ -185,7 +188,9 @@ fn format_callout_paragraph(callout: Callout) -> NodeValue {
|
||||||
fn format_markdown<R: BufRead, W: Write>(reader: &mut R, writer: &mut W) {
|
fn format_markdown<R: BufRead, W: Write>(reader: &mut R, writer: &mut W) {
|
||||||
let document = {
|
let document = {
|
||||||
let mut buffer = String::new();
|
let mut buffer = String::new();
|
||||||
reader.read_to_string(&mut buffer).expect("reading should work");
|
reader
|
||||||
|
.read_to_string(&mut buffer)
|
||||||
|
.expect("reading should work");
|
||||||
drop(reader);
|
drop(reader);
|
||||||
buffer
|
buffer
|
||||||
};
|
};
|
||||||
|
@ -213,12 +218,14 @@ fn format_markdown<R: BufRead, W: Write>(reader: &mut R, writer: &mut W) {
|
||||||
let mut ast = node.data.borrow_mut();
|
let mut ast = node.data.borrow_mut();
|
||||||
let new = match &ast.value {
|
let new = match &ast.value {
|
||||||
NodeValue::CodeBlock(code) => Some(highlight_code_block(code)),
|
NodeValue::CodeBlock(code) => Some(highlight_code_block(code)),
|
||||||
NodeValue::Paragraph => if let Some(callout) = has_callout(node) {
|
NodeValue::Paragraph => {
|
||||||
node.insert_after(&p_close);
|
if let Some(callout) = has_callout(node) {
|
||||||
Some(format_callout_paragraph(callout))
|
node.insert_after(&p_close);
|
||||||
} else {
|
Some(format_callout_paragraph(callout))
|
||||||
None
|
} else {
|
||||||
},
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -227,8 +234,7 @@ fn format_markdown<R: BufRead, W: Write>(reader: &mut R, writer: &mut W) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
format_html(root, &MD_OPTS, writer)
|
format_html(root, &MD_OPTS, writer).expect("Markdown rendering failed");
|
||||||
.expect("Markdown rendering failed");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn format_code<R: BufRead, W: Write>(reader: &mut R, writer: &mut W, args: &Args) {
|
fn format_code<R: BufRead, W: Write>(reader: &mut R, writer: &mut W, args: &Args) {
|
||||||
|
@ -240,7 +246,8 @@ fn format_code<R: BufRead, W: Write>(reader: &mut R, writer: &mut W, args: &Args
|
||||||
// Set up the highlighter
|
// Set up the highlighter
|
||||||
let theme = &THEMES.themes["InspiredGitHub"];
|
let theme = &THEMES.themes["InspiredGitHub"];
|
||||||
|
|
||||||
let syntax = args.lang_override
|
let syntax = args
|
||||||
|
.lang_override
|
||||||
.and_then(|l| SYNTAXES.find_syntax_by_name(l))
|
.and_then(|l| SYNTAXES.find_syntax_by_name(l))
|
||||||
.or_else(|| match args.extension {
|
.or_else(|| match args.extension {
|
||||||
Some(ref ext) => SYNTAXES.find_syntax_by_extension(ext),
|
Some(ref ext) => SYNTAXES.find_syntax_by_extension(ext),
|
||||||
|
@ -286,13 +293,13 @@ fn main() {
|
||||||
// and what file extension has been supplied.
|
// and what file extension has been supplied.
|
||||||
let matches = App::new("cheddar")
|
let matches = App::new("cheddar")
|
||||||
.about("TVL's syntax highlighter")
|
.about("TVL's syntax highlighter")
|
||||||
.arg(Arg::with_name("about-filter")
|
.arg(
|
||||||
.help("Run as a cgit about-filter (renders Markdown)")
|
Arg::with_name("about-filter")
|
||||||
.long("about-filter")
|
.help("Run as a cgit about-filter (renders Markdown)")
|
||||||
.takes_value(false))
|
.long("about-filter")
|
||||||
.arg(Arg::with_name("filename")
|
.takes_value(false),
|
||||||
.help("File to render")
|
)
|
||||||
.index(1))
|
.arg(Arg::with_name("filename").help("File to render").index(1))
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
|
||||||
let mut args = Args::default();
|
let mut args = Args::default();
|
||||||
|
@ -316,6 +323,6 @@ fn main() {
|
||||||
|
|
||||||
match args.extension.as_ref().map(String::as_str) {
|
match args.extension.as_ref().map(String::as_str) {
|
||||||
Some("md") if args.about_filter => format_markdown(&mut in_handle, &mut out_handle),
|
Some("md") if args.about_filter => format_markdown(&mut in_handle, &mut out_handle),
|
||||||
_ => format_code(&mut in_handle, &mut out_handle, &args),
|
_ => format_code(&mut in_handle, &mut out_handle, &args),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue