wip
This commit is contained in:
parent
217676d516
commit
2a2851178a
1 changed files with 110 additions and 15 deletions
125
src/lib.rs
125
src/lib.rs
|
@ -12,37 +12,132 @@ pub struct Block;
|
||||||
const EOF: char = '\0';
|
const EOF: char = '\0';
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub enum ListType {
|
pub enum Event2<'s> {
|
||||||
Unordered,
|
/// Start of a tag.
|
||||||
Ordered,
|
Start(TagKind<'s>, Attributes<'s>),
|
||||||
|
/// End of a tag.
|
||||||
|
End(TagKind<'s>),
|
||||||
|
/// A string object, text only.
|
||||||
|
Str(&'s str),
|
||||||
|
/// A verbatim string.
|
||||||
|
Verbatim(&'s str),
|
||||||
|
/// An inline or display math element.
|
||||||
|
Math { content: &'s str, display: bool },
|
||||||
|
/// An ellipsis, i.e. a set of three periods.
|
||||||
|
Ellipsis,
|
||||||
|
/// An en dash.
|
||||||
|
EnDash,
|
||||||
|
/// An em dash.
|
||||||
|
EmDash,
|
||||||
|
/// A thematic break, typically a horizontal rule.
|
||||||
|
ThematicBreak,
|
||||||
|
/// A blank line.
|
||||||
|
Blankline,
|
||||||
|
/// A space that may not break a line.
|
||||||
|
NonBreakingSpace,
|
||||||
|
/// A newline that may or may not break a line in the output format.
|
||||||
|
Softbreak,
|
||||||
|
/// A newline that must break a line.
|
||||||
|
HardBreak,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Attributes are rare, better to pay 8 bytes always and sometimes an extra allocation instead of
|
||||||
|
// always 24 bytes.
|
||||||
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
|
pub struct Attributes<'s>(Option<Box<Vec<(&'s str, &'s str)>>>);
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub enum TagKind<'s> {
|
pub enum TagKind<'s> {
|
||||||
|
/// A paragraph.
|
||||||
Paragraph,
|
Paragraph,
|
||||||
|
/// A heading.
|
||||||
Heading { level: u8 },
|
Heading { level: u8 },
|
||||||
Table,
|
/// A link with a destination URL.
|
||||||
TableRow,
|
Link(&'s str, LinkType),
|
||||||
TableCell,
|
/// An image.
|
||||||
RawBlock { format: &'s str },
|
Image(&'s str),
|
||||||
CodeBlock { language: &'s str },
|
/// A divider element.
|
||||||
Blockquote,
|
|
||||||
Div,
|
Div,
|
||||||
UnorderedList,
|
/// An inline divider element.
|
||||||
OrderedList { start: usize },
|
Span,
|
||||||
|
/// A table element.
|
||||||
|
Table,
|
||||||
|
/// A row element of a table.
|
||||||
|
TableRow,
|
||||||
|
/// A cell element of row within a table.
|
||||||
|
TableCell,
|
||||||
|
/// A block with raw markup for a specific output format.
|
||||||
|
RawBlock { format: &'s str },
|
||||||
|
/// A block with code in a specific language.
|
||||||
|
CodeBlock { language: Option<&'s str> },
|
||||||
|
/// A blockquote element.
|
||||||
|
Blockquote,
|
||||||
|
/// A list.
|
||||||
|
List(List),
|
||||||
|
/// An item of a list
|
||||||
ListItem,
|
ListItem,
|
||||||
|
/// A description list element.
|
||||||
DescriptionList,
|
DescriptionList,
|
||||||
|
/// A item of a description list.
|
||||||
DescriptionItem,
|
DescriptionItem,
|
||||||
|
/// A footnote definition.
|
||||||
Footnote { tag: &'s str },
|
Footnote { tag: &'s str },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub enum Event2<'s> {
|
pub enum LinkType {
|
||||||
Start(TagKind<'s>),
|
Inline,
|
||||||
End(TagKind<'s>),
|
Reference,
|
||||||
Blankline,
|
Autolink,
|
||||||
|
Email,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub enum List {
|
||||||
|
Unordered,
|
||||||
|
Ordered {
|
||||||
|
kind: OrderedListKind,
|
||||||
|
start: u32,
|
||||||
|
format: OrderedListFormat,
|
||||||
|
},
|
||||||
|
Description,
|
||||||
|
Task(bool),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub enum OrderedListKind {
|
||||||
|
/// Decimal numbering, e.g. `1)`.
|
||||||
|
Decimal,
|
||||||
|
/// Lowercase alphabetic numbering, e.g. `a)`.
|
||||||
|
AlphaLower,
|
||||||
|
/// Uppercase alphabetic numbering, e.g. `A)`.
|
||||||
|
AlphaUpper,
|
||||||
|
/// Lowercase roman numbering, e.g. `iv)`.
|
||||||
|
RomanLower,
|
||||||
|
/// Uppercase roman numbering, e.g. `IV)`.
|
||||||
|
RomanUpper,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub enum OrderedListFormat {
|
||||||
|
/// Number is followed by a period, e.g. `1.`.
|
||||||
|
Period,
|
||||||
|
/// Number is followed by a closing parenthesis, e.g. `1)`.
|
||||||
|
Paren,
|
||||||
|
/// Number is enclosed by parentheses, e.g. `(1)`.
|
||||||
|
ParenParen,
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
impl<'s> Event<'s> {
|
||||||
|
fn from_inline(src: &'s str, inline: inline::Event) -> Self {
|
||||||
|
match inline {
|
||||||
|
Enter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub enum Event {
|
pub enum Event {
|
||||||
Start(block::Block),
|
Start(block::Block),
|
||||||
|
|
Loading…
Reference in a new issue