|
7 | 7 | };
|
8 | 8 |
|
9 | 9 | macro_rules! define_languages {
|
10 |
| - ($( { $name:ident, $ascii:literal, $display:literal $(, $serialize:literal )? } ),* ,) => { |
| 10 | + ($( { $name:ident, $ascii:literal, $display:literal, $colors:expr $(, $serialize:literal )? } ),* ,) => { |
11 | 11 |
|
12 | 12 | #[strum(serialize_all = "lowercase")]
|
13 | 13 | #[derive(PartialEq, Eq, Hash, Clone, EnumString, EnumIter)]
|
@@ -44,142 +44,78 @@ macro_rules! define_languages {
|
44 | 44 | Language::Unknown => include_str!("../resources/unknown.ascii"),
|
45 | 45 | }
|
46 | 46 | }
|
| 47 | + |
| 48 | + pub fn get_colors(&self) -> Vec<Color> { |
| 49 | + match *self { |
| 50 | + $( |
| 51 | + Language::$name => $colors, |
| 52 | + )* |
| 53 | + Language::Unknown => vec![Color::White], |
| 54 | + } |
| 55 | + } |
47 | 56 | }
|
48 | 57 | };
|
49 | 58 | }
|
50 | 59 |
|
51 | 60 | define_languages!{
|
52 |
| - { Assembly, "assembly.ascii", "Assembly" }, |
53 |
| - { C, "c.ascii", "C" }, |
54 |
| - { Clojure, "clojure.ascii", "Clojure" }, |
55 |
| - { CMake, "cmake.ascii", "CMake" }, |
56 |
| - { CoffeeScript, "coffeescript.ascii", "CoffeeScript" }, |
57 |
| - { Cpp, "cpp.ascii", "C++", "c++" }, |
58 |
| - { CSharp, "csharp.ascii", "C#", "c#" }, |
59 |
| - { Css, "css.ascii", "CSS" }, |
60 |
| - { D, "d.ascii", "D" }, |
61 |
| - { Dart, "dart.ascii", "Dart" }, |
62 |
| - { Dockerfile, "dockerfile.ascii", "Dockerfile" }, |
63 |
| - { Elisp, "emacslisp.ascii", "EmacsLisp", "emacslisp" }, |
64 |
| - { Elixir, "elixir.ascii", "Elixir" }, |
65 |
| - { Elm, "elm.ascii", "Elm" }, |
66 |
| - { Erlang, "erlang.ascii", "Erlang" }, |
67 |
| - { Fish, "fish.ascii", "Fish" }, |
68 |
| - { Forth, "forth.ascii", "Forth" }, |
69 |
| - { FortranModern, "f90.ascii", "Fortran", "fortran" }, |
70 |
| - { FSharp, "fsharp.ascii", "FSharp" }, |
71 |
| - { Go, "go.ascii", "Go" }, |
72 |
| - { Groovy, "groovy.ascii", "Groovy" }, |
73 |
| - { Haskell, "haskell.ascii", "Haskell" }, |
74 |
| - { Html, "html.ascii", "HTML" }, |
75 |
| - { Idris, "idris.ascii", "Idris" }, |
76 |
| - { Java, "java.ascii", "Java" }, |
77 |
| - { JavaScript, "javascript.ascii", "JavaScript" }, |
78 |
| - { Julia, "julia.ascii", "Julia" }, |
79 |
| - { Jupyter, "jupyter.ascii", "Jupyter-Notebooks", "jupyter-notebooks" }, |
80 |
| - { Kotlin, "kotlin.ascii", "Kotlin" }, |
81 |
| - { Lisp, "lisp.ascii", "Lisp" }, |
82 |
| - { Lua, "lua.ascii", "Lua" }, |
83 |
| - { Markdown, "markdown.ascii", "Markdown" }, |
84 |
| - { Nim, "nim.ascii", "Nim" }, |
85 |
| - { Nix, "nix.ascii", "Nix" }, |
86 |
| - { ObjectiveC, "objectivec.ascii", "Objective-C", "objective-c" }, |
87 |
| - { OCaml, "ocaml.ascii", "OCaml" }, |
88 |
| - { Org, "org.ascii", "Org" }, |
89 |
| - { Perl, "perl.ascii", "Perl" }, |
90 |
| - { Php, "php.ascii", "Php" }, |
91 |
| - { Prolog, "prolog.ascii", "Prolog" }, |
92 |
| - { PureScript, "purescript.ascii", "PureScript" }, |
93 |
| - { Python, "python.ascii", "Python" }, |
94 |
| - { R, "r.ascii", "R" }, |
95 |
| - { Racket, "racket.ascii", "Racket" }, |
96 |
| - { Ruby, "ruby.ascii", "Ruby" }, |
97 |
| - { Rust, "rust.ascii", "Rust" }, |
98 |
| - { Scala, "scala.ascii", "Scala" }, |
99 |
| - { Sh, "shell.ascii", "Shell", "shell" }, |
100 |
| - { Swift, "swift.ascii", "Swift" }, |
101 |
| - { Tcl, "tcl.ascii", "Tcl" }, |
102 |
| - { Tex, "tex.ascii", "Tex" }, |
103 |
| - { TypeScript, "typescript.ascii", "TypeScript" }, |
104 |
| - { Vue, "vue.ascii", "Vue" }, |
105 |
| - { Xml, "xml.ascii", "XML" }, |
106 |
| - { Zig, "zig.ascii", "Zig" }, |
| 61 | + { Assembly, "assembly.ascii", "Assembly", vec![Color::Cyan] }, |
| 62 | + { C, "c.ascii", "C", vec![Color::Cyan, Color::Blue] }, |
| 63 | + { Clojure, "clojure.ascii", "Clojure", vec![Color::Cyan, Color::Green] }, |
| 64 | + { CMake, "cmake.ascii", "CMake", vec![Color::Blue, Color::Green, Color::Red, Color::Black] }, |
| 65 | + { CoffeeScript, "coffeescript.ascii", "CoffeeScript", vec![Color::Red] }, |
| 66 | + { Cpp, "cpp.ascii", "C++", vec![Color::Cyan, Color::Blue], "c++" }, |
| 67 | + { CSharp, "csharp.ascii", "C#", vec![Color::Blue, Color::Magenta], "c#" }, |
| 68 | + { Css, "css.ascii", "CSS", vec![Color::Blue, Color::White] }, |
| 69 | + { D, "d.ascii", "D", vec![Color::Red] }, |
| 70 | + { Dart, "dart.ascii", "Dart", vec![Color::Cyan, Color::Blue] }, |
| 71 | + { Dockerfile, "dockerfile.ascii", "Dockerfile", vec![Color::Cyan, Color::White, Color::Cyan] }, |
| 72 | + { Elisp, "emacslisp.ascii", "EmacsLisp", vec![Color::Magenta, Color::White], "emacslisp" }, |
| 73 | + { Elixir, "elixir.ascii", "Elixir", vec![Color::Magenta] }, |
| 74 | + { Elm, "elm.ascii", "Elm", vec![Color::Black, Color::Green, Color::Yellow, Color::Cyan] }, |
| 75 | + { Erlang, "erlang.ascii", "Erlang", vec![Color::Red] }, |
| 76 | + { Fish, "fish.ascii", "Fish", vec![Color::Red, Color::Yellow] }, |
| 77 | + { Forth, "forth.ascii", "Forth", vec![Color::Red] }, |
| 78 | + { FortranModern, "f90.ascii", "Fortran", vec![Color::White, Color::Green, Color::Cyan, Color::Yellow, Color::Red], "fortran" }, |
| 79 | + { FSharp, "fsharp.ascii", "FSharp", vec![Color::Cyan, Color::Cyan] }, |
| 80 | + { Go, "go.ascii", "Go", vec![Color::White] }, |
| 81 | + { Groovy, "groovy.ascii", "Groovy", vec![Color::Cyan, Color::White] }, |
| 82 | + { Haskell, "haskell.ascii", "Haskell", vec![Color::Cyan, Color::Magenta, Color::Blue] }, |
| 83 | + { Html, "html.ascii", "HTML", vec![Color::Red, Color::White] }, |
| 84 | + { Idris, "idris.ascii", "Idris", vec![Color::Red] }, |
| 85 | + { Java, "java.ascii", "Java", vec![Color::Cyan, Color::Red] }, |
| 86 | + { JavaScript, "javascript.ascii", "JavaScript", vec![Color::Yellow] }, |
| 87 | + { Julia, "julia.ascii", "Julia", vec![Color::White, Color::Blue, Color::Green, Color::Red, Color::Magenta] }, |
| 88 | + { Jupyter, "jupyter.ascii", "Jupyter-Notebooks", vec![Color::White, Color::Yellow, Color::White], "jupyter-notebooks" }, |
| 89 | + { Kotlin, "kotlin.ascii", "Kotlin", vec![Color::Blue, Color::Yellow, Color::Magenta] }, |
| 90 | + { Lisp, "lisp.ascii", "Lisp", vec![Color::Yellow] }, |
| 91 | + { Lua, "lua.ascii", "Lua", vec![Color::Blue] }, |
| 92 | + { Markdown, "markdown.ascii", "Markdown", vec![Color::White, Color::Red] }, |
| 93 | + { Nim, "nim.ascii", "Nim", vec![Color::Yellow, Color::White] }, |
| 94 | + { Nix, "nix.ascii", "Nix", vec![Color::Cyan, Color::Blue] }, |
| 95 | + { ObjectiveC, "objectivec.ascii", "Objective-C", vec![Color::Cyan, Color::Blue], "objective-c" }, |
| 96 | + { OCaml, "ocaml.ascii", "OCaml", vec![Color::Yellow] }, |
| 97 | + { Org, "org.ascii", "Org", vec![Color::Green, Color::Red, Color::White] }, |
| 98 | + { Perl, "perl.ascii", "Perl", vec![Color::Cyan] }, |
| 99 | + { Php, "php.ascii", "Php", vec![Color::Magenta, Color::Black] }, |
| 100 | + { Prolog, "prolog.ascii", "Prolog", vec![Color::Blue, Color::Red] }, |
| 101 | + { PureScript, "purescript.ascii", "PureScript", vec![Color::White] }, |
| 102 | + { Python, "python.ascii", "Python", vec![Color::Blue, Color::Yellow] }, |
| 103 | + { R, "r.ascii", "R", vec![Color::White, Color::Blue] }, |
| 104 | + { Racket, "racket.ascii", "Racket", vec![Color::Red, Color::White, Color::Blue] }, |
| 105 | + { Ruby, "ruby.ascii", "Ruby", vec![Color::Magenta] }, |
| 106 | + { Rust, "rust.ascii", "Rust", vec![Color::White, Color::Red] }, |
| 107 | + { Scala, "scala.ascii", "Scala", vec![Color::Blue] }, |
| 108 | + { Sh, "shell.ascii", "Shell", vec![Color::Green], "shell" }, |
| 109 | + { Swift, "swift.ascii", "Swift", vec![Color::Red] }, |
| 110 | + { Tcl, "tcl.ascii", "Tcl", vec![Color::Blue, Color::White, Color::Cyan] }, |
| 111 | + { Tex, "tex.ascii", "Tex", vec![Color::White, Color::Black] }, |
| 112 | + { TypeScript, "typescript.ascii", "TypeScript", vec![Color::Cyan] }, |
| 113 | + { Vue, "vue.ascii", "Vue", vec![Color::Green, Color::Blue] }, |
| 114 | + { Xml, "xml.ascii", "XML", vec![Color::Yellow, Color::White, Color::Green] }, |
| 115 | + { Zig, "zig.ascii", "Zig", vec![Color::Yellow] }, |
107 | 116 | }
|
108 | 117 |
|
109 | 118 | impl Language {
|
110 |
| - pub fn get_colors(&self) -> Vec<Color> { |
111 |
| - match *self { |
112 |
| - Language::Assembly => vec![Color::Cyan], |
113 |
| - Language::C => vec![Color::Cyan, Color::Blue], |
114 |
| - Language::Clojure => vec![Color::Cyan, Color::Green], |
115 |
| - Language::CMake => vec![Color::Blue, Color::Green, Color::Red, Color::Black], |
116 |
| - Language::CoffeeScript => vec![Color::Red], |
117 |
| - Language::Cpp => vec![Color::Cyan, Color::Blue], |
118 |
| - Language::CSharp => vec![Color::Blue, Color::Magenta], |
119 |
| - Language::Css => vec![Color::Blue, Color::White], |
120 |
| - Language::D => vec![Color::Red], |
121 |
| - Language::Dart => vec![Color::Cyan, Color::Blue], |
122 |
| - Language::Dockerfile => vec![Color::Cyan, Color::White, Color::Cyan], |
123 |
| - Language::Elisp => vec![Color::Magenta, Color::White], |
124 |
| - Language::Elixir => vec![Color::Magenta], |
125 |
| - Language::Elm => vec![Color::Black, Color::Green, Color::Yellow, Color::Cyan], |
126 |
| - Language::Erlang => vec![Color::Red], |
127 |
| - Language::Fish => vec![Color::Red, Color::Yellow], |
128 |
| - Language::Forth => vec![Color::Red], |
129 |
| - Language::FortranModern => vec![ |
130 |
| - Color::White, |
131 |
| - Color::Green, |
132 |
| - Color::Cyan, |
133 |
| - Color::Yellow, |
134 |
| - Color::Red, |
135 |
| - ], |
136 |
| - Language::FSharp => vec![Color::Cyan, Color::Cyan], |
137 |
| - Language::Go => vec![Color::White], |
138 |
| - Language::Groovy => vec![Color::Cyan, Color::White], |
139 |
| - Language::Haskell => vec![Color::Cyan, Color::Magenta, Color::Blue], |
140 |
| - Language::Html => vec![Color::Red, Color::White], |
141 |
| - Language::Idris => vec![Color::Red], |
142 |
| - Language::Java => vec![Color::Cyan, Color::Red], |
143 |
| - Language::JavaScript => vec![Color::Yellow], |
144 |
| - Language::Julia => vec![ |
145 |
| - Color::White, |
146 |
| - Color::Blue, |
147 |
| - Color::Green, |
148 |
| - Color::Red, |
149 |
| - Color::Magenta, |
150 |
| - ], |
151 |
| - Language::Jupyter => vec![Color::White, Color::Yellow, Color::White], |
152 |
| - Language::Kotlin => vec![Color::Blue, Color::Yellow, Color::Magenta], |
153 |
| - Language::Lisp => vec![Color::Yellow], |
154 |
| - Language::Lua => vec![Color::Blue], |
155 |
| - Language::Markdown => vec![Color::White, Color::Red], |
156 |
| - Language::Nim => vec![Color::Yellow, Color::White], |
157 |
| - Language::Nix => vec![Color::Cyan, Color::Blue], |
158 |
| - Language::ObjectiveC => vec![Color::Cyan, Color::Blue], |
159 |
| - Language::OCaml => vec![Color::Yellow], |
160 |
| - Language::Org => vec![Color::Green, Color::Red, Color::White], |
161 |
| - Language::Perl => vec![Color::Cyan], |
162 |
| - Language::Php => vec![Color::Magenta, Color::Black], |
163 |
| - Language::Prolog => vec![Color::Blue, Color::Red], |
164 |
| - Language::PureScript => vec![Color::White], |
165 |
| - Language::Python => vec![Color::Blue, Color::Yellow], |
166 |
| - Language::R => vec![Color::White, Color::Blue], |
167 |
| - Language::Racket => vec![Color::Red, Color::White, Color::Blue], |
168 |
| - Language::Ruby => vec![Color::Magenta], |
169 |
| - Language::Rust => vec![Color::White, Color::Red], |
170 |
| - Language::Scala => vec![Color::Blue], |
171 |
| - Language::Sh => vec![Color::Green], |
172 |
| - Language::Swift => vec![Color::Red], |
173 |
| - Language::Tcl => vec![Color::Blue, Color::White, Color::Cyan], |
174 |
| - Language::Tex => vec![Color::White, Color::Black], |
175 |
| - Language::TypeScript => vec![Color::Cyan], |
176 |
| - Language::Vue => vec![Color::Green, Color::Blue], |
177 |
| - Language::Xml => vec![Color::Yellow, Color::White, Color::Green], |
178 |
| - Language::Zig => vec![Color::Yellow], |
179 |
| - Language::Unknown => vec![Color::White], |
180 |
| - } |
181 |
| - } |
182 |
| - |
183 | 119 | fn get_languages_stat(languages: &tokei::Languages) -> Option<HashMap<Language, f64>> {
|
184 | 120 | let mut stats = HashMap::new();
|
185 | 121 |
|
|
0 commit comments