handlebars top-level property

Language handlebars
final

Implementation

final handlebars = Language(
  id: "handlebars",
  refs: {
    '~contains~5~contains~0': Mode(
      begin:
          "(?:\\.|\\.\\/|\\/)?(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}\\x7e]+)(?:(\\.|\\/)(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+))*",
      keywords: {
        "\$pattern": "[\\w.\\/]+",
        "built_in": [
          "action",
          "bindattr",
          "collection",
          "component",
          "concat",
          "debugger",
          "each",
          "each-in",
          "get",
          "hash",
          "if",
          "in",
          "input",
          "link-to",
          "loc",
          "log",
          "lookup",
          "mut",
          "outlet",
          "partial",
          "query-params",
          "render",
          "template",
          "textarea",
          "unbound",
          "unless",
          "view",
          "with",
          "yield"
        ]
      },
      className: "name",
    ),
    '~contains~4~contains~0~starts~contains~4~starts~starts~contains~4': Mode(
      begin: "\\(",
      end: "\\)",
      contains: [
        Mode(
          begin:
              "(?:\\.|\\.\\/|\\/)?(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}\\x7e]+)(?:(\\.|\\/)(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+))*",
          className: "name",
          keywords: {
            "\$pattern": "[\\w.\\/]+",
            "built_in": [
              "action",
              "bindattr",
              "collection",
              "component",
              "concat",
              "debugger",
              "each",
              "each-in",
              "get",
              "hash",
              "if",
              "in",
              "input",
              "link-to",
              "loc",
              "log",
              "lookup",
              "mut",
              "outlet",
              "partial",
              "query-params",
              "render",
              "template",
              "textarea",
              "unbound",
              "unless",
              "view",
              "with",
              "yield"
            ]
          },
          starts: Mode(
            contains: [
              NUMBER_MODE,
              QUOTE_STRING_MODE,
              APOS_STRING_MODE,
              ModeReference('~contains~4~contains~0~starts~contains~3'),
              ModeReference('~contains~4~contains~0~starts~contains~4'),
              ModeReference(
                  '~contains~4~contains~0~starts~contains~4~starts~starts~contains~3'),
              ModeReference(
                  '~contains~4~contains~0~starts~contains~4~starts~starts~contains~4'),
            ],
            returnEnd: true,
            end: "\\)",
          ),
        ),
      ],
    ),
    '~contains~4~contains~0~starts~contains~4~starts~starts~contains~3': Mode(
      begin:
          "(?:\\.|\\.\\/|\\/)?(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}\\x7e]+)(?:(\\.|\\/)(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+))*",
      keywords: {
        "\$pattern": "[\\w.\\/]+",
        "literal": ["true", "false", "undefined", "null"]
      },
    ),
    '~contains~4~contains~0~starts~contains~4': Mode(
      className: "attr",
      begin:
          "(\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}\\x7e]+)(?==)",
      relevance: 0,
      starts: Mode(
        begin: "=",
        end: "=",
        starts: Mode(
          contains: [
            NUMBER_MODE,
            QUOTE_STRING_MODE,
            APOS_STRING_MODE,
            ModeReference(
                '~contains~4~contains~0~starts~contains~4~starts~starts~contains~3'),
            ModeReference(
                '~contains~4~contains~0~starts~contains~4~starts~starts~contains~4'),
          ],
        ),
      ),
    ),
    '~contains~4~contains~0~starts~contains~3': Mode(
      begin: "as\\s+\\|",
      keywords: {"keyword": "as"},
      end: "\\|",
      contains: [
        Mode(
          begin: "\\w+",
        ),
      ],
    ),
    '~contains~4~contains~0': Mode(
      begin:
          "(?:\\.|\\.\\/|\\/)?(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}\\x7e]+)(?:(\\.|\\/)(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+))*",
      keywords: {
        "\$pattern": "[\\w.\\/]+",
        "built_in": [
          "action",
          "bindattr",
          "collection",
          "component",
          "concat",
          "debugger",
          "each",
          "each-in",
          "get",
          "hash",
          "if",
          "in",
          "input",
          "link-to",
          "loc",
          "log",
          "lookup",
          "mut",
          "outlet",
          "partial",
          "query-params",
          "render",
          "template",
          "textarea",
          "unbound",
          "unless",
          "view",
          "with",
          "yield"
        ]
      },
      className: "name",
      starts: Mode(
        contains: [
          NUMBER_MODE,
          QUOTE_STRING_MODE,
          APOS_STRING_MODE,
          ModeReference('~contains~4~contains~0~starts~contains~3'),
          ModeReference('~contains~4~contains~0~starts~contains~4'),
          ModeReference(
              '~contains~4~contains~0~starts~contains~4~starts~starts~contains~3'),
          ModeReference(
              '~contains~4~contains~0~starts~contains~4~starts~starts~contains~4'),
        ],
        returnEnd: true,
        end: "\\}\\}",
      ),
    ),
    '~contains~10~contains~0': Mode(
      begin:
          "(?:\\.|\\.\\/|\\/)?(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}\\x7e]+)(?:(\\.|\\/)(?:\"\"|\"[^\"]+\"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+))*",
      className: "name",
      keywords: {
        "\$pattern": "[\\w.\\/]+",
        "built_in": [
          "action",
          "bindattr",
          "collection",
          "component",
          "concat",
          "debugger",
          "each",
          "each-in",
          "get",
          "hash",
          "if",
          "in",
          "input",
          "link-to",
          "loc",
          "log",
          "lookup",
          "mut",
          "outlet",
          "partial",
          "query-params",
          "render",
          "template",
          "textarea",
          "unbound",
          "unless",
          "view",
          "with",
          "yield"
        ]
      },
      starts: Mode(
        contains: [
          NUMBER_MODE,
          QUOTE_STRING_MODE,
          APOS_STRING_MODE,
          ModeReference('~contains~4~contains~0~starts~contains~3'),
          ModeReference('~contains~4~contains~0~starts~contains~4'),
          ModeReference(
              '~contains~4~contains~0~starts~contains~4~starts~starts~contains~3'),
          ModeReference(
              '~contains~4~contains~0~starts~contains~4~starts~starts~contains~4'),
        ],
        returnEnd: true,
        end: "\\}\\}",
      ),
    ),
  },
  name: "Handlebars",
  aliases: ["hbs", "html.hbs", "html.handlebars", "htmlbars"],
  case_insensitive: true,
  subLanguage: ["xml"],
  contains: [
    Mode(
      begin: "\\\\\\{\\{",
      skip: true,
    ),
    Mode(
      begin: "\\\\\\\\(?=\\{\\{)",
      skip: true,
    ),
    Mode(
      scope: "comment",
      begin: "\\{\\{!--",
      end: "--\\}\\}",
      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}",
        ),
      ],
    ),
    Mode(
      scope: "comment",
      begin: "\\{\\{!",
      end: "\\}\\}",
      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}",
        ),
      ],
    ),
    Mode(
      className: "template-tag",
      begin: "\\{\\{\\{\\{(?!\\/)",
      end: "\\}\\}\\}\\}",
      contains: [
        ModeReference('~contains~4~contains~0'),
      ],
      starts: Mode(
        end: "\\{\\{\\{\\{\\/",
        returnEnd: true,
        subLanguage: ["xml"],
      ),
    ),
    Mode(
      className: "template-tag",
      begin: "\\{\\{\\{\\{\\/",
      end: "\\}\\}\\}\\}",
      contains: [
        ModeReference('~contains~5~contains~0'),
      ],
    ),
    Mode(
      className: "template-tag",
      begin: "\\{\\{#",
      end: "\\}\\}",
      contains: [
        ModeReference('~contains~4~contains~0'),
      ],
    ),
    Mode(
      className: "template-tag",
      begin: "\\{\\{(?=else\\}\\})",
      end: "\\}\\}",
      keywords: "else",
    ),
    Mode(
      className: "template-tag",
      begin: "\\{\\{(?=else if)",
      end: "\\}\\}",
      keywords: "else if",
    ),
    Mode(
      className: "template-tag",
      begin: "\\{\\{\\/",
      end: "\\}\\}",
      contains: [
        ModeReference('~contains~5~contains~0'),
      ],
    ),
    Mode(
      className: "template-variable",
      begin: "\\{\\{\\{",
      end: "\\}\\}\\}",
      contains: [
        ModeReference('~contains~10~contains~0'),
      ],
    ),
    Mode(
      className: "template-variable",
      begin: "\\{\\{",
      end: "\\}\\}",
      contains: [
        ModeReference('~contains~10~contains~0'),
      ],
    ),
  ],
);