[−][src]Crate detect_lang
Utility for identifying names of programming languages (and related files) from paths and file extensions.
Paths and Extensions
Languages can be identified from paths using from_path
or directly from extensions using from_extension
.
use detect_lang::from_path; assert_eq!(from_path("foo.rs").unwrap().name(), "Rust"); assert_eq!(from_path("foo.md").unwrap().name(), "Markdown"); use detect_lang::from_extension; assert_eq!(from_extension("rs").unwrap().name(), "Rust"); assert_eq!(from_extension("md").unwrap().name(), "Markdown"); // The case is ignored assert_eq!(from_path("foo.jSoN").unwrap().name(), "JSON"); assert_eq!(from_extension("jSoN").unwrap().name(), "JSON");
Language ID
In short, the language id
is a lowercase version of name
.
However, it also replaces symbols making it usable as a URL slug.
For instance foo.hpp
is identified as language name C++
and
language ID cpp
.
use detect_lang::from_path; assert_eq!(from_path("foo.rs").unwrap().id(), "rust"); assert_eq!(from_path("foo.cpp").unwrap().id(), "cpp"); assert_eq!(from_path("foo.hpp").unwrap().id(), "cpp"); use detect_lang::from_extension; assert_eq!(from_extension("rs").unwrap().id(), "rust"); assert_eq!(from_extension("cpp").unwrap().id(), "cpp"); assert_eq!(from_extension("hpp").unwrap().id(), "cpp"); // The case is ignored assert_eq!(from_path("foo.jSoN").unwrap().id(), "json"); assert_eq!(from_extension("jSoN").unwrap().id(), "json");
Match Example
use std::path::Path; use detect_lang::{from_path, Language}; let path = Path::new("foo.rs"); match from_path(path) { Some(Language(_, "rust")) => println!("This is Rust"), Some(Language(..)) => println!("Well it's not Rust"), None => println!("Ehh, what?"), }
Structs
Language | Languages contain a name and an ID ( |
Functions
from_extension | Identifies a language from a file extension. The casing of the extension does not affect the result. |
from_path | Identifies the language from a path. The casing of the extension does not affect the result. |