in src/fixtures.ts [10:45]
export function fixturize(snippet: TypeScriptSnippet, loose = false): TypeScriptSnippet {
let source = snippet.visibleSource;
const parameters = snippet.parameters ?? {};
const directory = parameters[SnippetParameters.$PROJECT_DIRECTORY];
if (!directory) {
return snippet;
}
const literateSource = parameters[SnippetParameters.LITERATE_SOURCE];
if (literateSource) {
// Compatibility with the "old school" example inclusion mechanism.
// Completely load this file and attach a parameter with its directory.
try {
source = loadLiterateSource(directory, literateSource);
} catch (ex) {
// In loose mode, we ignore this failure and stick to the visible source.
if (!loose) {
throw ex;
}
}
parameters[SnippetParameters.$COMPILATION_DIRECTORY] = path.join(directory, path.dirname(literateSource));
} else if (parameters[SnippetParameters.FIXTURE]) {
// Explicitly requested fixture must exist, unless we are operating in loose mode
source = loadAndSubFixture(directory, snippet.location.api, parameters.fixture, source, !loose);
} else if (parameters[SnippetParameters.NO_FIXTURE] === undefined) {
// Don't explicitly request no fixture, load the default.
source = loadAndSubFixture(directory, snippet.location.api, 'default', source, false);
}
return {
...snippet,
completeSource: source,
parameters,
};
}