code: function () {
                  var name, value, rules, identifier, e, nodes, nonVendorSpecificName,
                      hasBlock, hasIdentifier;
  
                  if (input.charAt(i) !== '@') return;
  
                  if (value = $(this['import']) || $(this.media)) {
                      return value;
                  }
                  
                  save();
  
                  name = $(/^@[a-z-]+/);
  
                  nonVendorSpecificName = name;
                  if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {
                      nonVendorSpecificName = "@" + name.slice(name.indexOf('-', 2) + 1);
                  }
  
                  switch(nonVendorSpecificName) {
                      case "@font-face":
                          hasBlock = true;
                          break;
                      case "@viewport":
                      case "@top-left":
                      case "@top-left-corner":
                      case "@top-center":
                      case "@top-right":
                      case "@top-right-corner":
                      case "@bottom-left":
                      case "@bottom-left-corner":
                      case "@bottom-center":
                      case "@bottom-right":
                      case "@bottom-right-corner":
                      case "@left-top":
                      case "@left-middle":
                      case "@left-bottom":
                      case "@right-top":
                      case "@right-middle":
                      case "@right-bottom":
                          hasBlock = true;
                          break;
                      case "@page":
                      case "@document":
                      case "@supports":
                      case "@keyframes":
                          hasBlock = true;
                          hasIdentifier = true;
                          break;
                  }
  
                  if (hasIdentifier) {
                      name += " " + ($(/^[^{]+/) || '').trim();
                  }
  
                  if (hasBlock)
                  {
                      if (rules = $(this.block)) {
                          return new(tree.Directive)(name, rules);
                      }
                  } else {
                      if ((value = $(this.entity)) && $(';')) {
                          return new(tree.Directive)(name, value);
                      }
                  }
                  
                  restore();
              }
docs: A CSS Directive  @charset "utf-8";