FileSystemColorProvider.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. // This code is adapted from https://github.com/devblackops/Terminal-Icons (which also uses the MIT license).
  2. using System.Collections.Generic;
  3. using System.IO.Abstractions;
  4. namespace Terminal.Gui {
  5. public class FileSystemColorProvider {
  6. public TrueColor? GetTrueColor (IFileSystemInfo file)
  7. {
  8. if (FilenameToColor.ContainsKey (file.Name)) {
  9. return FilenameToColor [file.Name];
  10. }
  11. if (ExtensionToColor.ContainsKey (file.Extension)) {
  12. return ExtensionToColor [file.Extension];
  13. }
  14. return null;
  15. }
  16. /// <summary>
  17. /// Mapping of file/dir name to color.
  18. /// </summary>
  19. public Dictionary<string, TrueColor> FilenameToColor { get; set; } = new ()
  20. {
  21. {"docs",StringToColor("#00BFFF")},
  22. {"documents",StringToColor("#00BFFF")},
  23. {"desktop",StringToColor("#00FBFF")},
  24. {"benchmark",StringToColor("#F08519")},
  25. {"demo",StringToColor("#5F3EC3")},
  26. {"samples",StringToColor("#5F3EC3")},
  27. {"contacts",StringToColor("#00FBFF")},
  28. {"apps",StringToColor("#FF143C")},
  29. {"applications",StringToColor("#FF143C")},
  30. {"artifacts",StringToColor("#D49653")},
  31. {"shortcuts",StringToColor("#FF143C")},
  32. {"links",StringToColor("#FF143C")},
  33. {"fonts",StringToColor("#DC143C")},
  34. {"images",StringToColor("#9ACD32")},
  35. {"photos",StringToColor("#9ACD32")},
  36. {"pictures",StringToColor("#9ACD32")},
  37. {"videos",StringToColor("#FFA500")},
  38. {"movies",StringToColor("#FFA500")},
  39. {"media",StringToColor("#D3D3D3")},
  40. {"music",StringToColor("#DB7093")},
  41. {"songs",StringToColor("#DB7093")},
  42. {"onedrive",StringToColor("#D3D3D3")},
  43. {"downloads",StringToColor("#D3D3D3")},
  44. {"src",StringToColor("#00FF7F")},
  45. {"development",StringToColor("#00FF7F")},
  46. {"projects",StringToColor("#00FF7F")},
  47. {"bin",StringToColor("#00FFF7")},
  48. {"tests",StringToColor("#87CEEB")},
  49. {"windows",StringToColor("#00A8E8")},
  50. {"users",StringToColor("#F4F4F4")},
  51. {"favorites",StringToColor("#F7D72C")},
  52. {"output",StringToColor("#00FF7F")},
  53. {".config",StringToColor("#87CEAF")},
  54. {".cache",StringToColor("#87ECAF")},
  55. {".vscode",StringToColor("#87CEFA")},
  56. {".vscode-insiders",StringToColor("#24BFA5")},
  57. {".git",StringToColor("#FF4500")},
  58. {".github",StringToColor("#C0C0C0")},
  59. {"github",StringToColor("#C0C0C0")},
  60. {"node_modules",StringToColor("#6B8E23")},
  61. {".terraform",StringToColor("#948EEC")},
  62. {".azure",StringToColor("#00BFFF")},
  63. {".aws",StringToColor("#EC912D")},
  64. {".kube",StringToColor("#326DE6")},
  65. {".docker",StringToColor("#2391E6")},
  66. {".gitattributes",StringToColor("#FF4500")},
  67. {".gitconfig",StringToColor("#FF4500")},
  68. {".gitignore",StringToColor("#FF4500")},
  69. {".gitmodules",StringToColor("#FF4500")},
  70. {".gitkeep",StringToColor("#FF4500")},
  71. {"git-history",StringToColor("#FF4500")},
  72. {"LICENSE",StringToColor("#CD5C5C")},
  73. {"LICENSE.md",StringToColor("#CD5C5C")},
  74. {"LICENSE.txt",StringToColor("#CD5C5C")},
  75. {"CHANGELOG.md",StringToColor("#98FB98")},
  76. {"CHANGELOG.txt",StringToColor("#98FB98")},
  77. {"CHANGELOG",StringToColor("#98FB98")},
  78. {"README.md",StringToColor("#00FFFF")},
  79. {"README.txt",StringToColor("#00FFFF")},
  80. {"README",StringToColor("#00FFFF")},
  81. {".DS_Store",StringToColor("#696969")},
  82. {".tsbuildinfo",StringToColor("#F4A460")},
  83. {".jscsrc",StringToColor("#F4A460")},
  84. {".jshintrc",StringToColor("#F4A460")},
  85. {"tsconfig.json",StringToColor("#F4A460")},
  86. {"tslint.json",StringToColor("#F4A460")},
  87. {"composer.lock",StringToColor("#F4A460")},
  88. {".jsbeautifyrc",StringToColor("#F4A460")},
  89. {".esformatter",StringToColor("#F4A460")},
  90. {"cdp.pid",StringToColor("#F4A460")},
  91. {".htaccess",StringToColor("#9ACD32")},
  92. {".jshintignore",StringToColor("#87CEEB")},
  93. {".buildignore",StringToColor("#87CEEB")},
  94. {".mrconfig",StringToColor("#87CEEB")},
  95. {".yardopts",StringToColor("#87CEEB")},
  96. {"manifest.mf",StringToColor("#87CEEB")},
  97. {".clang-format",StringToColor("#87CEEB")},
  98. {".clang-tidy",StringToColor("#87CEEB")},
  99. {"favicon.ico",StringToColor("#FFD700")},
  100. {".travis.yml",StringToColor("#FFE4B5")},
  101. {".gitlab-ci.yml",StringToColor("#FF4500")},
  102. {".jenkinsfile",StringToColor("#6495ED")},
  103. {"bitbucket-pipelines.yml",StringToColor("#87CEFA")},
  104. {"bitbucket-pipelines.yaml",StringToColor("#87CEFA")},
  105. {".azure-pipelines.yml",StringToColor("#00BFFF")},
  106. {"firebase.json",StringToColor("#FFA500")},
  107. {".firebaserc",StringToColor("#FFA500")},
  108. {".bowerrc",StringToColor("#CD5C5C")},
  109. {"bower.json",StringToColor("#CD5C5C")},
  110. {"code_of_conduct.md",StringToColor("#FFFFE0")},
  111. {"code_of_conduct.txt",StringToColor("#FFFFE0")},
  112. {"Dockerfile",StringToColor("#4682B4")},
  113. {"docker-compose.yml",StringToColor("#4682B4")},
  114. {"docker-compose.yaml",StringToColor("#4682B4")},
  115. {"docker-compose.dev.yml",StringToColor("#4682B4")},
  116. {"docker-compose.local.yml",StringToColor("#4682B4")},
  117. {"docker-compose.ci.yml",StringToColor("#4682B4")},
  118. {"docker-compose.override.yml",StringToColor("#4682B4")},
  119. {"docker-compose.staging.yml",StringToColor("#4682B4")},
  120. {"docker-compose.prod.yml",StringToColor("#4682B4")},
  121. {"docker-compose.production.yml",StringToColor("#4682B4")},
  122. {"docker-compose.test.yml",StringToColor("#4682B4")},
  123. {"vue.config.js",StringToColor("#778899")},
  124. {"vue.config.ts",StringToColor("#778899")},
  125. {"gulpfile.js",StringToColor("#CD5C5C")},
  126. {"gulpfile.ts",StringToColor("#CD5C5C")},
  127. {"gulpfile.babel.js",StringToColor("#CD5C5C")},
  128. {"gruntfile.js",StringToColor("#CD5C5C")},
  129. {"package.json",StringToColor("#6B8E23")},
  130. {"package-lock.json",StringToColor("#6B8E23")},
  131. {".nvmrc",StringToColor("#6B8E23")},
  132. {".esmrc",StringToColor("#6B8E23")},
  133. {".nmpignore",StringToColor("#00BFFF")},
  134. {".npmrc",StringToColor("#00BFFF")},
  135. {"authors",StringToColor("#FF6347")},
  136. {"authors.md",StringToColor("#FF6347")},
  137. {"authors.txt",StringToColor("#FF6347")},
  138. {".terraform.lock.hcl",StringToColor("#948EEC")},
  139. {"gradlew",StringToColor("#39D52D")},
  140. };
  141. /// <summary>
  142. /// Mapping of file extension to color.
  143. /// </summary>
  144. public Dictionary<string, TrueColor> ExtensionToColor = new ()
  145. {
  146. {".7z",StringToColor("#DAA520")},
  147. {".bz",StringToColor("#DAA520")},
  148. {".tar",StringToColor("#DAA520")},
  149. {".zip",StringToColor("#DAA520")},
  150. {".gz",StringToColor("#DAA520")},
  151. {".xz",StringToColor("#DAA520")},
  152. {".br",StringToColor("#DAA520")},
  153. {".bzip2",StringToColor("#DAA520")},
  154. {".gzip",StringToColor("#DAA520")},
  155. {".brotli",StringToColor("#DAA520")},
  156. {".rar",StringToColor("#DAA520")},
  157. {".tgz",StringToColor("#DAA520")},
  158. {".bat",StringToColor("#008000")},
  159. {".cmd",StringToColor("#008000")},
  160. {".exe",StringToColor("#00FA9A")},
  161. {".pl",StringToColor("#8A2BE2")},
  162. {".sh",StringToColor("#FF4500")},
  163. {".msi",StringToColor("#FFC77A")},
  164. {".msix",StringToColor("#FFC77A")},
  165. {".msixbundle",StringToColor("#FFC77A")},
  166. {".appx",StringToColor("#FFC77A")},
  167. {".AppxBundle",StringToColor("#FFC77A")},
  168. {".deb",StringToColor("#FFC77A")},
  169. {".rpm",StringToColor("#FFC77A")},
  170. {".ps1",StringToColor("#00BFFF")},
  171. {".psm1",StringToColor("#00BFFF")},
  172. {".psd1",StringToColor("#00BFFF")},
  173. {".ps1xml",StringToColor("#00BFFF")},
  174. {".psc1",StringToColor("#00BFFF")},
  175. {".pssc",StringToColor("#00BFFF")},
  176. {".js",StringToColor("#F0E68C")},
  177. {".esx",StringToColor("#F0E68C")},
  178. {".mjs",StringToColor("#F0E68C")},
  179. {".java",StringToColor("#F89820")},
  180. {".jar",StringToColor("#F89820")},
  181. {".gradle",StringToColor("#39D52D")},
  182. {".py",StringToColor("#4B8BBE")},
  183. {".ipynb",StringToColor("#4B8BBE")},
  184. {".jsx",StringToColor("#20B2AA")},
  185. {".tsx",StringToColor("#20B2AA")},
  186. {".ts",StringToColor("#F0E68C")},
  187. {".dll",StringToColor("#87CEEB")},
  188. {".clixml",StringToColor("#00BFFF")},
  189. {".csv",StringToColor("#9ACD32")},
  190. {".tsv",StringToColor("#9ACD32")},
  191. {".ini",StringToColor("#6495ED")},
  192. {".dlc",StringToColor("#6495ED")},
  193. {".config",StringToColor("#6495ED")},
  194. {".conf",StringToColor("#6495ED")},
  195. {".properties",StringToColor("#6495ED")},
  196. {".prop",StringToColor("#6495ED")},
  197. {".settings",StringToColor("#6495ED")},
  198. {".option",StringToColor("#6495ED")},
  199. {".reg",StringToColor("#6495ED")},
  200. {".props",StringToColor("#6495ED")},
  201. {".toml",StringToColor("#6495ED")},
  202. {".prefs",StringToColor("#6495ED")},
  203. {".sln.dotsettings",StringToColor("#6495ED")},
  204. {".sln.dotsettings.user",StringToColor("#6495ED")},
  205. {".cfg",StringToColor("#6495ED")},
  206. {".c",StringToColor("#A9A9A9")},
  207. {".cpp",StringToColor("#A9A9A9")},
  208. {".go",StringToColor("#20B2AA")},
  209. {".php",StringToColor("#6A5ACD")},
  210. {".csproj",StringToColor("#EE82EE")},
  211. {".ruleset",StringToColor("#EE82EE")},
  212. {".sln",StringToColor("#EE82EE")},
  213. {".slnf",StringToColor("#EE82EE")},
  214. {".suo",StringToColor("#EE82EE")},
  215. {".vb",StringToColor("#EE82EE")},
  216. {".vbs",StringToColor("#EE82EE")},
  217. {".vcxitems",StringToColor("#EE82EE")},
  218. {".vcxitems.filters",StringToColor("#EE82EE")},
  219. {".vcxproj",StringToColor("#EE82EE")},
  220. {".vsxproj.filters",StringToColor("#EE82EE")},
  221. {".cs",StringToColor("#7B68EE")},
  222. {".csx",StringToColor("#7B68EE")},
  223. {".hs",StringToColor("#9932CC")},
  224. {".xaml",StringToColor("#87CEFA")},
  225. {".rs",StringToColor("#FF4500")},
  226. {".pdb",StringToColor("#FFD700")},
  227. {".sql",StringToColor("#FFD700")},
  228. {".pks",StringToColor("#FFD700")},
  229. {".pkb",StringToColor("#FFD700")},
  230. {".accdb",StringToColor("#FFD700")},
  231. {".mdb",StringToColor("#FFD700")},
  232. {".sqlite",StringToColor("#FFD700")},
  233. {".pgsql",StringToColor("#FFD700")},
  234. {".postgres",StringToColor("#FFD700")},
  235. {".psql",StringToColor("#FFD700")},
  236. {".patch",StringToColor("#FF4500")},
  237. {".user",StringToColor("#00BFFF")},
  238. {".code-workspace",StringToColor("#00BFFF")},
  239. {".log",StringToColor("#F0E68C")},
  240. {".txt",StringToColor("#00CED1")},
  241. {".srt",StringToColor("#00CED1")},
  242. {".lrc",StringToColor("#00CED1")},
  243. {".ass",StringToColor("#C50000")},
  244. {".html",StringToColor("#CD5C5C")},
  245. {".htm",StringToColor("#CD5C5C")},
  246. {".xhtml",StringToColor("#CD5C5C")},
  247. {".html_vm",StringToColor("#CD5C5C")},
  248. {".asp",StringToColor("#CD5C5C")},
  249. {".css",StringToColor("#87CEFA")},
  250. {".sass",StringToColor("#FF00FF")},
  251. {".scss",StringToColor("#FF00FF")},
  252. {".less",StringToColor("#6B8E23")},
  253. {".md",StringToColor("#00BFFF")},
  254. {".markdown",StringToColor("#00BFFF")},
  255. {".rst",StringToColor("#00BFFF")},
  256. {".hbs",StringToColor("#E37933")},
  257. {".json",StringToColor("#FFD700")},
  258. {".tsbuildinfo",StringToColor("#FFD700")},
  259. {".yml",StringToColor("#FF6347")},
  260. {".yaml",StringToColor("#FF6347")},
  261. {".lua",StringToColor("#87CEFA")},
  262. {".clj",StringToColor("#00FF7F")},
  263. {".cljs",StringToColor("#00FF7F")},
  264. {".cljc",StringToColor("#00FF7F")},
  265. {".groovy",StringToColor("#87CEFA")},
  266. {".vue",StringToColor("#20B2AA")},
  267. {".dart",StringToColor("#4682B4")},
  268. {".ex",StringToColor("#8B4513")},
  269. {".exs",StringToColor("#8B4513")},
  270. {".eex",StringToColor("#8B4513")},
  271. {".leex",StringToColor("#8B4513")},
  272. {".erl",StringToColor("#FF6347")},
  273. {".elm",StringToColor("#9932CC")},
  274. {".applescript",StringToColor("#4682B4")},
  275. {".xml",StringToColor("#98FB98")},
  276. {".plist",StringToColor("#98FB98")},
  277. {".xsd",StringToColor("#98FB98")},
  278. {".dtd",StringToColor("#98FB98")},
  279. {".xsl",StringToColor("#98FB98")},
  280. {".xslt",StringToColor("#98FB98")},
  281. {".resx",StringToColor("#98FB98")},
  282. {".iml",StringToColor("#98FB98")},
  283. {".xquery",StringToColor("#98FB98")},
  284. {".tmLanguage",StringToColor("#98FB98")},
  285. {".manifest",StringToColor("#98FB98")},
  286. {".project",StringToColor("#98FB98")},
  287. {".chm",StringToColor("#87CEEB")},
  288. {".pdf",StringToColor("#CD5C5C")},
  289. {".xls",StringToColor("#9ACD32")},
  290. {".xlsx",StringToColor("#9ACD32")},
  291. {".pptx",StringToColor("#DC143C")},
  292. {".ppt",StringToColor("#DC143C")},
  293. {".pptm",StringToColor("#DC143C")},
  294. {".potx",StringToColor("#DC143C")},
  295. {".potm",StringToColor("#DC143C")},
  296. {".ppsx",StringToColor("#DC143C")},
  297. {".ppsm",StringToColor("#DC143C")},
  298. {".pps",StringToColor("#DC143C")},
  299. {".ppam",StringToColor("#DC143C")},
  300. {".ppa",StringToColor("#DC143C")},
  301. {".doc",StringToColor("#00BFFF")},
  302. {".docx",StringToColor("#00BFFF")},
  303. {".rtf",StringToColor("#00BFFF")},
  304. {".mp3",StringToColor("#DB7093")},
  305. {".flac",StringToColor("#DB7093")},
  306. {".m4a",StringToColor("#DB7093")},
  307. {".wma",StringToColor("#DB7093")},
  308. {".aiff",StringToColor("#DB7093")},
  309. {".wav",StringToColor("#DB7093")},
  310. {".aac",StringToColor("#DB7093")},
  311. {".opus",StringToColor("#DB7093")},
  312. {".png",StringToColor("#20B2AA")},
  313. {".jpeg",StringToColor("#20B2AA")},
  314. {".jpg",StringToColor("#20B2AA")},
  315. {".gif",StringToColor("#20B2AA")},
  316. {".ico",StringToColor("#20B2AA")},
  317. {".tif",StringToColor("#20B2AA")},
  318. {".tiff",StringToColor("#20B2AA")},
  319. {".psd",StringToColor("#20B2AA")},
  320. {".psb",StringToColor("#20B2AA")},
  321. {".ami",StringToColor("#20B2AA")},
  322. {".apx",StringToColor("#20B2AA")},
  323. {".bmp",StringToColor("#20B2AA")},
  324. {".bpg",StringToColor("#20B2AA")},
  325. {".brk",StringToColor("#20B2AA")},
  326. {".cur",StringToColor("#20B2AA")},
  327. {".dds",StringToColor("#20B2AA")},
  328. {".dng",StringToColor("#20B2AA")},
  329. {".eps",StringToColor("#20B2AA")},
  330. {".exr",StringToColor("#20B2AA")},
  331. {".fpx",StringToColor("#20B2AA")},
  332. {".gbr",StringToColor("#20B2AA")},
  333. {".jbig2",StringToColor("#20B2AA")},
  334. {".jb2",StringToColor("#20B2AA")},
  335. {".jng",StringToColor("#20B2AA")},
  336. {".jxr",StringToColor("#20B2AA")},
  337. {".pbm",StringToColor("#20B2AA")},
  338. {".pgf",StringToColor("#20B2AA")},
  339. {".pic",StringToColor("#20B2AA")},
  340. {".raw",StringToColor("#20B2AA")},
  341. {".webp",StringToColor("#20B2AA")},
  342. {".svg",StringToColor("#F4A460")},
  343. {".webm",StringToColor("#FFA500")},
  344. {".mkv",StringToColor("#FFA500")},
  345. {".flv",StringToColor("#FFA500")},
  346. {".vob",StringToColor("#FFA500")},
  347. {".ogv",StringToColor("#FFA500")},
  348. {".ogg",StringToColor("#FFA500")},
  349. {".gifv",StringToColor("#FFA500")},
  350. {".avi",StringToColor("#FFA500")},
  351. {".mov",StringToColor("#FFA500")},
  352. {".qt",StringToColor("#FFA500")},
  353. {".wmv",StringToColor("#FFA500")},
  354. {".yuv",StringToColor("#FFA500")},
  355. {".rm",StringToColor("#FFA500")},
  356. {".rmvb",StringToColor("#FFA500")},
  357. {".mp4",StringToColor("#FFA500")},
  358. {".mpg",StringToColor("#FFA500")},
  359. {".mp2",StringToColor("#FFA500")},
  360. {".mpeg",StringToColor("#FFA500")},
  361. {".mpe",StringToColor("#FFA500")},
  362. {".mpv",StringToColor("#FFA500")},
  363. {".m2v",StringToColor("#FFA500")},
  364. {".ics",StringToColor("#00CED1")},
  365. {".cer",StringToColor("#FF6347")},
  366. {".cert",StringToColor("#FF6347")},
  367. {".crt",StringToColor("#FF6347")},
  368. {".pfx",StringToColor("#FF6347")},
  369. {".pem",StringToColor("#66CDAA")},
  370. {".pub",StringToColor("#66CDAA")},
  371. {".key",StringToColor("#66CDAA")},
  372. {".asc",StringToColor("#66CDAA")},
  373. {".gpg",StringToColor("#66CDAA")},
  374. {".woff",StringToColor("#DC143C")},
  375. {".woff2",StringToColor("#DC143C")},
  376. {".ttf",StringToColor("#DC143C")},
  377. {".eot",StringToColor("#DC143C")},
  378. {".suit",StringToColor("#DC143C")},
  379. {".otf",StringToColor("#DC143C")},
  380. {".bmap",StringToColor("#DC143C")},
  381. {".fnt",StringToColor("#DC143C")},
  382. {".odttf",StringToColor("#DC143C")},
  383. {".ttc",StringToColor("#DC143C")},
  384. {".font",StringToColor("#DC143C")},
  385. {".fonts",StringToColor("#DC143C")},
  386. {".sui",StringToColor("#DC143C")},
  387. {".ntf",StringToColor("#DC143C")},
  388. {".mrg",StringToColor("#DC143C")},
  389. {".rb",StringToColor("#FF0000")},
  390. {".erb",StringToColor("#FF0000")},
  391. {".gemfile",StringToColor("#FF0000")},
  392. {"Rakefile",StringToColor("#FF0000")},
  393. {".fs",StringToColor("#00BFFF")},
  394. {".fsx",StringToColor("#00BFFF")},
  395. {".fsi",StringToColor("#00BFFF")},
  396. {".fsproj",StringToColor("#00BFFF")},
  397. {".dockerignore",StringToColor("#4682B4")},
  398. {".dockerfile",StringToColor("#4682B4")},
  399. {".vscodeignore",StringToColor("#6495ED")},
  400. {".vsixmanifest",StringToColor("#6495ED")},
  401. {".vsix",StringToColor("#6495ED")},
  402. {".code-workplace",StringToColor("#6495ED")},
  403. {".sublime-project",StringToColor("#F4A460")},
  404. {".sublime-workspace",StringToColor("#F4A460")},
  405. {".lock",StringToColor("#DAA520")},
  406. {".tf",StringToColor("#948EEC")},
  407. {".tfvars",StringToColor("#948EEC")},
  408. {".auto.tfvars",StringToColor("#948EEC")},
  409. {".bicep",StringToColor("#00BFFF")},
  410. {".vmdk",StringToColor("#E1E3E6")},
  411. {".vhd",StringToColor("#E1E3E6")},
  412. {".vhdx",StringToColor("#E1E3E6")},
  413. {".img",StringToColor("#E1E3E6")},
  414. {".iso",StringToColor("#E1E3E6")},
  415. {".R",StringToColor("#276DC3")},
  416. {".Rmd",StringToColor("#276DC3")},
  417. {".Rproj",StringToColor("#276DC3")},
  418. {".jl",StringToColor("#9259a3")},
  419. {".vim",StringToColor("#019833")},
  420. {".pp",StringToColor("#FFA61A")},
  421. {".epp",StringToColor("#FFA61A")},
  422. {".scala",StringToColor("#DE3423")},
  423. {".sc",StringToColor("#DE3423")},
  424. {".iLogicVb",StringToColor("#A63B22")},
  425. };
  426. private static TrueColor StringToColor (string str)
  427. {
  428. TrueColor.TryParse (str, out var c);
  429. return c ?? throw new System.Exception ("Failed to parse TrueColor from " + str);
  430. }
  431. }
  432. }