core: lang: add disabled option

This commit is contained in:
undefined committed 2023-01-30 07:01:32 +08:00
1 parent 2cd89d7258
commit 88461a78cd
3 files changed
+5 -2

No files matched your search

+1 -1
View File
@@ -507,7 +507,7 @@ export class ProblemSubmitHandler extends ProblemDetailHandler {
if (typeof config === 'string' || config === null) throw new ProblemConfigError(); if (typeof config === 'string' || config === null) throw new ProblemConfigError();
if (config.type === 'objective') { if (config.type === 'objective') {
lang = '_'; lang = '_';
} else if (config.langs && !config.langs.includes(lang)) { } else if ((config.langs && !config.langs.includes(lang)) || setting.langs[lang].disabled) {
throw new ProblemNotAllowLanguageError(); throw new ProblemNotAllowLanguageError();
} }
if (pretest) { if (pretest) {
+2 -1
View File
@@ -33,7 +33,8 @@ export function getAvailableLangs(langsList?: string[]) {
for (const key in window.LANGS) { for (const key in window.LANGS) {
if (prefixes.has(key)) continue; if (prefixes.has(key)) continue;
if (langsList && langsList.length && langsList.join('') && !langsList.includes(key)) continue; if (langsList && langsList.length && langsList.join('') && !langsList.includes(key)) continue;
else if (window.LANGS[key].hidden && !langsList?.includes(key)) continue; if (window.LANGS[key].hidden && !langsList?.includes(key)) continue;
if (window.LANGS[key].disabled) continue;
Langs[key] = window.LANGS[key]; Langs[key] = window.LANGS[key];
} }
return Langs; return Langs;
+2
View File
@@ -1,6 +1,7 @@
import yaml from 'js-yaml'; import yaml from 'js-yaml';
export interface LangConfig { export interface LangConfig {
disabled?: boolean;
compile?: string; compile?: string;
execute: string; execute: string;
code_file: string; code_file: string;
@@ -41,6 +42,7 @@ export function parseLang(config: string): Record<string, LangConfig> {
entry.execute ||= '/w/foo'; entry.execute ||= '/w/foo';
entry.key = key; entry.key = key;
entry.hidden ||= false; entry.hidden ||= false;
entry.disabled ||= false;
} }
return file; return file;
} }