package data import "strings" // LanguageByAliasMap keeps alias for different languages and use the name of the languages as an alias too. // All the keys (alias or not) are written in lower case and the whitespaces has been replaced by underscores. var LanguageByAliasMap = map[string]string{ {{range $alias, $language := . -}} "{{ $alias }}": {{ printf "%q" $language -}}, {{end -}} } // LanguageByAlias looks up the language name by it's alias or name. // It mirrors the logic of github linguist and is needed e.g for heuristcs.yml // that mixes names and aliases in a language field (see XPM example). func LanguageByAlias(langOrAlias string) (lang string, ok bool) { k := convertToAliasKey(langOrAlias) lang, ok = LanguageByAliasMap[k] return } // convertToAliasKey converts language name to a key in LanguageByAliasMap. // Following // - internal.code-generator.generator.convertToAliasKey() // - GetLanguageByAlias() // conventions. // It is here to avoid dependency on "generate" and "enry" packages. func convertToAliasKey(langName string) string { ak := strings.SplitN(langName, `,`, 2)[0] ak = strings.Replace(ak, ` `, `_`, -1) ak = strings.ToLower(ak) return ak }