export function fixturize()

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,
  };
}