localize_it 2.5.1

Simple and fast library for localization
Documentation
use crate::{
    backends::init_locale::{
        arguments::Arguments,
        parts::{
            enum_locale, macro_expression, macro_expression_part, macro_expressions,
            macro_expressions_from_files, macro_expressions_part, macro_localize, mod_storage,
        },
    },
    utils::NamesProvider,
};
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse, Result};

pub fn backend(input: TokenStream) -> Result<TokenStream> {
    let arguments = &parse::<Arguments>(input)?;
    let names_provider = &NamesProvider::new(arguments.path.clone());

    let locale = enum_locale(arguments, names_provider);
    let storage = mod_storage(arguments, names_provider);
    let expression = macro_expression(arguments, names_provider)?;
    let expressions = macro_expressions(names_provider);
    let localize = macro_localize(arguments, names_provider);
    let expression_part = macro_expression_part(names_provider);
    let expressions_part = macro_expressions_part(names_provider);
    let expressions_from_files = macro_expressions_from_files(arguments, names_provider)?;

    Ok(quote! {
        #locale
        #storage
        #expression
        #expressions
        #localize
        #expression_part
        #expressions_part
        #expressions_from_files
    }
    .into())
}