<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>name</key>
    <string>DotENV</string>
    <key>scopeName</key>
    <string>source.env</string>
    <key>fileTypes</key>
    <array>
      <string>.env</string>
      <string>.env-sample</string>
      <string>.env.example</string>
      <string>.env.local</string>
      <string>.env.dev</string>
      <string>.env.test</string>
      <string>.env.testing</string>
      <string>.env.production</string>
      <string>.env.prod</string>
    </array>
    <key>uuid</key>
    <string>09d4e117-0975-453d-a74b-c2e525473f97</string>
    <key>patterns</key>
    <array>
      <dict>
        <key>comment</key>
        <string>Comments - starts with #</string>
        <key>match</key>
        <string>(#).*$\n?</string>
        <key>name</key>
        <string>comment.line.number-sign.env</string>
        <key>captures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>punctuation.definition.comment.env</string>
          </dict>
        </dict>
      </dict>
      <dict>
        <key>comment</key>
        <string>Strings (double)</string>
        <key>name</key>
        <string>string.quoted.double.env</string>
        <key>begin</key>
        <string>(\")</string>
        <key>beginCaptures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>punctuation.definition.string.begin.env</string>
          </dict>
        </dict>
        <key>patterns</key>
        <array>
          <dict>
            <key>include</key>
            <string>#interpolation</string>
          </dict>
          <dict>
            <key>include</key>
            <string>#variable</string>
          </dict>
          <dict>
            <key>include</key>
            <string>#escape-characters</string>
          </dict>
        </array>
        <key>end</key>
        <string>(\")</string>
        <key>endCaptures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>punctuation.definition.string.end</string>
          </dict>
        </dict>
      </dict>
      <dict>
        <key>comment</key>
        <string>Strings (single)</string>
        <key>name</key>
        <string>string.quoted.single.env</string>
        <key>begin</key>
        <string>(\')</string>
        <key>beginCaptures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>punctuation.definition.string.begin.env</string>
          </dict>
        </dict>
        <key>end</key>
        <string>(\')</string>
        <key>endCaptures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>punctuation.definition.string.end</string>
          </dict>
        </dict>
      </dict>
      <dict>
        <key>comment</key>
        <string>Assignment Operator</string>
        <key>match</key>
        <string>(?&lt;=[\w])\s?=</string>
        <key>name</key>
        <string>keyword.operator.assignment.env</string>
      </dict>
      <dict>
        <key>comment</key>
        <string>Variable</string>
        <key>match</key>
        <string>([\w]+)(?=\s?\=)</string>
        <key>name</key>
        <string>variable.other.env</string>
      </dict>
      <dict>
        <key>comment</key>
        <string>Keywords</string>
        <key>match</key>
        <string>(?i)\s?(export)</string>
        <key>name</key>
        <string>keyword.other.env</string>
      </dict>
      <dict>
        <key>comment</key>
        <string>Constants</string>
        <key>match</key>
        <string>(?i)(?&lt;=\=)\s?(true|false|null)</string>
        <key>name</key>
        <string>constant.language.env</string>
      </dict>
      <dict>
        <key>comment</key>
        <string>Numeric</string>
        <key>match</key>
        <string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b</string>
        <key>name</key>
        <string>constant.numeric.env</string>
      </dict>
    </array>
    <key>repository</key>
    <dict>
      <key>interpolation</key>
      <dict>
        <key>comment</key>
        <string>Template Syntax: "foo ${bar} {$baz}"</string>
        <key>begin</key>
        <string>(\$\{|\{)</string>
        <key>beginCaptures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>string.interpolated.env keyword.other.template.begin.env</string>
          </dict>
        </dict>
        <key>patterns</key>
        <array>
          <dict>
            <key>match</key>
            <string>(?x)(\$+)?([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)</string>
            <key>captures</key>
            <dict>
              <key>1</key>
              <dict>
                <key>name</key>
                <string>punctuation.definition.variable.env variable.other.env</string>
              </dict>
              <key>2</key>
              <dict>
                <key>name</key>
                <string>variable.other.env</string>
              </dict>
            </dict>
          </dict>
        </array>
        <key>end</key>
        <string>(\})</string>
        <key>endCaptures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>string.interpolated.env keyword.other.template.end.env</string>
          </dict>
        </dict>
      </dict>
      <key>variable</key>
      <dict>
        <key>patterns</key>
        <array>
          <dict>
            <key>match</key>
            <string>(?x)(\$+)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)</string>
            <key>captures</key>
            <dict>
              <key>1</key>
              <dict>
                <key>name</key>
                <string>punctuation.definition.variable.env variable.other.env</string>
              </dict>
              <key>2</key>
              <dict>
                <key>name</key>
                <string>variable.other.env</string>
              </dict>
            </dict>
          </dict>
        </array>
      </dict>
      <key>escape-characters</key>
      <dict>
        <key>patterns</key>
        <array>
          <dict>
            <key>match</key>
            <string>\\[nrt\\\$\"\']</string>
            <key>name</key>
            <string>constant.character.escape.env</string>
          </dict>
        </array>
      </dict>
    </dict>
  </dict>
</plist>
