diff --git a/packages/highlight/src/__tests__/highlighter.test.ts b/packages/highlight/src/__tests__/highlighter.test.ts
index af2d97615..74bc49bbd 100644
--- a/packages/highlight/src/__tests__/highlighter.test.ts
+++ b/packages/highlight/src/__tests__/highlighter.test.ts
@@ -46,6 +46,22 @@ describe("highlightCode", () => {
expect(stringToken?.style).toBe("string");
});
+ it("highlights Dart code", () => {
+ const code = 'class Greeter {\n final String message = "hello";\n}';
+ const result = highlightCode(code, "test.dart");
+
+ expect(result).toHaveLength(3);
+
+ const classToken = result[0].find((t) => t.text === "class");
+ expect(classToken?.style).toBe("keyword");
+
+ const finalToken = result[1].find((t) => t.text === "final");
+ expect(finalToken?.style).toBe("keyword");
+
+ const stringToken = result[1].find((t) => t.text.includes("hello"));
+ expect(stringToken?.style).toBe("string");
+ });
+
it("highlights TSX code with correct dialect", () => {
const code = 'const el =
hello
;';
const result = highlightCode(code, "test.tsx");
diff --git a/packages/highlight/src/__tests__/parsers.test.ts b/packages/highlight/src/__tests__/parsers.test.ts
index c0bf459bb..a04ad64c6 100644
--- a/packages/highlight/src/__tests__/parsers.test.ts
+++ b/packages/highlight/src/__tests__/parsers.test.ts
@@ -14,6 +14,7 @@ describe("isLanguageSupported", () => {
expect(isLanguageSupported("test.html")).toBe(true);
expect(isLanguageSupported("test.java")).toBe(true);
expect(isLanguageSupported("test.swift")).toBe(true);
+ expect(isLanguageSupported("test.dart")).toBe(true);
expect(isLanguageSupported("test.ex")).toBe(true);
});
@@ -51,6 +52,7 @@ describe("getSupportedExtensions", () => {
expect(extensions).toContain("go");
expect(extensions).toContain("rs");
expect(extensions).toContain("swift");
+ expect(extensions).toContain("dart");
expect(extensions).toContain("json");
});
});
diff --git a/packages/highlight/src/parsers.ts b/packages/highlight/src/parsers.ts
index 32854914e..a9df5ebe2 100644
--- a/packages/highlight/src/parsers.ts
+++ b/packages/highlight/src/parsers.ts
@@ -1,4 +1,5 @@
import { StreamLanguage } from "@codemirror/language";
+import { dart } from "@codemirror/legacy-modes/mode/clike";
import { swift } from "@codemirror/legacy-modes/mode/swift";
import { parser as jsParser } from "@lezer/javascript";
import { parser as jsonParser } from "@lezer/json";
@@ -59,6 +60,8 @@ const parsersByExtension: Record = {
rs: rustParser,
// Swift
swift: StreamLanguage.define(swift).parser,
+ // Dart
+ dart: StreamLanguage.define(dart).parser,
// Elixir
ex: elixirParser,
exs: elixirParser,