1use crate::dom::{dom_element::DomElement, dom_text::DomText};
2
3use super::{dom_comment::DomComment, dom_id::DomId};
4
5pub enum DomNode {
9 Node { node: DomElement },
10 Text { node: DomText },
11 Comment { node: DomComment },
12}
13
14impl DomNode {
15 pub fn new_node(node: DomElement) -> DomNode {
16 DomNode::Node { node }
17 }
18
19 pub fn new_text(node: DomText) -> DomNode {
20 DomNode::Text { node }
21 }
22
23 pub fn id_dom(&self) -> DomId {
24 match self {
25 Self::Node { node } => node.id_dom(),
26 Self::Text { node } => node.id_dom(),
27 Self::Comment { node } => node.id_dom(),
28 }
29 }
30}
31
32impl From<DomElement> for DomNode {
33 fn from(node: DomElement) -> Self {
34 DomNode::Node { node }
35 }
36}
37
38impl From<DomText> for DomNode {
39 fn from(node: DomText) -> Self {
40 DomNode::Text { node }
41 }
42}
43
44impl From<DomComment> for DomNode {
45 fn from(node: DomComment) -> Self {
46 DomNode::Comment { node }
47 }
48}
49
50impl<T: Into<String>> From<T> for DomNode {
51 fn from(text: T) -> Self {
52 DomNode::Text {
53 node: DomText::new(text),
54 }
55 }
56}