Skip to content

Commit f36b4be

Browse files
committed
feat(shared/codeHighlight): add Dockerfile syntax highlighting support
This change enhances code highlighting functionality by adding support for Dockerfile syntax. It specifically handles files named exactly `Dockerfile` (case-sensitive), begins with exactly `Dockerfile.` (case-sensitive), or has file extension `dockerfile` (case-insensitive).
1 parent 488b6e3 commit f36b4be

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

packages/shared/src/lib/codeHighlight.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { xml } from '@codemirror/lang-xml';
2020
import { yaml } from '@codemirror/lang-yaml';
2121
import { HighlightStyle, StreamLanguage } from '@codemirror/language';
2222
import { commonLisp } from '@codemirror/legacy-modes/mode/commonlisp';
23+
import { dockerFile } from '@codemirror/legacy-modes/mode/dockerfile';
2324
import { jinja2 } from '@codemirror/legacy-modes/mode/jinja2';
2425
import { lua } from '@codemirror/legacy-modes/mode/lua';
2526
import { ruby } from '@codemirror/legacy-modes/mode/ruby';
@@ -92,7 +93,14 @@ export function highlightNode(node: Element, mimeType: string): void {
9293
}
9394

9495
export function parserFromFilename(filename: string): Parser | null {
95-
const ext = filename.split('.').pop();
96+
const basename = filename.split('/').pop() || '';
97+
const ext = basename.split('.').pop()?.toLowerCase();
98+
99+
// Handle Dockerfiles (with common variations).
100+
if (basename === 'Dockerfile' || basename.startsWith('Dockerfile.') || ext === 'dockerfile') {
101+
return StreamLanguage.define(dockerFile).parser;
102+
}
103+
96104
switch (ext) {
97105
case 'jsx':
98106
case 'js':

0 commit comments

Comments
 (0)