add argument for transpiling pack_format

This commit is contained in:
Moritz Hölting 2024-06-24 21:48:40 +02:00
parent 398fce2bd6
commit a0a27cda96
3 changed files with 17 additions and 9 deletions

View File

@ -31,8 +31,6 @@ use shulkerbox::{datapack::Datapack, virtual_fs::VFolder};
use crate::lexical::token_stream::TokenStream; use crate::lexical::token_stream::TokenStream;
const DEFAULT_PACK_FORMAT: u8 = 48;
/// Converts the given source code to tokens. /// Converts the given source code to tokens.
/// ///
/// # Errors /// # Errors
@ -70,14 +68,18 @@ where
/// - If an error occurs while parsing the source code. /// - If an error occurs while parsing the source code.
/// - If an error occurs while transpiling the source code. /// - If an error occurs while transpiling the source code.
#[cfg(feature = "shulkerbox")] #[cfg(feature = "shulkerbox")]
pub fn transpile<F, P>(file_provider: &F, script_paths: &[(String, P)]) -> Result<Datapack> pub fn transpile<F, P>(
file_provider: &F,
pack_format: u8,
script_paths: &[(String, P)],
) -> Result<Datapack>
where where
F: FileProvider, F: FileProvider,
P: AsRef<Path>, P: AsRef<Path>,
{ {
let printer = Printer::new(); let printer = Printer::new();
public_helpers::transpile(&printer, file_provider, script_paths) public_helpers::transpile(&printer, file_provider, pack_format, script_paths)
} }
/// Compiles the given source code. /// Compiles the given source code.
@ -90,14 +92,18 @@ where
/// - If an error occurs while parsing the source code. /// - If an error occurs while parsing the source code.
/// - If an error occurs while transpiling the source code. /// - If an error occurs while transpiling the source code.
#[cfg(feature = "shulkerbox")] #[cfg(feature = "shulkerbox")]
pub fn compile<F, P>(file_provider: &F, script_paths: &[(String, P)]) -> Result<VFolder> pub fn compile<F, P>(
file_provider: &F,
pack_format: u8,
script_paths: &[(String, P)],
) -> Result<VFolder>
where where
F: FileProvider, F: FileProvider,
P: AsRef<Path>, P: AsRef<Path>,
{ {
let printer = Printer::new(); let printer = Printer::new();
public_helpers::compile(&printer, file_provider, script_paths) public_helpers::compile(&printer, file_provider, pack_format, script_paths)
} }
struct Printer { struct Printer {

View File

@ -61,6 +61,7 @@ pub fn parse(
pub fn transpile<F, P>( pub fn transpile<F, P>(
printer: &Printer, printer: &Printer,
file_provider: &F, file_provider: &F,
pack_format: u8,
script_paths: &[(String, P)], script_paths: &[(String, P)],
) -> Result<Datapack> ) -> Result<Datapack>
where where
@ -86,7 +87,7 @@ where
tracing::info!("Transpiling the source code."); tracing::info!("Transpiling the source code.");
let mut transpiler = Transpiler::new(crate::DEFAULT_PACK_FORMAT); let mut transpiler = Transpiler::new(pack_format);
transpiler.transpile(&programs, printer)?; transpiler.transpile(&programs, printer)?;
let datapack = transpiler.into_datapack(); let datapack = transpiler.into_datapack();
@ -104,13 +105,14 @@ where
pub fn compile<F, P>( pub fn compile<F, P>(
printer: &Printer, printer: &Printer,
file_provider: &F, file_provider: &F,
pack_format: u8,
script_paths: &[(String, P)], script_paths: &[(String, P)],
) -> Result<VFolder> ) -> Result<VFolder>
where where
F: FileProvider, F: FileProvider,
P: AsRef<Path>, P: AsRef<Path>,
{ {
let datapack = transpile(printer, file_provider, script_paths)?; let datapack = transpile(printer, file_provider, pack_format, script_paths)?;
tracing::info!("Compiling the source code."); tracing::info!("Compiling the source code.");

View File

@ -9,7 +9,7 @@ fn transpile_test1() {
let mut dir = VFolder::new(); let mut dir = VFolder::new();
dir.add_file("test1.shu", VFile::Text(source.to_string())); dir.add_file("test1.shu", VFile::Text(source.to_string()));
let transpiled = shulkerscript::transpile(&dir, &[("test1".to_string(), "./test1.shu")]) let transpiled = shulkerscript::transpile(&dir, 48, &[("test1".to_string(), "./test1.shu")])
.expect("Failed to transpile"); .expect("Failed to transpile");
let expected = { let expected = {