Language.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright (c) 2020, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "Language.h"
  7. #include <AK/LexicalPath.h>
  8. namespace HackStudio {
  9. Language language_from_file(LexicalPath const& file)
  10. {
  11. if (file.title() == "COMMIT_EDITMSG")
  12. return Language::GitCommit;
  13. auto extension = file.extension();
  14. VERIFY(!extension.starts_with('.'));
  15. if (extension == "c" || extension == "cc" || extension == "cxx" || extension == "cpp" || extension == "c++"
  16. || extension == "h" || extension == "hh" || extension == "hxx" || extension == "hpp" || extension == "h++")
  17. return Language::Cpp;
  18. if (extension == "js" || extension == "mjs" || extension == "json")
  19. return Language::JavaScript;
  20. if (extension == "html" || extension == "htm")
  21. return Language::HTML;
  22. if (extension == "css")
  23. return Language::CSS;
  24. if (extension == "gml")
  25. return Language::GML;
  26. if (extension == "ini" || extension == "af")
  27. return Language::Ini;
  28. if (extension == "sh" || extension == "bash")
  29. return Language::Shell;
  30. if (extension == "sql")
  31. return Language::SQL;
  32. return Language::Unknown;
  33. }
  34. Language language_from_name(String const& name)
  35. {
  36. if (name == "Cpp")
  37. return Language::Cpp;
  38. if (name == "Javascript")
  39. return Language::JavaScript;
  40. if (name == "Shell")
  41. return Language::Shell;
  42. if (name == "GitCommit")
  43. return Language::GitCommit;
  44. return Language::Unknown;
  45. }
  46. String language_name_from_file(LexicalPath const& file)
  47. {
  48. if (file.title() == "COMMIT_EDITMSG")
  49. return "GitCommit";
  50. auto extension = file.extension();
  51. VERIFY(!extension.starts_with('.'));
  52. if (extension == "c" || extension == "cc" || extension == "cxx" || extension == "cpp" || extension == "c++"
  53. || extension == "h" || extension == "hh" || extension == "hxx" || extension == "hpp" || extension == "h++")
  54. return "C++";
  55. if (extension == "js" || extension == "mjs" || extension == "json")
  56. return "JavaScript";
  57. if (extension == "gml")
  58. return "GML";
  59. if (extension == "ini")
  60. return "Ini";
  61. if (extension == "sh" || extension == "bash")
  62. return "Shell";
  63. if (extension == "md")
  64. return "Markdown";
  65. if (extension == "html" || extension == "htm")
  66. return "HTML";
  67. if (extension == "css")
  68. return "CSS";
  69. if (extension == "sql")
  70. return "SQL";
  71. if (extension == "txt")
  72. return "Plaintext";
  73. return "Unknown";
  74. }
  75. }