parse_wiki_text_2/
positioned.rs

1// Copyright 2019 Fredrik Portström <https://portstrom.com>
2// This is free software distributed under the terms specified in
3// the file LICENSE at the top-level directory of this distribution.
4
5macro_rules! impl_positioned {
6	($type:tt) => {
7		impl<'a> crate::Positioned for crate::$type<'a> {
8			fn end(&self) -> usize {
9				self.end
10			}
11
12			fn start(&self) -> usize {
13				self.start
14			}
15		}
16	};
17}
18
19impl_positioned!(DefinitionListItem);
20impl_positioned!(ListItem);
21impl_positioned!(Parameter);
22impl_positioned!(TableCaption);
23impl_positioned!(TableCell);
24impl_positioned!(TableRow);
25
26impl<'a> crate::Positioned for crate::Node<'a> {
27	fn end(&self) -> usize {
28		match *self {
29			crate::Node::Bold { end, .. } => end,
30			crate::Node::BoldItalic { end, .. } => end,
31			crate::Node::Category { end, .. } => end,
32			crate::Node::CharacterEntity { end, .. } => end,
33			crate::Node::Comment { end, .. } => end,
34			crate::Node::DefinitionList { end, .. } => end,
35			crate::Node::EndTag { end, .. } => end,
36			crate::Node::ExternalLink { end, .. } => end,
37			crate::Node::Heading { end, .. } => end,
38			crate::Node::HorizontalDivider { end, .. } => end,
39			crate::Node::Image { end, .. } => end,
40			crate::Node::Italic { end, .. } => end,
41			crate::Node::Link { end, .. } => end,
42			crate::Node::MagicWord { end, .. } => end,
43			crate::Node::OrderedList { end, .. } => end,
44			crate::Node::ParagraphBreak { end, .. } => end,
45			crate::Node::Parameter { end, .. } => end,
46			crate::Node::Preformatted { end, .. } => end,
47			crate::Node::Redirect { end, .. } => end,
48			crate::Node::StartTag { end, .. } => end,
49			crate::Node::Table { end, .. } => end,
50			crate::Node::Tag { end, .. } => end,
51			crate::Node::Template { end, .. } => end,
52			crate::Node::Text { end, .. } => end,
53			crate::Node::UnorderedList { end, .. } => end,
54		}
55	}
56
57	fn start(&self) -> usize {
58		match *self {
59			crate::Node::Bold { start, .. } => start,
60			crate::Node::BoldItalic { start, .. } => start,
61			crate::Node::Category { start, .. } => start,
62			crate::Node::CharacterEntity { start, .. } => start,
63			crate::Node::Comment { start, .. } => start,
64			crate::Node::DefinitionList { start, .. } => start,
65			crate::Node::EndTag { start, .. } => start,
66			crate::Node::ExternalLink { start, .. } => start,
67			crate::Node::Heading { start, .. } => start,
68			crate::Node::HorizontalDivider { start, .. } => start,
69			crate::Node::Image { start, .. } => start,
70			crate::Node::Italic { start, .. } => start,
71			crate::Node::Link { start, .. } => start,
72			crate::Node::MagicWord { start, .. } => start,
73			crate::Node::OrderedList { start, .. } => start,
74			crate::Node::ParagraphBreak { start, .. } => start,
75			crate::Node::Parameter { start, .. } => start,
76			crate::Node::Preformatted { start, .. } => start,
77			crate::Node::Redirect { start, .. } => start,
78			crate::Node::StartTag { start, .. } => start,
79			crate::Node::Table { start, .. } => start,
80			crate::Node::Tag { start, .. } => start,
81			crate::Node::Template { start, .. } => start,
82			crate::Node::Text { start, .. } => start,
83			crate::Node::UnorderedList { start, .. } => start,
84		}
85	}
86}