filetype: dockerfile
-detect:
- filename: "Dockerfile[^/]*$|\\.dockerfile$"
+detect:
+ filename: "(Dockerfile[^/]*$|\\.dockerfile$)"
rules:
- - statement: "^(FROM|MAINTAINER|RUN|CMD|LABEL|EXPOSE|ENV|ADD|COPY|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|ARG|HEALTHCHECK|STOPSIGNAL|SHELL)[[:space:]]"
- - symbol.brackets: "(\\(|\\)|\\[|\\])"
+ ## Keywords
+ - keyword: "(?i)^(FROM|MAINTAINER|RUN|CMD|LABEL|EXPOSE|ENV|ADD|COPY|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|ARG|HEALTHCHECK|STOPSIGNAL|SHELL)[[:space:]]"
+
+ ## Brackets & parenthesis
+ - statement: "(\\(|\\)|\\[|\\])"
+
+ ## Double ampersand
- special: "&&"
- - comment: "^[[:space:]]*#.*$"
- - constant.string: "'([^']|(\\\\'))*'|%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!"
- - constant.string: "\"([^\"]|(\\\\\"))*\"|%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!"
+
+ ## Comments
+ - comment:
+ start: "#"
+ end: "$"
+ rules:
+ - todo: "(TODO|XXX|FIXME):?"
+
+ - constant.string:
+ start: "\""
+ end: "(?<!\\\\)\""
+ rules:
+ - constant.specialChar: "\\\\."
+
+ - constant.string:
+ start: "'"
+ end: "(?<!\\\\)'"
+ rules:
+ - constant.specialChar: "\\\\."
+