Skip to main content

faker_rust/default/
programming_language.rs

1//! Programming Language generator
2
3use crate::base::sample;
4use crate::locale::fetch_locale;
5
6/// Generate a random programming language name
7pub fn name() -> String {
8    fetch_locale("programming_language.names", "en")
9        .map(|v| sample(&v))
10        .unwrap_or_else(|| sample(FALLBACK_NAMES).to_string())
11}
12
13/// Generate a random programming language creator
14pub fn creator() -> String {
15    fetch_locale("programming_language.creators", "en")
16        .map(|v| sample(&v))
17        .unwrap_or_else(|| sample(FALLBACK_CREATORS).to_string())
18}
19
20// Fallback data
21const FALLBACK_NAMES: &[&str] = &[
22    "Rust", "Python", "JavaScript", "TypeScript", "Java", "C", "C++", "C#",
23    "Go", "Ruby", "PHP", "Swift", "Kotlin", "Scala", "R", "MATLAB",
24    "Perl", "Lua", "Haskell", "Clojure", "Elixir", "Erlang", "F#",
25    "Dart", "Julia", "Groovy", "Objective-C", "Visual Basic", "Assembly",
26    "Fortran", "COBOL", "Lisp", "Scheme", "Prolog", "Smalltalk", "Ada",
27];
28
29const FALLBACK_CREATORS: &[&str] = &[
30    "Graydon Hoare", "Guido van Rossum", "Brendan Eich", "Anders Hejlsberg",
31    "James Gosling", "Dennis Ritchie", "Bjarne Stroustrup", "Rob Pike",
32    "Yukihiro Matsumoto", "Rasmus Lerdorf", "Chris Lattner", "Martin Odersky",
33    "Rich Hickey", "José Valim", "Joe Armstrong", "Lars Bak",
34];
35
36#[cfg(test)]
37mod tests {
38    use super::*;
39
40    #[test]
41    fn test_name() {
42        assert!(!name().is_empty());
43    }
44
45    #[test]
46    fn test_creator() {
47        assert!(!creator().is_empty());
48    }
49}