Skip to content

Commit f9c1518

Browse files
auto-infer Java class names
1 parent 19047e4 commit f9c1518

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/compile.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use std::{
99
use anyhow::{anyhow, Context, Result};
1010
use axum::Json;
1111
use base64::{prelude::BASE64_STANDARD, Engine};
12+
use regex::Regex;
1213
use serde::{Deserialize, Serialize};
1314
use tempdir::TempDir;
1415

@@ -55,6 +56,9 @@ fn precompile_headers(compile_request: &CompileRequest) -> Result<()> {
5556
|| !compile_request
5657
.compiler_options
5758
.contains(&format!("--std=c++{cpp_version}"))
59+
|| !compile_request
60+
.source_code
61+
.contains("#include <bits/stdc++.h>")
5862
{
5963
return Ok(());
6064
}
@@ -91,15 +95,22 @@ pub fn compile(compile_request: CompileRequest) -> Result<CompileResponse> {
9195

9296
let program_filename: PathBuf = match compile_request.language {
9397
Language::Cpp => "program.cpp".into(),
94-
Language::Java21 => "Main.java".into(),
98+
Language::Java21 => {
99+
let re = Regex::new(r"public\s+class\s+(\w+)").unwrap();
100+
if let Some(captures) = re.captures(&compile_request.source_code) {
101+
format!("{}.java", &captures[1]).into()
102+
} else {
103+
"Main.java".into() // fallback, something went wrong
104+
}
105+
}
95106
Language::Py12 => "program.py".into(),
96107
};
97108

98109
let mut source_file = File::create(tmp_dir.path().join(&program_filename))?;
99110
source_file.write_all(compile_request.source_code.as_bytes())?;
100111
drop(source_file);
101112

102-
if let Err(err) = precompile_headers(compile_request) {
113+
if let Err(err) = precompile_headers(&compile_request) {
103114
println!("Warning: Failed to precompile headers: {err}");
104115
}
105116

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::fs;
22

33
use axum::{
4-
routing::{get, post}, Json, Router
4+
routing::{get, post}, Router
55
};
66
use lambda_http::{run, tracing, Error};
77

0 commit comments

Comments
 (0)