1mod classfile;
10pub mod index;
11mod jvm;
12mod macros;
13mod versions;
14
15use yog_data::Diagnostic;
16
17pub use jvm::{JvmBuild, build_jar};
18pub use macros::MacroLibrary;
19pub use yog_script_analyze::versions::targeted;
20
21#[must_use]
25pub fn check_source(name: &str, text: &str) -> Vec<Diagnostic> {
26 check_source_with(name, text, index::load)
27}
28
29pub fn check_source_with(
31 name: &str,
32 text: &str,
33 load: impl Fn(&str) -> Result<index::ClassIndex, String>,
34) -> Vec<Diagnostic> {
35 check_source_using(name, text, load, Project::default())
36}
37
38#[derive(Default, Clone, Copy)]
41pub struct Project<'a> {
42 pub macros: Option<&'a MacroLibrary>,
43 pub to_server: bool,
44}
45
46pub fn check_source_using(
48 name: &str,
49 text: &str,
50 load: impl Fn(&str) -> Result<index::ClassIndex, String>,
51 project: Project<'_>,
52) -> Vec<Diagnostic> {
53 let env = yog_script_analyze::Env {
54 game: None,
55 macros: project
56 .macros
57 .map(|m| m as &dyn yog_script_analyze::macros::ProcMacros),
58 to_server: project.to_server,
59 };
60 if !yog_script_analyze::is_nanites(name) {
61 return yog_script_analyze::check_in(name, text, env).problems;
62 }
63 versions::check(name, text, load, env)
64}