core: add lang.isBinary option

This commit is contained in:
undefined committed 2024-10-24 01:27:31 +08:00
1 parent 90f944cdf8
commit 21c069d998
3 files changed
+4 -3

No files matched your search

+1 -2
View File
@@ -483,8 +483,7 @@ export class ProblemSubmitHandler extends ProblemDetailHandler {
if (!file || file.size === 0) throw new ValidationError('code');
const sizeLimit = config.type === 'submit_answer' ? 128 * 1024 * 1024 : lengthLimit;
if (file.size > sizeLimit) throw new ValidationError('file');
if (file.size < lengthLimit && !file.filepath.endsWith('.zip')) {
// TODO auto detect & convert encoding
if (file.size < lengthLimit && !file.filepath.endsWith('.zip') && !setting.langs[lang].isBinary) {
// TODO submission file shape
code = await readFile(file.filepath, 'utf-8');
} else {
+1 -1
View File
@@ -8,7 +8,7 @@ export interface ProblemSource {
source?: string,
}
export function buildContent(source: ProblemSource, type: 'markdown' | 'html' = 'markdown', translate?: Function) {
export function buildContent(source: ProblemSource, type: 'markdown' | 'html' = 'markdown', translate?: (s: string) => string) {
const _ = translate || ((s: string) => s);
let cnt = 0;
// Keep it for backward compatibility, but don't add to typings
+2
View File
@@ -15,6 +15,7 @@ export interface LangConfig {
target?: string;
key: string;
hidden: boolean;
isBinary?: boolean;
analysis?: string;
/** @deprecated */
remote?: string;
@@ -52,6 +53,7 @@ export function parseLang(config: string): Record<string, LangConfig> {
entry.key = key;
entry.hidden ||= false;
entry.disabled ||= false;
entry.isBinary ||= false;
entry.validAs ||= {};
}
return file;