js-slang
Version:
Javascript-based implementations of Source, written in Typescript
70 lines • 3.53 kB
JavaScript
"use strict";
var _a, _b, _c;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isPythonLanguage = exports.pyLanguages = exports.isSchemeLanguage = exports.scmLanguages = exports.isSourceLanguage = exports.sourceLanguages = exports.Variant = exports.Chapter = void 0;
exports.isSupportedLanguageCombo = isSupportedLanguageCombo;
var Chapter;
(function (Chapter) {
Chapter[Chapter["SOURCE_1"] = 1] = "SOURCE_1";
Chapter[Chapter["SOURCE_2"] = 2] = "SOURCE_2";
Chapter[Chapter["SOURCE_3"] = 3] = "SOURCE_3";
Chapter[Chapter["SOURCE_4"] = 4] = "SOURCE_4";
Chapter[Chapter["FULL_JS"] = -1] = "FULL_JS";
Chapter[Chapter["HTML"] = -2] = "HTML";
Chapter[Chapter["FULL_TS"] = -3] = "FULL_TS";
Chapter[Chapter["PYTHON_1"] = -4] = "PYTHON_1";
Chapter[Chapter["PYTHON_2"] = -5] = "PYTHON_2";
Chapter[Chapter["PYTHON_3"] = -6] = "PYTHON_3";
Chapter[Chapter["PYTHON_4"] = -7] = "PYTHON_4";
Chapter[Chapter["FULL_PYTHON"] = -8] = "FULL_PYTHON";
Chapter[Chapter["SCHEME_1"] = -9] = "SCHEME_1";
Chapter[Chapter["SCHEME_2"] = -10] = "SCHEME_2";
Chapter[Chapter["SCHEME_3"] = -11] = "SCHEME_3";
Chapter[Chapter["SCHEME_4"] = -12] = "SCHEME_4";
Chapter[Chapter["FULL_SCHEME"] = -13] = "FULL_SCHEME";
Chapter[Chapter["FULL_C"] = -14] = "FULL_C";
Chapter[Chapter["FULL_JAVA"] = -15] = "FULL_JAVA";
Chapter[Chapter["LIBRARY_PARSER"] = 100] = "LIBRARY_PARSER";
})(Chapter || (exports.Chapter = Chapter = {}));
var Variant;
(function (Variant) {
Variant["DEFAULT"] = "default";
Variant["TYPED"] = "typed";
Variant["NATIVE"] = "native";
Variant["WASM"] = "wasm";
Variant["EXPLICIT_CONTROL"] = "explicit-control";
})(Variant || (exports.Variant = Variant = {}));
function defineLanguages(languages) {
return {
languages,
typeguard: (lang) => {
return languages.some(({ chapter, variant }) => lang.chapter === chapter && lang.variant === variant);
}
};
}
_a = defineLanguages([
{ chapter: Chapter.SOURCE_1, variant: Variant.DEFAULT },
{ chapter: Chapter.SOURCE_1, variant: Variant.TYPED },
{ chapter: Chapter.SOURCE_1, variant: Variant.WASM },
{ chapter: Chapter.SOURCE_2, variant: Variant.DEFAULT },
{ chapter: Chapter.SOURCE_2, variant: Variant.TYPED },
{ chapter: Chapter.SOURCE_3, variant: Variant.DEFAULT },
{ chapter: Chapter.SOURCE_3, variant: Variant.TYPED },
{ chapter: Chapter.SOURCE_4, variant: Variant.DEFAULT },
{ chapter: Chapter.SOURCE_4, variant: Variant.TYPED },
{ chapter: Chapter.SOURCE_4, variant: Variant.EXPLICIT_CONTROL }
]), exports.sourceLanguages = _a.languages, exports.isSourceLanguage = _a.typeguard;
_b = defineLanguages([
{ chapter: Chapter.SCHEME_1, variant: Variant.EXPLICIT_CONTROL },
{ chapter: Chapter.SCHEME_2, variant: Variant.EXPLICIT_CONTROL },
{ chapter: Chapter.SCHEME_3, variant: Variant.EXPLICIT_CONTROL },
{ chapter: Chapter.SCHEME_4, variant: Variant.EXPLICIT_CONTROL },
{ chapter: Chapter.FULL_SCHEME, variant: Variant.EXPLICIT_CONTROL }
]), exports.scmLanguages = _b.languages, exports.isSchemeLanguage = _b.typeguard;
_c = defineLanguages([
{ chapter: Chapter.PYTHON_1, variant: Variant.DEFAULT }
]), exports.pyLanguages = _c.languages, exports.isPythonLanguage = _c.typeguard;
function isSupportedLanguageCombo(lang) {
return (0, exports.isSourceLanguage)(lang) || (0, exports.isPythonLanguage)(lang) || (0, exports.isSchemeLanguage)(lang);
}
//# sourceMappingURL=langs.js.map