cleanup tool/dartdoc-compare.dart
diff --git a/pkgs/markdown/tool/dartdoc-compare.dart b/pkgs/markdown/tool/dartdoc-compare.dart
index 5e29e71..553589e 100644
--- a/pkgs/markdown/tool/dartdoc-compare.dart
+++ b/pkgs/markdown/tool/dartdoc-compare.dart
@@ -1,63 +1,73 @@
 import 'dart:convert' show JSON;
-import 'dart:io' show Directory, File, Process;
+import 'dart:io' show Directory, File, Process, exitCode;
 
 import 'package:args/args.dart' show ArgParser;
 import 'package:path/path.dart' show absolute;
 import 'package:yaml/yaml.dart' show loadYaml;
 
-int main(List<String> arguments) {
-  const dartdocDir = 'dartdoc-dir';
-  const markdownBefore = 'before';
-  const markdownAfter = 'after';
-  const sdk = 'sdk';
-  const help = 'help';
+const _dartdocDir = 'dartdoc-dir';
+const _markdownBefore = 'before';
+const _markdownAfter = 'after';
+const _sdk = 'sdk';
+const _help = 'help';
+
+void main(List<String> arguments) {
   final parser = new ArgParser()
     ..addSeparator("Usage: dartdoc-compare.dart [OPTIONS] <dart-package>")
-    ..addOption(dartdocDir, help: "Directory of the dartdoc package")
-    ..addOption(markdownBefore, help: "Markdown package 'before' ref")
-    ..addOption(markdownAfter,
+    ..addOption(_dartdocDir, help: "Directory of the dartdoc package")
+    ..addOption(_markdownBefore, help: "Markdown package 'before' ref")
+    ..addOption(_markdownAfter,
         defaultsTo: "HEAD", help: "Markdown package 'after' ref")
-    ..addFlag(sdk,
+    ..addFlag(_sdk,
         defaultsTo: false, negatable: false, help: "Is the package the SDK?")
-    ..addFlag(help, abbr: "h", hide: true);
+    ..addFlag(_help, abbr: "h", hide: true);
   var options = parser.parse(arguments);
-  if (options[help]) {
+  if (options[_help]) {
     print(parser.usage);
-    return 0;
+    exitCode = 0;
+    return;
   }
-  if (options[dartdocDir] == null || options[markdownBefore] == null) {
+  if (options[_dartdocDir] == null || options[_markdownBefore] == null) {
     print(
-        "Invalid arguments: Options --$dartdocDir and --$markdownBefore must be specified");
+        "Invalid arguments: Options --$_dartdocDir and --$_markdownBefore must be specified");
     print(parser.usage);
-    return 1;
+    exitCode = 1;
+    return;
   }
-  var comparer = new DartdocCompare()
-    ..dartdoc_dir = options[dartdocDir]
-    ..markdown_before = options[markdownBefore]
-    ..markdown_after = options[markdownAfter]
-    ..dartdoc_bin = absolute(options[dartdocDir], "bin/dartdoc.dart")
-    ..dartdoc_pubspec_path = absolute(options[dartdocDir], "pubspec.yaml")
-    ..sdk = options[sdk];
+  var comparer = new DartdocCompare(
+      options[_dartdocDir],
+      options[_markdownBefore],
+      options[_markdownAfter],
+      absolute(options[_dartdocDir], "bin/dartdoc.dart"),
+      absolute(options[_dartdocDir], "pubspec.yaml"),
+      options[_sdk]);
 
   var package = options.rest.first;
-  var success = comparer.compare(package);
-  return success ? 0 : 1;
+
+  if (comparer.compare(package)) {
+    exitCode = 0;
+  } else {
+    exitCode = 1;
+  }
 }
 
 class DartdocCompare {
-  String dartdoc_dir;
-  String markdown_before;
-  String markdown_after;
-  String dartdoc_bin;
-  String dartdoc_pubspec_path;
-  bool sdk;
+  final String dartdocDir;
+  final String markdownBefore;
+  final String markdownAfter;
+  final String dartdocBin;
+  final String dartdocPubspecPath;
+  final bool sdk;
 
-  bool compare(package) {
+  DartdocCompare(this.dartdocDir, this.markdownBefore, this.markdownAfter,
+      this.dartdocBin, this.dartdocPubspecPath, this.sdk);
+
+  bool compare(String package) {
     // Generate docs with Markdown "A".
-    var out_before = run_dartdoc(markdown_before, package);
+    var out_before = _runDartdoc(markdownBefore, package);
 
     // Generate docs with Markdown "B".
-    var out_after = run_dartdoc(markdown_after, package);
+    var out_after = _runDartdoc(markdownAfter, package);
 
     // Compare outputs
     var diffOptions = ["-r", "-B", out_before, out_after];
@@ -68,57 +78,56 @@
     return result.exitCode == 0;
   }
 
-  String run_dartdoc(markdown_ref, package) {
+  String _runDartdoc(String markdownRef, String package) {
     print("==========================================================");
-    print("Running dartdoc for $markdown_ref...");
+    print("Running dartdoc for $markdownRef...");
     print("==========================================================");
-    doInPath(dartdoc_dir, () => update_dartdoc_pubspec(markdown_ref));
-    return doInPath(package, () {
-      if (!sdk) system('pub', ['get']);
+    _doInPath(dartdocDir, () => _updateDartdocPubspec(markdownRef));
+    return _doInPath(package, () {
+      if (!sdk) _system('pub', ['get']);
       var out = Directory.systemTemp
-          .createTempSync("dartdoc-compare-${markdown_ref}__");
+          .createTempSync("dartdoc-compare-${markdownRef}__");
       var sdk_options =
           sdk ? ["--sdk-docs", "--dart-sdk=$package"] : <String>[];
       var cmd = "dart";
-      var args = ["$dartdoc_bin", "--output=${out.path}"]..addAll(sdk_options);
+      var args = ["$dartdocBin", "--output=${out.path}"]..addAll(sdk_options);
       print("Command: $cmd ${args.join(" ")}");
-      system(cmd, args);
+      _system(cmd, args);
       print("");
 
       return out.path;
     });
   }
 
-  int update_dartdoc_pubspec(markdown_ref) {
-    var dartdoc_pubspec =
-        loadYaml(new File(dartdoc_pubspec_path).readAsStringSync());
+  int _updateDartdocPubspec(String markdownRef) {
+    var dartdocPubspec =
+        loadYaml(new File(dartdocPubspecPath).readAsStringSync()) as Map;
     // make modifiable copy
-    dartdoc_pubspec = JSON.decode(JSON.encode(dartdoc_pubspec));
+    dartdocPubspec = JSON.decode(JSON.encode(dartdocPubspec));
 
-    dartdoc_pubspec['dependencies']['markdown'] = {
+    dartdocPubspec['dependencies']['markdown'] = {
       'git': {
         'url': 'git://github.com/dart-lang/markdown.git',
-        'ref': markdown_ref
+        'ref': markdownRef
       }
     };
 
-    new File(dartdoc_pubspec_path)
-        .writeAsStringSync(JSON.encode(dartdoc_pubspec));
-    return system('pub', ['get']);
+    new File(dartdocPubspecPath).writeAsStringSync(JSON.encode(dartdocPubspec));
+    return _system('pub', ['get']);
   }
+}
 
-  static int system(String cmd, List<String> args) {
-    var result = Process.runSync(cmd, args);
-    print(result.stdout);
-    print(result.stderr);
-    return result.exitCode;
-  }
+int _system(String cmd, List<String> args) {
+  var result = Process.runSync(cmd, args);
+  print(result.stdout);
+  print(result.stderr);
+  return result.exitCode;
+}
 
-  static Object doInPath(String path, Function f) {
-    var former = Directory.current.path;
-    Directory.current = path;
-    var result = f();
-    Directory.current = former;
-    return result;
-  }
+T _doInPath<T>(String path, T f()) {
+  var former = Directory.current.path;
+  Directory.current = path;
+  var result = f();
+  Directory.current = former;
+  return result;
 }