procon 0.2.1

A programm to convert between different property formats
use crate::node::Node;
use log::trace;
use std::slice::Iter;
use std::string::String;

pub struct Nodes {
    pub nodes: Vec<Node>,
    pub output_filename: String,
}

#[allow(dead_code)]
impl Nodes {
    pub fn new(output_filename: String) -> Nodes {
        Nodes {
            nodes: Vec::new(),
            output_filename,
        }
    }
    pub fn get_output_filename(&self) -> String {
        String::from(&self.output_filename)
    }

    pub fn iter(&self) -> Iter<'_, Node> {
        self.nodes.iter()
    }

    pub fn push(&mut self, node: Node) {
        trace!("Add node to the yaml nodes {:?} ", node);
        self.nodes.push(node);
    }

    pub fn is_empty(&self) -> bool {
        self.nodes.is_empty()
    }

    pub fn sort(&mut self) {
        for node in &mut self.nodes {
            node.sort();
        }
        self.nodes.sort()
    }

    pub fn merge(&mut self, new_node: &mut Node) {
        if self.nodes.is_empty() {
            self.nodes.push(new_node.to_owned());
            return;
        }
        for existing_node in &mut self.nodes.iter_mut() {
            let to_add = existing_node.find_common_node(&new_node);
            if !to_add {
                return;
            }
        }
        self.nodes.push(new_node.to_owned());
    }
}