Separate out the text markup types into their own types.

This commit is contained in:
Tom Alexander
2023-04-22 20:22:07 -04:00
parent 401fb339d0
commit d2fc8a513f
4 changed files with 131 additions and 13 deletions

View File

@@ -1,7 +1,9 @@
use super::util::assert_bounds;
use super::util::assert_name;
use crate::parser::sexp::Token;
use crate::parser::Bold;
use crate::parser::Clock;
use crate::parser::Code;
use crate::parser::Comment;
use crate::parser::CommentBlock;
use crate::parser::DiarySexp;
@@ -17,6 +19,7 @@ use crate::parser::FootnoteDefinition;
use crate::parser::GreaterBlock;
use crate::parser::Heading;
use crate::parser::HorizontalRule;
use crate::parser::Italic;
use crate::parser::Keyword;
use crate::parser::LatexEnvironment;
use crate::parser::Object;
@@ -29,10 +32,12 @@ use crate::parser::PropertyDrawer;
use crate::parser::RegularLink;
use crate::parser::Section;
use crate::parser::SrcBlock;
use crate::parser::StrikeThrough;
use crate::parser::Table;
use crate::parser::TableCell;
use crate::parser::TableRow;
use crate::parser::TextMarkup;
use crate::parser::Underline;
use crate::parser::Verbatim;
use crate::parser::VerseBlock;
#[derive(Debug)]
@@ -131,7 +136,12 @@ fn compare_object<'s>(
rust: &'s Object<'s>,
) -> Result<DiffResult, Box<dyn std::error::Error>> {
match rust {
Object::TextMarkup(obj) => compare_text_markup(source, emacs, obj),
Object::Bold(obj) => compare_bold(source, emacs, obj),
Object::Italic(obj) => compare_italic(source, emacs, obj),
Object::Underline(obj) => compare_underline(source, emacs, obj),
Object::Verbatim(obj) => compare_verbatim(source, emacs, obj),
Object::Code(obj) => compare_code(source, emacs, obj),
Object::StrikeThrough(obj) => compare_strike_through(source, emacs, obj),
Object::PlainText(obj) => compare_plain_text(source, emacs, obj),
Object::RegularLink(obj) => compare_regular_link(source, emacs, obj),
}
@@ -906,14 +916,79 @@ fn compare_plain_text<'s>(
})
}
fn compare_text_markup<'s>(
fn compare_bold<'s>(
_source: &'s str,
emacs: &'s Token<'s>,
rust: &'s TextMarkup<'s>,
rust: &'s Bold<'s>,
) -> Result<DiffResult, Box<dyn std::error::Error>> {
Ok(DiffResult {
status: DiffStatus::Good,
name: "text-markup".to_owned(),
name: "bold".to_owned(),
message: None,
children: Vec::new(),
})
}
fn compare_italic<'s>(
_source: &'s str,
emacs: &'s Token<'s>,
rust: &'s Italic<'s>,
) -> Result<DiffResult, Box<dyn std::error::Error>> {
Ok(DiffResult {
status: DiffStatus::Good,
name: "italic".to_owned(),
message: None,
children: Vec::new(),
})
}
fn compare_underline<'s>(
_source: &'s str,
emacs: &'s Token<'s>,
rust: &'s Underline<'s>,
) -> Result<DiffResult, Box<dyn std::error::Error>> {
Ok(DiffResult {
status: DiffStatus::Good,
name: "underline".to_owned(),
message: None,
children: Vec::new(),
})
}
fn compare_verbatim<'s>(
_source: &'s str,
emacs: &'s Token<'s>,
rust: &'s Verbatim<'s>,
) -> Result<DiffResult, Box<dyn std::error::Error>> {
Ok(DiffResult {
status: DiffStatus::Good,
name: "verbatim".to_owned(),
message: None,
children: Vec::new(),
})
}
fn compare_code<'s>(
_source: &'s str,
emacs: &'s Token<'s>,
rust: &'s Code<'s>,
) -> Result<DiffResult, Box<dyn std::error::Error>> {
Ok(DiffResult {
status: DiffStatus::Good,
name: "code".to_owned(),
message: None,
children: Vec::new(),
})
}
fn compare_strike_through<'s>(
_source: &'s str,
emacs: &'s Token<'s>,
rust: &'s StrikeThrough<'s>,
) -> Result<DiffResult, Box<dyn std::error::Error>> {
Ok(DiffResult {
status: DiffStatus::Good,
name: "strike-through".to_owned(),
message: None,
children: Vec::new(),
})