{
  "name": "Neutron",
  "scopeName": "source.neutron",
  "patterns": [
    {
      "include": "#xml-tags"
    },
    {
      "include": "#style-block"
    }
  ],
  "repository": {
    "xml-tags": {
      "patterns": [
        {
          "begin": "(<)([a-zA-Z_][a-zA-Z0-9_-]*)(>)",
          "beginCaptures": {
            "1": { "name": "punctuation.definition.tag.begin.xml" },
            "2": { "name": "entity.name.tag.xml" },
            "3": { "name": "punctuation.definition.tag.end.xml" }
          },
          "end": "(</)(\\2)(>)",
          "endCaptures": {
            "1": { "name": "punctuation.definition.tag.begin.xml" },
            "2": { "name": "entity.name.tag.xml" },
            "3": { "name": "punctuation.definition.tag.end.xml" }
          },
          "patterns": [
            { "include": "#xml-attributes" },
            { "include": "$self" }
          ]
        }
      ]
    },
    "xml-attributes": {
      "patterns": [
        {
          "match": "([a-zA-Z_][a-zA-Z0-9_-]*)(=)(\"[^\"]*\")",
          "captures": {
            "1": { "name": "entity.other.attribute-name.xml" },
            "2": { "name": "punctuation.separator.key-value.xml" },
            "3": { "name": "string.quoted.double.xml" }
          }
        }
      ]
    },
    "style-block": {
      "begin": "(<)(Style)(>)",
      "beginCaptures": {
        "1": { "name": "punctuation.definition.tag.begin.xml" },
        "2": { "name": "entity.name.tag.xml" },
        "3": { "name": "punctuation.definition.tag.end.xml" }
      },
      "end": "(</)(Style)(>)",
      "endCaptures": {
        "1": { "name": "punctuation.definition.tag.begin.xml" },
        "2": { "name": "entity.name.tag.xml" },
        "3": { "name": "punctuation.definition.tag.end.xml" }
      },
      "patterns": [
        { "include": "#css-rules" }
      ]
    },
    "css-rules": {
      "patterns": [
        {
          "match": "([#.]?[a-zA-Z_][a-zA-Z0-9_-]*)([\\s]*)({)",
          "captures": {
            "1": { "name": "entity.other.attribute-name.css" },
            "3": { "name": "punctuation.section.property-list.begin.css" }
          }
        },
        {
          "match": "([a-zA-Z-]+)(:)([^;]+)(;)",
          "captures": {
            "1": { "name": "support.type.property-name.css" },
            "2": { "name": "punctuation.separator.key-value.css" },
            "3": { "name": "meta.property-value.css" },
            "4": { "name": "punctuation.terminator.rule.css" }
          }
        },
        {
          "match": "(})",
          "captures": {
            "1": { "name": "punctuation.section.property-list.end.css" }
          }
        }
      ]
    }
  }
}