Pudu programming language
Menu
Package

@chrismichaelps / pudu-lang-docgen

Documentation publishing for Pudu: articles, API references, navigation, search, and static websites

0.1.0Apache-2.01

InstallClose

Languages.pudu

Pudu35 lines1.4 KB

GitHub ↗
1/** @Docgen.Markdown.Languages — language identities, aliases, extensions, and display names */2module PuduLangDocgen.Markdown.Languages34import Std.Option as Option5import PuduLangDocgen.Markdown.Languages.Extensions as Extensions6import PuduLangDocgen.Markdown.Languages.Files as Files7import PuduLangDocgen.Markdown.Languages.Names as Names8import PuduLangDocgen.Markdown.Languages.Titles as Titles910/// The identity of a language named by its name or an alias in any case, such as `js` or11/// `JavaScript` for `javascript`. Unknown names answer themselves in lower case.12/// Identities follow the language table published by the linguist project, with Pudu added.13export fn identify(written: Str) -> Str {14  let lowered = written.trim().toLower()15  Option.unwrapOr(Names.lookup(lowered), lowered)16}1718/// The identity of the language a file is written in, from its exact name or its extension,19/// or the empty text.20export fn ofPath(path: Str) -> Str {21  let parts = path.split("/")22  let name = parts[parts.length() - 1]23  match Files.lookup(name) {24    case Some(found) => found25    case None => {26      let pieces = name.split(".")27      if pieces.length() < 2 { "" } else { Option.unwrapOr(Extensions.lookup(pieces[pieces.length() - 1].toLower()), "") }28    }29  }30}3132/// The display name of a language identity, such as `JavaScript`; unknown identities answer33/// themselves.34export fn title(identity: Str) -> Str { Option.unwrapOr(Titles.lookup(identity), identity) }35