haml top-level property

Language haml
final

Implementation

final haml = Language(
  id: "haml",
  refs: {},
  name: "HAML",
  case_insensitive: true,
  contains: [
    Mode(
      className: "meta",
      begin: "^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?\$",
      relevance: 10,
    ),
    Mode(
      scope: "comment",
      begin: "^\\s*(!=#|=#|-#|/).*\$",
      end: null,
      contains: [
        Mode(
          scope: "doctag",
          begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
          end: "(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
          excludeBegin: true,
          relevance: 0,
        ),
        Mode(
          begin:
              "[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
        ),
      ],
      relevance: 0,
    ),
    Mode(
      begin: "^\\s*(-|=|!=)(?!#)",
      end: "\$",
      subLanguage: ["ruby"],
      excludeBegin: true,
      excludeEnd: true,
    ),
    Mode(
      className: "tag",
      begin: "^\\s*%",
      contains: [
        Mode(
          className: "selector-tag",
          begin: "\\w+",
        ),
        Mode(
          className: "selector-id",
          begin: "#[\\w-]+",
        ),
        Mode(
          className: "selector-class",
          begin: "\\.[\\w-]+",
        ),
        Mode(
          begin: "\\{\\s*",
          end: "\\s*\\}",
          contains: [
            Mode(
              begin: ":\\w+\\s*=>",
              end: ",\\s+",
              returnBegin: true,
              endsWithParent: true,
              contains: [
                Mode(
                  className: "attr",
                  begin: ":\\w+",
                ),
                APOS_STRING_MODE,
                QUOTE_STRING_MODE,
                Mode(
                  begin: "\\w+",
                  relevance: 0,
                ),
              ],
            ),
          ],
        ),
        Mode(
          begin: "\\(\\s*",
          end: "\\s*\\)",
          excludeEnd: true,
          contains: [
            Mode(
              begin: "\\w+\\s*=",
              end: "\\s+",
              returnBegin: true,
              endsWithParent: true,
              contains: [
                Mode(
                  className: "attr",
                  begin: "\\w+",
                  relevance: 0,
                ),
                APOS_STRING_MODE,
                QUOTE_STRING_MODE,
                Mode(
                  begin: "\\w+",
                  relevance: 0,
                ),
              ],
            ),
          ],
        ),
      ],
    ),
    Mode(
      begin: "^\\s*[=\\x7e]\\s*",
    ),
    Mode(
      begin: "#\\{",
      end: "\\}",
      subLanguage: ["ruby"],
      excludeBegin: true,
      excludeEnd: true,
    ),
  ],
);