mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-08-04 13:30:48 +00:00
Rename ParsedLayoutNode to LayoutParsedNode
This commit is contained in:
parent
f8025b15ea
commit
870ce74743
4 changed files with 23 additions and 19 deletions
|
@ -1,6 +1,6 @@
|
|||
use std::fs;
|
||||
use std::io;
|
||||
use crate::parsed_layout_node::*;
|
||||
use crate::layout_parsed_node::*;
|
||||
|
||||
pub struct ComponentLayout {
|
||||
|
||||
|
@ -9,19 +9,17 @@ pub struct ComponentLayout {
|
|||
impl ComponentLayout {
|
||||
pub fn new() -> ComponentLayout {
|
||||
let parsed_layout_tree = Self::parse_xml_file("gui/window/main.xml").unwrap();
|
||||
for node in parsed_layout_tree.descendants() {
|
||||
println!("{:?}", node);
|
||||
}
|
||||
Self::interpret_abstract_syntax_tree(parsed_layout_tree);
|
||||
Self {}
|
||||
}
|
||||
|
||||
pub fn parse_xml_file(path: &str) -> io::Result<rctree::Node<ParsedLayoutNode>> {
|
||||
pub fn parse_xml_file(path: &str) -> io::Result<rctree::Node<LayoutParsedNode>> {
|
||||
let source = fs::read_to_string(path)?;
|
||||
let parsed = xmlparser::Tokenizer::from(&source[..]);
|
||||
|
||||
let mut stack: Vec<rctree::Node<ParsedLayoutNode>> = Vec::new();
|
||||
let mut current: Option<rctree::Node<ParsedLayoutNode>> = None;
|
||||
let mut result: Option<rctree::Node<ParsedLayoutNode>> = None;
|
||||
let mut stack: Vec<rctree::Node<LayoutParsedNode>> = Vec::new();
|
||||
let mut current: Option<rctree::Node<LayoutParsedNode>> = None;
|
||||
let mut result: Option<rctree::Node<LayoutParsedNode>> = None;
|
||||
|
||||
for token in parsed {
|
||||
match token.unwrap() {
|
||||
|
@ -29,7 +27,7 @@ impl ComponentLayout {
|
|||
let namespace = String::from(prefix.as_str());
|
||||
let tag_name = String::from(local.as_str());
|
||||
|
||||
let new_parsed_layout_node = ParsedLayoutNode::new_tag(namespace, tag_name);
|
||||
let new_parsed_layout_node = LayoutParsedNode::new_tag(namespace, tag_name);
|
||||
|
||||
let new_node = rctree::Node::new(new_parsed_layout_node);
|
||||
current = Some(new_node);
|
||||
|
@ -49,11 +47,11 @@ impl ComponentLayout {
|
|||
match &mut current {
|
||||
Some(current_node) => {
|
||||
match &mut *current_node.borrow_mut() {
|
||||
ParsedLayoutNode::Tag(tag) => {
|
||||
LayoutParsedNode::Tag(tag) => {
|
||||
// Add this attribute to the current node that has not yet reached its closing angle bracket
|
||||
tag.add_attribute(attribute);
|
||||
}
|
||||
ParsedLayoutNode::Text(_) => {
|
||||
LayoutParsedNode::Text(_) => {
|
||||
panic!("Error adding attribute to tag when parsing XML layout in file: {}", path);
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +97,7 @@ impl ComponentLayout {
|
|||
let text_string = String::from(text.as_str());
|
||||
|
||||
if !text_string.trim().is_empty() {
|
||||
let text_node = ParsedLayoutNode::new_text(text_string);
|
||||
let text_node = LayoutParsedNode::new_text(text_string);
|
||||
let new_node = rctree::Node::new(text_node);
|
||||
parent_node.append(new_node);
|
||||
}
|
||||
|
@ -113,4 +111,10 @@ impl ComponentLayout {
|
|||
Some(tree) => Ok(tree)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn interpret_abstract_syntax_tree(root: rctree::Node<LayoutParsedNode>) {
|
||||
for node in root.descendants() {
|
||||
println!("{:?}", node);
|
||||
}
|
||||
}
|
||||
}
|
0
src/layout_abstract_syntax.rs
Normal file
0
src/layout_abstract_syntax.rs
Normal file
|
@ -1,12 +1,12 @@
|
|||
#[derive(Debug)]
|
||||
pub enum ParsedLayoutNode {
|
||||
Tag(ParsedLayoutTag),
|
||||
pub enum LayoutParsedNode {
|
||||
Tag(LayoutParsedTag),
|
||||
Text(String),
|
||||
}
|
||||
|
||||
impl ParsedLayoutNode {
|
||||
impl LayoutParsedNode {
|
||||
pub fn new_tag(namespace: String, tag: String) -> Self {
|
||||
Self::Tag(ParsedLayoutTag::new(namespace, tag))
|
||||
Self::Tag(LayoutParsedTag::new(namespace, tag))
|
||||
}
|
||||
|
||||
pub fn new_text(text: String) -> Self {
|
||||
|
@ -15,13 +15,13 @@ impl ParsedLayoutNode {
|
|||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ParsedLayoutTag {
|
||||
pub struct LayoutParsedTag {
|
||||
pub namespace: Option<String>,
|
||||
pub tag: String,
|
||||
pub attributes: Vec<(String, String)>,
|
||||
}
|
||||
|
||||
impl ParsedLayoutTag {
|
||||
impl LayoutParsedTag {
|
||||
pub fn new(namespace: String, tag: String) -> Self {
|
||||
let namespace = if namespace.is_empty() { None } else { Some(namespace) };
|
||||
|
|
@ -10,7 +10,7 @@ mod gui_node;
|
|||
mod gui_attributes;
|
||||
mod window_events;
|
||||
mod component_layout;
|
||||
mod parsed_layout_node;
|
||||
mod layout_parsed_node;
|
||||
|
||||
use application::Application;
|
||||
use winit::event_loop::EventLoop;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue