fomod
Version:
A library for creating, parsing, editing, and validating XML-based Fomod installers, widely popularized in the Bethesda modding scene
39 lines (31 loc) • 1.65 kB
text/typescript
import { FlagDependency } from '.';
import type { FomodDocumentConfig } from '../../lib/FomodDocumentConfig';
import { DependenciesGroup, DependencyTagName } from './DependenciesGroup';
import { FileDependency } from './FileDependency';
import { GameVersionDependency, ModManagerVersionDependency, ScriptExtenderVersionDependency, VersionDependency } from './VersionDependency';
import { Dependency } from './Dependency';
export * from "./DependenciesGroup";
export * from './Dependency';
export * from "./FileDependency";
export * from "./FlagDependency";
export * from "./VersionDependency";
export type ValidDependency<TStrict extends boolean> = FileDependency<TStrict> | FlagDependency | GameVersionDependency | ScriptExtenderVersionDependency | ModManagerVersionDependency | DependenciesGroup<DependencyTagName, TStrict>;
function parseDependency(element: Element, config: FomodDocumentConfig = {}): ValidDependency<false> | null {
switch (element.tagName) {
case DependenciesGroup.tagName[0]:
case DependenciesGroup.tagName[1]:
case DependenciesGroup.tagName[2]:
return DependenciesGroup.parse(element, config);
case FileDependency.tagName:
return FileDependency.parse(element, config);
case FlagDependency.tagName:
return FlagDependency.parse(element, config);
case GameVersionDependency.tagName:
case ScriptExtenderVersionDependency.tagName:
case ModManagerVersionDependency.tagName:
return VersionDependency.parse(element, config);
default:
return null;
}
}
Dependency.parse = parseDependency;