Merge pull request dart-lang/markdown#125 from srawlins/version
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