darklua_core/frontend/
mod.rs1mod configuration;
2mod content_loader;
3mod error;
4mod options;
5mod resources;
6mod utils;
7mod work_cache;
8mod work_item;
9mod worker;
10mod worker_tree;
11
12pub(crate) use configuration::LoaderConfiguration;
13pub use configuration::{BundleConfiguration, Configuration, GeneratorParameters};
14pub(crate) use content_loader::ContentType;
15pub use content_loader::Loader;
16pub use error::{DarkluaError, DarkluaResult};
17pub use options::Options;
18pub use resources::Resources;
19use work_item::WorkItem;
20use worker::Worker;
21pub use worker_tree::WorkerTree;
22
23use serde::Serialize;
24
25use crate::{
26 generator::{DenseLuaGenerator, LuaGenerator},
27 nodes::{Block, ReturnStatement},
28 process::to_expression,
29 utils::normalize_path,
30};
31
32pub fn convert_data(value: impl Serialize) -> Result<String, DarkluaError> {
59 let expression = to_expression(&value).map_err(DarkluaError::from)?;
60
61 let block = Block::default()
62 .with_last_statement(ReturnStatement::default().with_expression(expression));
63
64 let mut generator = DenseLuaGenerator::default();
65 generator.write_block(&block);
66 Ok(generator.into_string())
67}
68
69pub fn process(resources: &Resources, options: Options) -> DarkluaResult<WorkerTree> {
74 let mut worker_tree = WorkerTree::default();
75
76 if let Some(output) = options.output().filter(|output| *output != options.input()) {
78 worker_tree.snapshot_output_structure(resources, output)?;
79 }
80
81 worker_tree.collect_work(resources, &options)?;
82 worker_tree.process(resources, options)?;
83
84 Ok(worker_tree)
85}