export function getCodeSearchLink()

in src/formatters/codesearch.js [52:97]


export function getCodeSearchLink(metric, app, item) {
  const [category, name] = metric.split(/\.(?=[^.]+$)/);

  // Generate all possible casings for a search query:
  // https://github.com/mozilla/glean-dictionary/pull/339#issuecomment-766904256

  // Javascript: camelCase.camelCase
  const camelCased = name
    ? `${camelCase(category)}.${camelCase(name)}`
    : camelCase(category);

  // Kotlin, Swift: CamelCase.camelCase
  const capitalizedCamelCased = name
    ? upperFirst(`${camelCase(category)}.${camelCase(name)}`)
    : camelCase(category);

  // Python: snake_case.snake_case
  const snakedCased = name
    ? `${snakeCase(category)}.${snakeCase(name)}`
    : snakeCase(category);

  // Rust, C++: snake_case::snake_case
  const dblColonSnakeCased = name
    ? `${snakeCase(category)}::${snakeCase(name)}`
    : snakeCase(category);

  const allLanguagePatterns = `${metric}|${camelCased}|${capitalizedCamelCased}|${snakedCased}|${dblColonSnakeCased}`;

  /* eslint no-else-return: "error" */

  if (searchfoxMap[app]) {
    const repoName = getGithubRepoName(item.source_url);
    const searchFoxPath =
      repoName === "application-services" ? repoName : searchfoxMap[app];
    return app === "firefox_desktop"
      ? `https://searchfox.org/mozilla-central/search?q=${allLanguagePatterns}&regexp=true`
      : `https://searchfox.org/mozilla-mobile/search?q=${allLanguagePatterns}&path=${searchFoxPath}&regexp=true`;
  } else if (sourcegraphMap[app]) {
    return (
      `https://sourcegraph.com/search?q=repo:%5Egithub%5C.com%5C/%5BMm%5Dozilla%28.*%29%5C/` +
      `${sourcegraphMap[app]}%24+${allLanguagePatterns}&patternType=regexp`
    );
  }

  return undefined;
}