Language.cpp 2.9 KB

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