Remove PartialEq from Object.
This commit is contained in:
parent
10aa0956ee
commit
f5699ce830
@ -128,7 +128,7 @@ pub struct DiffResult<'b, 's> {
|
||||
emacs_token: &'b Token<'s>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub(crate) enum DiffStatus {
|
||||
Good,
|
||||
Bad,
|
||||
@ -164,7 +164,7 @@ impl<'b, 's> DiffEntry<'b, 's> {
|
||||
|
||||
fn is_immediately_bad(&self) -> bool {
|
||||
match self {
|
||||
DiffEntry::DiffResult(diff) => diff.status == DiffStatus::Bad,
|
||||
DiffEntry::DiffResult(diff) => matches!(diff.status, DiffStatus::Bad),
|
||||
DiffEntry::DiffLayer(_) => false,
|
||||
}
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ fn impl_balanced_bracket<
|
||||
let contents_end = remaining;
|
||||
|
||||
let (remaining, _) = end_parser(remaining)?;
|
||||
let contents = if contents_start != contents_end {
|
||||
let contents = if Into::<&str>::into(contents_start) != Into::<&str>::into(contents_end) {
|
||||
Some(contents_start.get_until(contents_end))
|
||||
} else {
|
||||
None
|
||||
@ -244,7 +244,7 @@ mod tests {
|
||||
let input = OrgSource::new("()");
|
||||
let (remaining, call) = opt(babel_call_call)(input)?;
|
||||
assert_eq!(Into::<&str>::into(remaining), "()");
|
||||
assert_eq!(call, None);
|
||||
assert!(matches!(call, None));
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -210,12 +210,12 @@ mod tests {
|
||||
use crate::context::GlobalSettings;
|
||||
use crate::context::List;
|
||||
use crate::parser::element_parser::element;
|
||||
use crate::types::CitationReference;
|
||||
use crate::types::Element;
|
||||
use crate::types::GetStandardProperties;
|
||||
use crate::types::StandardProperties;
|
||||
|
||||
#[test]
|
||||
fn citation_simple() {
|
||||
fn citation_simple() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let input = OrgSource::new("[cite:@foo]");
|
||||
let global_settings = GlobalSettings::default();
|
||||
let initial_context = ContextElement::document_context();
|
||||
@ -232,23 +232,31 @@ mod tests {
|
||||
"[cite:@foo]"
|
||||
);
|
||||
assert_eq!(first_paragraph.children.len(), 1);
|
||||
assert_eq!(
|
||||
first_paragraph
|
||||
.children
|
||||
.first()
|
||||
.expect("Len already asserted to be 1"),
|
||||
&Object::Citation(Citation {
|
||||
source: "[cite:@foo]",
|
||||
style: None,
|
||||
prefix: vec![],
|
||||
suffix: vec![],
|
||||
children: vec![CitationReference {
|
||||
source: "@foo",
|
||||
key: "foo",
|
||||
prefix: vec![],
|
||||
suffix: vec![]
|
||||
}]
|
||||
})
|
||||
);
|
||||
|
||||
match first_paragraph
|
||||
.children
|
||||
.first()
|
||||
.expect("Len already asserted to be 1.")
|
||||
{
|
||||
Object::Citation(inner) => {
|
||||
assert_eq!(inner.get_source(), "[cite:@foo]");
|
||||
assert_eq!(inner.children.len(), 1);
|
||||
assert!(inner.prefix.is_empty());
|
||||
assert!(inner.suffix.is_empty());
|
||||
assert!(inner.style.is_none());
|
||||
let citation_reference = inner
|
||||
.children
|
||||
.first()
|
||||
.expect("Len already asserted to be 1.");
|
||||
assert_eq!(citation_reference.get_source(), "@foo");
|
||||
assert_eq!(citation_reference.key, "foo");
|
||||
assert!(citation_reference.prefix.is_empty());
|
||||
assert!(citation_reference.suffix.is_empty());
|
||||
}
|
||||
_ => {
|
||||
return Err("Child should be a citation.".into());
|
||||
}
|
||||
};
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ use nom::Slice;
|
||||
|
||||
pub(crate) type BracketDepth = i16;
|
||||
|
||||
#[derive(Copy, Clone, PartialEq)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub(crate) struct OrgSource<'s> {
|
||||
full_source: &'s str,
|
||||
start: usize,
|
||||
|
@ -179,7 +179,7 @@ mod tests {
|
||||
use crate::types::PlainText;
|
||||
|
||||
#[test]
|
||||
fn plain_text_radio_target() {
|
||||
fn plain_text_radio_target() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let input = OrgSource::new("foo bar baz");
|
||||
let radio_target_match = vec![Object::PlainText(PlainText { source: "bar" })];
|
||||
let global_settings = GlobalSettings {
|
||||
@ -200,21 +200,31 @@ mod tests {
|
||||
"foo bar baz"
|
||||
);
|
||||
assert_eq!(first_paragraph.children.len(), 3);
|
||||
assert_eq!(
|
||||
first_paragraph
|
||||
.children
|
||||
.get(1)
|
||||
.expect("Len already asserted to be 3"),
|
||||
&Object::RadioLink(RadioLink {
|
||||
source: "bar ",
|
||||
children: vec![Object::PlainText(PlainText { source: "bar" })],
|
||||
path: "bar"
|
||||
})
|
||||
);
|
||||
match first_paragraph
|
||||
.children
|
||||
.get(1)
|
||||
.expect("Len already asserted to be 3.")
|
||||
{
|
||||
Object::RadioLink(inner) => {
|
||||
assert_eq!(inner.get_standard_properties().get_source(), "bar ");
|
||||
assert_eq!(inner.path, "bar");
|
||||
assert_eq!(inner.children.len(), 1);
|
||||
let child = inner
|
||||
.children
|
||||
.get(0)
|
||||
.expect("Length already asserted to be 1.");
|
||||
assert!(matches!(child, Object::PlainText(_)));
|
||||
assert_eq!(child.get_standard_properties().get_source(), "bar");
|
||||
}
|
||||
_ => {
|
||||
return Err("Child should be a radio link.".into());
|
||||
}
|
||||
};
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn bold_radio_target() {
|
||||
fn bold_radio_target() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let input = OrgSource::new("foo *bar* baz");
|
||||
let radio_target_match = vec![Object::Bold(Bold {
|
||||
source: "*bar*",
|
||||
@ -239,19 +249,41 @@ mod tests {
|
||||
"foo *bar* baz"
|
||||
);
|
||||
assert_eq!(first_paragraph.children.len(), 3);
|
||||
assert_eq!(
|
||||
first_paragraph
|
||||
.children
|
||||
.get(1)
|
||||
.expect("Len already asserted to be 3"),
|
||||
&Object::RadioLink(RadioLink {
|
||||
source: "*bar* ",
|
||||
children: vec![Object::Bold(Bold {
|
||||
source: "*bar* ",
|
||||
children: vec![Object::PlainText(PlainText { source: "bar" })]
|
||||
})],
|
||||
path: "*bar* "
|
||||
})
|
||||
);
|
||||
match first_paragraph
|
||||
.children
|
||||
.get(1)
|
||||
.expect("Len already asserted to be 3.")
|
||||
{
|
||||
Object::RadioLink(inner) => {
|
||||
assert_eq!(inner.get_standard_properties().get_source(), "*bar* ");
|
||||
assert_eq!(inner.path, "*bar* ");
|
||||
assert_eq!(inner.children.len(), 1);
|
||||
let child = inner
|
||||
.children
|
||||
.get(0)
|
||||
.expect("Length already asserted to be 1.");
|
||||
assert!(matches!(child, Object::Bold(_)));
|
||||
assert_eq!(child.get_standard_properties().get_source(), "*bar* ");
|
||||
}
|
||||
_ => {
|
||||
return Err("Child should be a radio link.".into());
|
||||
}
|
||||
};
|
||||
Ok(())
|
||||
|
||||
// assert_eq!(
|
||||
// first_paragraph
|
||||
// .children
|
||||
// .get(1)
|
||||
// .expect("Len already asserted to be 3"),
|
||||
// &Object::RadioLink(RadioLink {
|
||||
// source: "*bar* ",
|
||||
// children: vec![Object::Bold(Bold {
|
||||
// source: "*bar* ",
|
||||
// children: vec![Object::PlainText(PlainText { source: "bar" })]
|
||||
// })],
|
||||
// path: "*bar* "
|
||||
// })
|
||||
// );
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,7 @@ use super::util::to_lowercase;
|
||||
use super::GetStandardProperties;
|
||||
use super::StandardProperties;
|
||||
|
||||
// TODO: Why did we make Object implement PartialEq again? Was it just for tests?
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub enum Object<'s> {
|
||||
Bold(Bold<'s>),
|
||||
Italic(Italic<'s>),
|
||||
@ -41,48 +40,48 @@ pub enum Object<'s> {
|
||||
Timestamp(Timestamp<'s>),
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Bold<'s> {
|
||||
pub source: &'s str,
|
||||
pub children: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Italic<'s> {
|
||||
pub source: &'s str,
|
||||
pub children: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Underline<'s> {
|
||||
pub source: &'s str,
|
||||
pub children: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct StrikeThrough<'s> {
|
||||
pub source: &'s str,
|
||||
pub children: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Code<'s> {
|
||||
pub source: &'s str,
|
||||
pub contents: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Verbatim<'s> {
|
||||
pub source: &'s str,
|
||||
pub contents: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct PlainText<'s> {
|
||||
pub source: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct RegularLink<'s> {
|
||||
pub source: &'s str,
|
||||
pub link_type: LinkType<'s>,
|
||||
@ -105,21 +104,21 @@ pub struct RegularLink<'s> {
|
||||
pub application: Option<Cow<'s, str>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct RadioTarget<'s> {
|
||||
pub source: &'s str,
|
||||
pub value: &'s str,
|
||||
pub children: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct RadioLink<'s> {
|
||||
pub source: &'s str,
|
||||
pub path: &'s str,
|
||||
pub children: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct PlainLink<'s> {
|
||||
pub source: &'s str,
|
||||
pub link_type: LinkType<'s>,
|
||||
@ -129,7 +128,7 @@ pub struct PlainLink<'s> {
|
||||
pub application: Option<&'s str>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct AngleLink<'s> {
|
||||
pub source: &'s str,
|
||||
pub link_type: LinkType<'s>,
|
||||
@ -147,7 +146,7 @@ pub struct AngleLink<'s> {
|
||||
pub application: Option<&'s str>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct OrgMacro<'s> {
|
||||
pub source: &'s str,
|
||||
|
||||
@ -164,7 +163,7 @@ pub struct OrgMacro<'s> {
|
||||
pub value: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Entity<'s> {
|
||||
pub source: &'s str,
|
||||
pub name: &'s str,
|
||||
@ -177,27 +176,27 @@ pub struct Entity<'s> {
|
||||
pub use_brackets: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct LatexFragment<'s> {
|
||||
pub source: &'s str,
|
||||
pub value: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct ExportSnippet<'s> {
|
||||
pub source: &'s str,
|
||||
pub backend: &'s str,
|
||||
pub contents: Option<&'s str>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct FootnoteReference<'s> {
|
||||
pub source: &'s str,
|
||||
pub label: Option<&'s str>,
|
||||
pub definition: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Citation<'s> {
|
||||
pub source: &'s str,
|
||||
pub style: Option<&'s str>,
|
||||
@ -206,7 +205,7 @@ pub struct Citation<'s> {
|
||||
pub children: Vec<CitationReference<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct CitationReference<'s> {
|
||||
pub source: &'s str,
|
||||
pub key: &'s str,
|
||||
@ -214,7 +213,7 @@ pub struct CitationReference<'s> {
|
||||
pub suffix: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct InlineBabelCall<'s> {
|
||||
pub source: &'s str,
|
||||
pub value: &'s str,
|
||||
@ -224,7 +223,7 @@ pub struct InlineBabelCall<'s> {
|
||||
pub end_header: Option<&'s str>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct InlineSourceBlock<'s> {
|
||||
pub source: &'s str,
|
||||
pub language: &'s str,
|
||||
@ -232,31 +231,31 @@ pub struct InlineSourceBlock<'s> {
|
||||
pub value: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct LineBreak<'s> {
|
||||
pub source: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Target<'s> {
|
||||
pub source: &'s str,
|
||||
pub value: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct StatisticsCookie<'s> {
|
||||
pub source: &'s str,
|
||||
pub value: &'s str,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Subscript<'s> {
|
||||
pub source: &'s str,
|
||||
pub use_brackets: bool,
|
||||
pub children: Vec<Object<'s>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub struct Superscript<'s> {
|
||||
pub source: &'s str,
|
||||
pub use_brackets: bool,
|
||||
@ -264,7 +263,7 @@ pub struct Superscript<'s> {
|
||||
}
|
||||
|
||||
// TODO: Perhaps there is an optimization of converting to unix time we can do to shrink this struct. (ref: clippy::large_enum_variant on Element)
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Timestamp<'s> {
|
||||
pub source: &'s str,
|
||||
pub timestamp_type: TimestampType,
|
||||
@ -277,7 +276,7 @@ pub struct Timestamp<'s> {
|
||||
pub warning_delay: Option<WarningDelay>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum TimestampType {
|
||||
Diary,
|
||||
Active,
|
||||
@ -286,7 +285,7 @@ pub enum TimestampType {
|
||||
InactiveRange,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum TimestampRangeType {
|
||||
None,
|
||||
DateRange,
|
||||
@ -299,19 +298,19 @@ pub type DayOfMonthInner = u8;
|
||||
pub type HourInner = u8;
|
||||
pub type MinuteInner = u8;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Year(YearInner);
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Month(MonthInner);
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DayOfMonth(DayOfMonthInner);
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Hour(HourInner);
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Minute(MinuteInner);
|
||||
|
||||
impl Year {
|
||||
@ -386,7 +385,7 @@ impl Minute {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Date<'s> {
|
||||
year: Year,
|
||||
month: Month,
|
||||
@ -444,7 +443,7 @@ impl<'s> Date<'s> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Time<'s> {
|
||||
hour: Hour,
|
||||
minute: Minute,
|
||||
@ -478,20 +477,20 @@ impl<'s> Time<'s> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum RepeaterType {
|
||||
Cumulative,
|
||||
CatchUp,
|
||||
Restart,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum WarningDelayType {
|
||||
All,
|
||||
First,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum TimeUnit {
|
||||
Hour,
|
||||
Day,
|
||||
@ -502,14 +501,14 @@ pub enum TimeUnit {
|
||||
|
||||
pub type RepeaterWarningDelayValueType = u16;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Repeater {
|
||||
pub repeater_type: RepeaterType,
|
||||
pub value: RepeaterWarningDelayValueType,
|
||||
pub unit: TimeUnit,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct WarningDelay {
|
||||
pub warning_delay_type: WarningDelayType,
|
||||
pub value: RepeaterWarningDelayValueType,
|
||||
@ -718,7 +717,7 @@ impl<'s> Timestamp<'s> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub enum LinkType<'s> {
|
||||
File,
|
||||
Protocol(Cow<'s, str>),
|
||||
@ -787,7 +786,7 @@ impl<'s> OrgMacro<'s> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug)]
|
||||
pub enum FootnoteReferenceType {
|
||||
Standard,
|
||||
Inline,
|
||||
|
Loading…
Reference in New Issue
Block a user