Add version information to bin/markdown.dart and example app
diff --git a/pkgs/markdown/.travis.yml b/pkgs/markdown/.travis.yml
index 5a1bc20..d9ed98c 100644
--- a/pkgs/markdown/.travis.yml
+++ b/pkgs/markdown/.travis.yml
@@ -5,6 +5,7 @@
   - dev
   - 1.18.1
   - 1.17.1
+script: tool/travis.sh
 matrix:
   allow_failures:
   # We need Travis to run Trusty for Dart 1.19+
diff --git a/pkgs/markdown/bin/markdown.dart b/pkgs/markdown/bin/markdown.dart
index 76f68e1..b21e097 100644
--- a/pkgs/markdown/bin/markdown.dart
+++ b/pkgs/markdown/bin/markdown.dart
@@ -9,6 +9,12 @@
   }
 
   if (args.length == 1) {
+    var arg = args.first;
+    if (arg == '--help') usage();
+    if (arg == '--version') {
+      print(version);
+      exit(0);
+    }
     // Read argument as a file path.
     print(markdownToHtml(new File(args[0]).readAsStringSync()));
     exit(0);
@@ -20,3 +26,18 @@
   while ((line = stdin.readLineSync()) != null) buffer.writeln(line);
   print(markdownToHtml(buffer.toString()));
 }
+
+usage() {
+  print('''Usage:
+    markdown [markdown file]
+        Convert [markdown-file] from Markdown to HTML. If no file is passed on
+        the commandline, then the Markdown source is read from STDIN.
+
+    markdown --version
+        Print the markdown package version.
+
+    markdown --help
+        Print this help text.
+  ''');
+  exit(0);
+}
diff --git a/pkgs/markdown/example/app.dart b/pkgs/markdown/example/app.dart
index 015a267..86814ff 100644
--- a/pkgs/markdown/example/app.dart
+++ b/pkgs/markdown/example/app.dart
@@ -4,6 +4,7 @@
 
 final markdownInput = querySelector('#markdown') as TextAreaElement;
 final htmlDiv = querySelector('#html') as DivElement;
+final versionSpan = querySelector('.version') as SpanElement;
 final nullSanitizer = new NullTreeSanitizer();
 const typing = const Duration(milliseconds: 150);
 final introText = r'''Markdown is the **best**!
@@ -13,6 +14,7 @@
 * It has _so much more_...''';
 
 void main() {
+  versionSpan.text = 'v${md.version}';
   markdownInput.onKeyUp.listen(_renderMarkdown);
 
   String savedMarkdown = window.localStorage['markdown'];
diff --git a/pkgs/markdown/example/index.html b/pkgs/markdown/example/index.html
index adb95cd..5eb83fe 100644
--- a/pkgs/markdown/example/index.html
+++ b/pkgs/markdown/example/index.html
@@ -13,6 +13,7 @@
       <div class="toolbar">
         <h2>Dart Markdown Live Editor</h2>
         <span style="display: flex; flex: 1;"></span>
+        <span class="version"></span>
         <a class="" href="https://github.com/dart-lang/markdown">
           <svg class="octicon" height="32" version="1.1" viewBox="0 0 16 16" width="32">
             <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path>
diff --git a/pkgs/markdown/example/style.css b/pkgs/markdown/example/style.css
index 069ff97..0131847 100644
--- a/pkgs/markdown/example/style.css
+++ b/pkgs/markdown/example/style.css
@@ -22,6 +22,11 @@
   margin: 32px;
 }
 
+.version {
+  color: rgba(0, 0, 0, 0.54);
+  margin-right: 16px;
+}
+
 .card {
   /* Styled like Material Cards. */
   color: rgba(0, 0, 0, 0.87);
diff --git a/pkgs/markdown/lib/markdown.dart b/pkgs/markdown/lib/markdown.dart
index 0cdaab0..8b477d4 100644
--- a/pkgs/markdown/lib/markdown.dart
+++ b/pkgs/markdown/lib/markdown.dart
@@ -11,3 +11,4 @@
 export 'src/extension_set.dart';
 export 'src/html_renderer.dart';
 export 'src/inline_parser.dart';
+export 'src/version.dart';
diff --git a/pkgs/markdown/lib/src/block_parser.dart b/pkgs/markdown/lib/src/block_parser.dart
index 51f2f9a..efab2a4 100644
--- a/pkgs/markdown/lib/src/block_parser.dart
+++ b/pkgs/markdown/lib/src/block_parser.dart
@@ -745,7 +745,8 @@
         lines[i].startsWith(_reflinkDefinitionStart);
 
     int i = 0;
-    loopOverDefinitions: while (true) {
+    loopOverDefinitions:
+    while (true) {
       // Check for reflink definitions.
       if (!lineStartsReflinkDefinition(i)) {
         // It's paragraph content from here on out.
diff --git a/pkgs/markdown/lib/src/inline_parser.dart b/pkgs/markdown/lib/src/inline_parser.dart
index 3033a09..7e53666 100644
--- a/pkgs/markdown/lib/src/inline_parser.dart
+++ b/pkgs/markdown/lib/src/inline_parser.dart
@@ -369,6 +369,7 @@
         int offset = pattern.pattern.length - 1;
         return parser.source.substring(state.startPos + offset, parser.pos);
       }
+
       // Reference link like [foo][bar].
       if (match[1] == null) {
         // There are no reference brackets ("shortcut reference link"), so infer
diff --git a/pkgs/markdown/lib/src/version.dart b/pkgs/markdown/lib/src/version.dart
new file mode 100644
index 0000000..14ec0d4
--- /dev/null
+++ b/pkgs/markdown/lib/src/version.dart
@@ -0,0 +1,2 @@
+/// The current version of markdown.
+final String version = '0.11.0+1';
diff --git a/pkgs/markdown/tool/travis.sh b/pkgs/markdown/tool/travis.sh
new file mode 100755
index 0000000..33c9a51
--- /dev/null
+++ b/pkgs/markdown/tool/travis.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Fast fail the script on failures.
+set -e
+
+# Analyze sources. Add --fatal-hints, --fatal-warnings, --fatal-lints
+# as you see fit.
+dartanalyzer --strong lib/ test/
+
+# Run tests.
+pub run test
+
+# Assert that code is formatted.
+pub global activate dart_style
+dirty_code=$(pub global run dart_style:format --dry-run lib/ test/)
+if [[ -n "$dirty_code" ]]; then
+  echo Unformatted files:
+  echo "$dirty_code" | sed 's/^/    /'
+  exit 1
+else
+  echo All Dart source files are formatted.
+fi
+
+# Assert that versions match.
+pubspec_version=$(awk '/^version:/' pubspec.yaml |cut -f2 -d' ')
+bin_version=$(dart bin/markdown.dart --version )
+if [[ $pubspec_version != $bin_version ]]; then
+  echo Version mismatch:
+  echo "    From pubspec.yaml:         $pubspec_version"
+  echo "    From lib/src/version.dart: $bin_version"
+  exit 1
+else
+  echo Package versions match.
+fi