Thx clippy, main.rs takes file as pos arg
This commit is contained in:
		
							
								
								
									
										39
									
								
								src/css.rs
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								src/css.rs
									
									
									
									
									
								
							@@ -18,7 +18,7 @@ impl Parser {
 | 
				
			|||||||
        while !self.eof() && test(self.next_char()) {
 | 
					        while !self.eof() && test(self.next_char()) {
 | 
				
			||||||
            result.push(self.consume_char());
 | 
					            result.push(self.consume_char());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return result;
 | 
					        result
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn next_char(&self) -> char {
 | 
					    fn next_char(&self) -> char {
 | 
				
			||||||
@@ -30,7 +30,7 @@ impl Parser {
 | 
				
			|||||||
        let (_, cur_char) = iter.next().unwrap();
 | 
					        let (_, cur_char) = iter.next().unwrap();
 | 
				
			||||||
        let (next_pos, _) = iter.next().unwrap_or((1, ' '));
 | 
					        let (next_pos, _) = iter.next().unwrap_or((1, ' '));
 | 
				
			||||||
        self.pos += next_pos;
 | 
					        self.pos += next_pos;
 | 
				
			||||||
        return cur_char;
 | 
					        cur_char
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn consume_whitespace(&mut self) {
 | 
					    fn consume_whitespace(&mut self) {
 | 
				
			||||||
@@ -60,14 +60,14 @@ impl Parser {
 | 
				
			|||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                c => {
 | 
					                c => {
 | 
				
			||||||
                    if c.is_ascii_alphanumeric() == false {
 | 
					                    if !c.is_ascii_alphanumeric() {
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    selector.tag_name = Some(self.parse_identifier());
 | 
					                    selector.tag_name = Some(self.parse_identifier());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return selector;
 | 
					        selector
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_identifier(&mut self) -> String {
 | 
					    fn parse_identifier(&mut self) -> String {
 | 
				
			||||||
@@ -95,7 +95,7 @@ impl Parser {
 | 
				
			|||||||
                c => panic!("Unexpected character {} in selector list", c),
 | 
					                c => panic!("Unexpected character {} in selector list", c),
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return selectors;
 | 
					        selectors
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_declarations(&mut self) -> Vec<Declaration> {
 | 
					    fn parse_declarations(&mut self) -> Vec<Declaration> {
 | 
				
			||||||
@@ -107,19 +107,16 @@ impl Parser {
 | 
				
			|||||||
                self.consume_char();
 | 
					                self.consume_char();
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            let identifier = self.parse_identifier();
 | 
					            let name = self.parse_identifier();
 | 
				
			||||||
            self.consume_whitespace();
 | 
					            self.consume_whitespace();
 | 
				
			||||||
            assert!(self.consume_char() == ':');
 | 
					            assert!(self.consume_char() == ':');
 | 
				
			||||||
            self.consume_whitespace();
 | 
					            self.consume_whitespace();
 | 
				
			||||||
            let value = self.parse_declaration_value();
 | 
					            let value = self.parse_declaration_value();
 | 
				
			||||||
            result.push(Declaration {
 | 
					            result.push(Declaration { name, value });
 | 
				
			||||||
                name: identifier,
 | 
					 | 
				
			||||||
                value: value,
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            self.consume_whitespace();
 | 
					            self.consume_whitespace();
 | 
				
			||||||
            assert!(self.consume_char() == ';');
 | 
					            assert!(self.consume_char() == ';');
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return result;
 | 
					        result
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_declaration_value(&mut self) -> Value {
 | 
					    fn parse_declaration_value(&mut self) -> Value {
 | 
				
			||||||
@@ -138,7 +135,7 @@ impl Parser {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    fn parse_color(&mut self) -> Value {
 | 
					    fn parse_color(&mut self) -> Value {
 | 
				
			||||||
        assert_eq!(self.consume_char(), '#');
 | 
					        assert_eq!(self.consume_char(), '#');
 | 
				
			||||||
        Value::Color(ColorValue::RGBA(
 | 
					        Value::Color(ColorValue::Rgba(
 | 
				
			||||||
            self.parse_hex_pair(),
 | 
					            self.parse_hex_pair(),
 | 
				
			||||||
            self.parse_hex_pair(),
 | 
					            self.parse_hex_pair(),
 | 
				
			||||||
            self.parse_hex_pair(),
 | 
					            self.parse_hex_pair(),
 | 
				
			||||||
@@ -151,10 +148,7 @@ impl Parser {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_float(&mut self) -> f32 {
 | 
					    fn parse_float(&mut self) -> f32 {
 | 
				
			||||||
        let s = self.consume_while(|c| match c {
 | 
					        let s = self.consume_while(|c| matches!(c, '0'..='9' | '.'));
 | 
				
			||||||
            '0'..='9' | '.' => true,
 | 
					 | 
				
			||||||
            _ => false,
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        s.parse().unwrap()
 | 
					        s.parse().unwrap()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -176,10 +170,7 @@ impl Parser {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn parse(input: String) -> StyleSheet {
 | 
					pub fn parse(input: String) -> StyleSheet {
 | 
				
			||||||
    let mut parser = Parser {
 | 
					    let mut parser = Parser { pos: 0, input };
 | 
				
			||||||
        pos: 0,
 | 
					 | 
				
			||||||
        input: input,
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
    StyleSheet {
 | 
					    StyleSheet {
 | 
				
			||||||
        rules: parser.parse_rules(),
 | 
					        rules: parser.parse_rules(),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -204,7 +195,7 @@ impl fmt::Display for Selector {
 | 
				
			|||||||
                if let Some(tag_name) = &selector.tag_name {
 | 
					                if let Some(tag_name) = &selector.tag_name {
 | 
				
			||||||
                    write!(f, "{}", tag_name).unwrap();
 | 
					                    write!(f, "{}", tag_name).unwrap();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if selector.classes.len() > 0 {
 | 
					                if selector.classes.is_empty() {
 | 
				
			||||||
                    write!(f, ".{}", selector.classes.join(".")).unwrap();
 | 
					                    write!(f, ".{}", selector.classes.join(".")).unwrap();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if let Some(id) = &selector.id {
 | 
					                if let Some(id) = &selector.id {
 | 
				
			||||||
@@ -241,13 +232,13 @@ impl fmt::Display for Value {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#[derive(Debug, Clone)]
 | 
					#[derive(Debug, Clone)]
 | 
				
			||||||
enum ColorValue {
 | 
					enum ColorValue {
 | 
				
			||||||
    RGBA(u8, u8, u8, u8),
 | 
					    Rgba(u8, u8, u8, u8),
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl fmt::Display for ColorValue {
 | 
					impl fmt::Display for ColorValue {
 | 
				
			||||||
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
					    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
				
			||||||
        match &self {
 | 
					        match &self {
 | 
				
			||||||
            Self::RGBA(r, g, b, a) => write!(f, "rgba({}, {}, {}, {})", r, g, b, a),
 | 
					            Self::Rgba(r, g, b, a) => write!(f, "rgba({}, {}, {}, {})", r, g, b, a),
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -309,7 +300,7 @@ pub struct StyleSheet {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
impl fmt::Display for StyleSheet {
 | 
					impl fmt::Display for StyleSheet {
 | 
				
			||||||
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
					    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
				
			||||||
        if self.rules.len() > 0 {
 | 
					        if self.rules.is_empty() {
 | 
				
			||||||
            let rules = self
 | 
					            let rules = self
 | 
				
			||||||
                .rules
 | 
					                .rules
 | 
				
			||||||
                .iter()
 | 
					                .iter()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								src/dom.rs
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								src/dom.rs
									
									
									
									
									
								
							@@ -22,7 +22,7 @@ impl fmt::Display for AttrMap {
 | 
				
			|||||||
            .iter()
 | 
					            .iter()
 | 
				
			||||||
            .map(|(key, value)| match &value {
 | 
					            .map(|(key, value)| match &value {
 | 
				
			||||||
                AttrValue::Text(text) => format!("{}=\"{}\"", key, text),
 | 
					                AttrValue::Text(text) => format!("{}=\"{}\"", key, text),
 | 
				
			||||||
                AttrValue::Implicit => format!("{}", key),
 | 
					                AttrValue::Implicit => key.to_string(),
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            .collect::<Vec<String>>();
 | 
					            .collect::<Vec<String>>();
 | 
				
			||||||
        write!(f, "{}", i.join(" "))
 | 
					        write!(f, "{}", i.join(" "))
 | 
				
			||||||
@@ -38,10 +38,10 @@ pub struct ElementData {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#[derive(Debug, Clone)]
 | 
					#[derive(Debug, Clone)]
 | 
				
			||||||
pub enum NodeType {
 | 
					pub enum NodeType {
 | 
				
			||||||
    ElementNode(ElementData),
 | 
					    Element(ElementData),
 | 
				
			||||||
    TextNode(String),
 | 
					    Text(String),
 | 
				
			||||||
    CommentNode(String),
 | 
					    Comment(String),
 | 
				
			||||||
    DocumentNode(DocumentData),
 | 
					    Document(DocumentData),
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug, Clone)]
 | 
					#[derive(Debug, Clone)]
 | 
				
			||||||
@@ -53,14 +53,14 @@ impl Node {
 | 
				
			|||||||
    fn pretty_print(&self, f: &mut fmt::Formatter<'_>, indent: usize) {
 | 
					    fn pretty_print(&self, f: &mut fmt::Formatter<'_>, indent: usize) {
 | 
				
			||||||
        let prepadding = "  ".repeat(indent);
 | 
					        let prepadding = "  ".repeat(indent);
 | 
				
			||||||
        match &self.node_type {
 | 
					        match &self.node_type {
 | 
				
			||||||
            NodeType::ElementNode(data) => {
 | 
					            NodeType::Element(data) => {
 | 
				
			||||||
                write!(f, "{}<{}", prepadding, data.tag_name).unwrap();
 | 
					                write!(f, "{}<{}", prepadding, data.tag_name).unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if data.attributes.0.len() > 0 {
 | 
					                if data.attributes.0.is_empty() {
 | 
				
			||||||
                    write!(f, " {}", data.attributes).unwrap();
 | 
					                    write!(f, " {}", data.attributes).unwrap();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if data.child_nodes.len() == 0 {
 | 
					                if data.child_nodes.is_empty() {
 | 
				
			||||||
                    writeln!(f, "></{}>", data.tag_name).unwrap();
 | 
					                    writeln!(f, "></{}>", data.tag_name).unwrap();
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -74,11 +74,11 @@ impl Node {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                writeln!(f, "{}</{}>", prepadding, data.tag_name).unwrap();
 | 
					                writeln!(f, "{}</{}>", prepadding, data.tag_name).unwrap();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            NodeType::TextNode(text) => {
 | 
					            NodeType::Text(text) => {
 | 
				
			||||||
                writeln!(f, "{}{}", prepadding, text).unwrap();
 | 
					                writeln!(f, "{}{}", prepadding, text).unwrap();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            NodeType::CommentNode(text) => writeln!(f, "{}<!-- {} -->", prepadding, text).unwrap(),
 | 
					            NodeType::Comment(text) => writeln!(f, "{}<!-- {} -->", prepadding, text).unwrap(),
 | 
				
			||||||
            NodeType::DocumentNode(_) => {}
 | 
					            NodeType::Document(_) => {}
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -116,13 +116,13 @@ impl DocumentData {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
pub fn text(data: String) -> Node {
 | 
					pub fn text(data: String) -> Node {
 | 
				
			||||||
    Node {
 | 
					    Node {
 | 
				
			||||||
        node_type: NodeType::TextNode(data),
 | 
					        node_type: NodeType::Text(data),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn element(name: String, attrs: AttrMap, children: Vec<Node>) -> Node {
 | 
					pub fn element(name: String, attrs: AttrMap, children: Vec<Node>) -> Node {
 | 
				
			||||||
    Node {
 | 
					    Node {
 | 
				
			||||||
        node_type: NodeType::ElementNode(ElementData {
 | 
					        node_type: NodeType::Element(ElementData {
 | 
				
			||||||
            tag_name: name,
 | 
					            tag_name: name,
 | 
				
			||||||
            attributes: attrs,
 | 
					            attributes: attrs,
 | 
				
			||||||
            child_nodes: children,
 | 
					            child_nodes: children,
 | 
				
			||||||
@@ -132,7 +132,7 @@ pub fn element(name: String, attrs: AttrMap, children: Vec<Node>) -> Node {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
pub fn comment(text: String) -> Node {
 | 
					pub fn comment(text: String) -> Node {
 | 
				
			||||||
    Node {
 | 
					    Node {
 | 
				
			||||||
        node_type: NodeType::CommentNode(text),
 | 
					        node_type: NodeType::Comment(text),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -140,6 +140,6 @@ pub fn parse(document: String) -> Node {
 | 
				
			|||||||
    let mut context = DocumentData::new();
 | 
					    let mut context = DocumentData::new();
 | 
				
			||||||
    context.load_document(document);
 | 
					    context.load_document(document);
 | 
				
			||||||
    Node {
 | 
					    Node {
 | 
				
			||||||
        node_type: NodeType::DocumentNode(context),
 | 
					        node_type: NodeType::Document(context),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								src/html.rs
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								src/html.rs
									
									
									
									
									
								
							@@ -27,7 +27,7 @@ impl Parser<'_> {
 | 
				
			|||||||
        let (_, cur_char) = iter.next().unwrap();
 | 
					        let (_, cur_char) = iter.next().unwrap();
 | 
				
			||||||
        let (next_pos, _) = iter.next().unwrap_or((1, ' '));
 | 
					        let (next_pos, _) = iter.next().unwrap_or((1, ' '));
 | 
				
			||||||
        self.pos += next_pos;
 | 
					        self.pos += next_pos;
 | 
				
			||||||
        return cur_char;
 | 
					        cur_char
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn consume_while<F>(&mut self, test: F) -> String
 | 
					    fn consume_while<F>(&mut self, test: F) -> String
 | 
				
			||||||
@@ -38,7 +38,7 @@ impl Parser<'_> {
 | 
				
			|||||||
        while !self.eof() && test(self.next_char()) {
 | 
					        while !self.eof() && test(self.next_char()) {
 | 
				
			||||||
            result.push(self.consume_char());
 | 
					            result.push(self.consume_char());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return result;
 | 
					        result
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn consume_whitespace(&mut self) {
 | 
					    fn consume_whitespace(&mut self) {
 | 
				
			||||||
@@ -83,7 +83,7 @@ impl Parser<'_> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if tag_name == "style" {
 | 
					        if tag_name == "style" {
 | 
				
			||||||
            let inner_node = children.first().unwrap();
 | 
					            let inner_node = children.first().unwrap();
 | 
				
			||||||
            if let NodeType::TextNode(styling) = &inner_node.node_type {
 | 
					            if let NodeType::Text(styling) = &inner_node.node_type {
 | 
				
			||||||
                self.context.load_css(styling.clone());
 | 
					                self.context.load_css(styling.clone());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -94,7 +94,7 @@ impl Parser<'_> {
 | 
				
			|||||||
        assert!(self.parse_tag_name() == tag_name);
 | 
					        assert!(self.parse_tag_name() == tag_name);
 | 
				
			||||||
        assert!(self.consume_char() == '>');
 | 
					        assert!(self.consume_char() == '>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return element(tag_name, attrs, children);
 | 
					        element(tag_name, attrs, children)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_comment(&mut self) -> Node {
 | 
					    fn parse_comment(&mut self) -> Node {
 | 
				
			||||||
@@ -127,13 +127,13 @@ impl Parser<'_> {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            let (name, value) = self.parse_attr();
 | 
					            let (name, value) = self.parse_attr();
 | 
				
			||||||
            if value.len() > 0 {
 | 
					            if value.is_empty() {
 | 
				
			||||||
                attributes.insert(name, AttrValue::Text(value));
 | 
					                attributes.insert(name, AttrValue::Text(value));
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                attributes.insert(name, AttrValue::Implicit);
 | 
					                attributes.insert(name, AttrValue::Implicit);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return AttrMap(attributes);
 | 
					        AttrMap(attributes)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_attr_value(&mut self) -> String {
 | 
					    fn parse_attr_value(&mut self) -> String {
 | 
				
			||||||
@@ -141,7 +141,7 @@ impl Parser<'_> {
 | 
				
			|||||||
        assert!(open_quote == '"' || open_quote == '\'');
 | 
					        assert!(open_quote == '"' || open_quote == '\'');
 | 
				
			||||||
        let value = self.consume_while(|c| c != open_quote);
 | 
					        let value = self.consume_while(|c| c != open_quote);
 | 
				
			||||||
        assert!(self.consume_char() == open_quote);
 | 
					        assert!(self.consume_char() == open_quote);
 | 
				
			||||||
        return value;
 | 
					        value
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_attr(&mut self) -> (String, String) {
 | 
					    fn parse_attr(&mut self) -> (String, String) {
 | 
				
			||||||
@@ -151,7 +151,7 @@ impl Parser<'_> {
 | 
				
			|||||||
            return (name, value);
 | 
					            return (name, value);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return (name, String::new());
 | 
					        (name, String::new())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn parse_nodes(&mut self) -> Vec<Node> {
 | 
					    fn parse_nodes(&mut self) -> Vec<Node> {
 | 
				
			||||||
@@ -163,15 +163,15 @@ impl Parser<'_> {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            nodes.push(self.parse_node());
 | 
					            nodes.push(self.parse_node());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return nodes;
 | 
					        nodes
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn parse(source: String, context: &mut DocumentData) -> Node {
 | 
					pub fn parse(input: String, context: &mut DocumentData) -> Node {
 | 
				
			||||||
    let mut parser = Parser {
 | 
					    let mut parser = Parser {
 | 
				
			||||||
        pos: 0,
 | 
					        pos: 0,
 | 
				
			||||||
        input: source,
 | 
					        input,
 | 
				
			||||||
        context: context,
 | 
					        context,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    let mut nodes = parser.parse_nodes();
 | 
					    let mut nodes = parser.parse_nodes();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								src/main.rs
									
									
									
									
									
								
							@@ -1,19 +1,12 @@
 | 
				
			|||||||
use std::io;
 | 
					use std::{env, fs};
 | 
				
			||||||
 | 
					 | 
				
			||||||
use dom::NodeType;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod css;
 | 
					mod css;
 | 
				
			||||||
mod dom;
 | 
					mod dom;
 | 
				
			||||||
mod html;
 | 
					mod html;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn main() {
 | 
					fn main() {
 | 
				
			||||||
    let mut input = String::new();
 | 
					    let file_path = env::args().nth(1).unwrap();
 | 
				
			||||||
    let stdin = io::stdin();
 | 
					    let contents = fs::read_to_string(file_path).unwrap();
 | 
				
			||||||
    stdin.read_line(&mut input).unwrap();
 | 
					    let node = dom::parse(contents);
 | 
				
			||||||
    // let input = "<html><head><title>Document</title><style>h1{font-size: 14px;}</style></head><body><h1>Hello</h1></body></html>".into();
 | 
					    println!("{:#?}", node);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    let node = dom::parse(input);
 | 
					 | 
				
			||||||
    if let NodeType::DocumentNode(data) = node.node_type {
 | 
					 | 
				
			||||||
        println!("{}", data.stylesheets[0]);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user