code: function(parser, reporter) {
          "use strict";
          var rule = this,
              properties;
  
          var startRule = function () {
              properties = [];
          };
  
          var endRule = function(event) {
              var currentProperties = properties.join(","),
                  expectedProperties = properties.sort().join(",");
  
              if (currentProperties !== expectedProperties) {
                  reporter.report("Rule doesn't have all its properties in alphabetical order.", event.line, event.col, rule);
              }
          };
  
          parser.addListener("startrule", startRule);
          parser.addListener("startfontface", startRule);
          parser.addListener("startpage", startRule);
          parser.addListener("startpagemargin", startRule);
          parser.addListener("startkeyframerule", startRule);
          parser.addListener("startviewport", startRule);
  
          parser.addListener("property", function(event) {
              var name = event.property.text,
                  lowerCasePrefixLessName = name.toLowerCase().replace(/^-.*?-/, "");
  
              properties.push(lowerCasePrefixLessName);
          });
  
          parser.addListener("endrule", endRule);
          parser.addListener("endfontface", endRule);
          parser.addListener("endpage", endRule);
          parser.addListener("endpagemargin", endRule);
          parser.addListener("endkeyframerule", endRule);
          parser.addListener("endviewport", endRule);
      }
docs: initialization