rust-less 0.1.0

A LESS to CSS parser and converter library written in Rust
Documentation
use pest::iterators::Pair;

use crate::{
    parser::Rule,
    selects::{Attr, Variable},
};

pub fn get_select_name(pair: &Pair<Rule>) -> String {
    let rule = pair.as_rule();
    if rule != Rule::select {
        String::from("")
    } else {
        for child in pair.clone().into_inner() {
            if child.as_rule() == Rule::selectName {
                let str = child.as_span().as_str().to_string();
                return str;
            }
        }
        String::from("")
    }
}

pub fn get_attr_and_variable(pair: &Pair<Rule>) -> (Vec<Attr>, Vec<Variable>) {
    if pair.as_rule() != Rule::select {
        panic!("Not a select");
    }
    let mut attr_list = vec![];
    let mut variable_list = vec![];
    for child in pair.clone().into_inner() {
        if child.as_rule() == Rule::attr {
            attr_list.push(get_attr(child));
        } else if child.as_rule() == Rule::variable {
            variable_list.insert(0, get_variable(child));
        }
    }

    return (attr_list, variable_list);
}

pub fn get_attr(pair: Pair<Rule>) -> Attr {
    if pair.as_rule() != Rule::attr {
        panic!("Not a attr");
    }
    let mut name = String::from("");
    let mut value = String::from("");
    for child in pair.into_inner() {
        if child.as_rule() == Rule::attrName {
            name = child.as_span().as_str().to_string();
        }
        if child.as_rule() == Rule::attrValue {
            value = child.as_span().as_str().to_string();
        }
    }
    return Attr(name, value);
}

pub fn get_variable(pair: Pair<Rule>) -> Variable {
    if pair.as_rule() != Rule::variable {
        panic!("Not a variable");
    }
    let mut name = String::from("");
    let mut value = String::from("");
    for child in pair.into_inner() {
        if child.as_rule() == Rule::variableName {
            name = child.as_span().as_str().to_string();
        }
        if child.as_rule() == Rule::variableValue {
            value = child.as_span().as_str().to_string();
        }
    }
    return Variable(name, value);
}

pub fn get_media_query_expression(pair: &Pair<Rule>) -> String {
    if pair.as_rule() != Rule::mediaQuery {
        panic!("Not a media query");
    }

    for child in pair.clone().into_inner() {
        if child.as_rule() == Rule::mediaQueryExpression {
            return child.as_span().as_str().to_string();
        }
    }

    String::from("")
}