ellie_parser 0.8.3

Parser for ellie language
Documentation
use alloc::{borrow::ToOwned, vec};
use ellie_core::{definite::Converter, error};
use ellie_tokenizer::syntax::items::file_key::FileKey;

impl super::ItemParserProcessor for FileKey {
    fn process(&self, options: &mut super::ItemParserProcessorOptions) -> bool {
        if self.value.is_static() {
            if self.is_global {
                options
                    .parser
                    .processed_pages
                    .nth_mut(options.processed_page_idx)
                    .unwrap()
                    .global_file_keys
                    .push(self.clone().to_definite());
            } else {
                options
                    .parser
                    .processed_pages
                    .nth_mut(options.processed_page_idx)
                    .unwrap()
                    .unassigned_file_keys
                    .push(self.clone().to_definite());
            }
        } else {
            let path = options
                .parser
                .pages
                .nth(options.page_idx)
                .unwrap()
                .path
                .clone();
            options
                .parser
                .informations
                .push(&error::error_list::ERROR_S9.clone().build_with_path(
                    vec![],
                    alloc::format!("{}:{}:{}", file!().to_owned(), line!(), column!()),
                    path,
                    self.value_location,
                ));
        }
        true
    }
}