languageForPath method

Language? languageForPath(
  1. String path
)

Guesses the language of a file from its extension or name, using filename overrides, language names and aliases. lib/main.dart, pubspec.yaml, deploy.sh, README.md and Dockerfile all resolve with the bundled languages. Both / and \ separate directories.

Implementation

Language? languageForPath(String path) {
  final name = path.split(_pathSeparator).last.toLowerCase();
  if (name.isEmpty) return null;
  final exact = _pathLanguages[name];
  if (exact != null) return language(exact);
  for (
    var dot = name.indexOf('.');
    dot >= 0;
    dot = name.indexOf('.', dot + 1)
  ) {
    final override = _pathLanguages[name.substring(dot)];
    if (override != null) return language(override);
  }
  final exactLanguage = _byName[name];
  if (exactLanguage != null) return exactLanguage;
  for (
    var dot = name.indexOf('.', 1);
    dot >= 0;
    dot = name.indexOf('.', dot + 1)
  ) {
    final match = _byName[name.substring(dot + 1)];
    if (match != null) return match;
  }
  return null;
}