Allow section to be specified in common_mark_stats.dart
diff --git a/pkgs/markdown/tool/common_mark_stats.dart b/pkgs/markdown/tool/common_mark_stats.dart index 454b247..6d50731 100644 --- a/pkgs/markdown/tool/common_mark_stats.dart +++ b/pkgs/markdown/tool/common_mark_stats.dart
@@ -5,6 +5,7 @@ import 'dart:io'; import 'dart:mirrors'; +import 'package:args/args.dart' show ArgParser; import 'package:collection/collection.dart'; import 'package:html/parser.dart' show parseFragment; import 'package:markdown/markdown.dart'; @@ -20,8 +21,15 @@ .path); void main(List<String> args) { - var raw = args.any((s) => s == '--raw'); - var verbose = args.any((s) => s == '--verbose'); + final parser = new ArgParser() + ..addOption('section', help: 'Restrict tests to one section') + ..addFlag('raw', defaultsTo: false, help: 'raw JSON format') + ..addFlag('verbose', defaultsTo: false, help: 'verbose output'); + var options = parser.parse(args); + + var specifiedSection = options['section']; + var raw = options['raw']; + var verbose = options['verbose']; var sections = loadCommonMarkSections(); @@ -31,6 +39,9 @@ String indent(String s) => s.splitMapJoin('\n', onNonMatch: (n) => ' $n'); sections.forEach((section, examples) { + if (specifiedSection != null && section != specifiedSection) { + return; + } for (var e in examples) { var output; var nestedMap = @@ -47,7 +58,7 @@ var actual = parseFragment(output); nestedMap[e.example] = compareHtml(expected.children, actual.children); if (verbose && !nestedMap[e.example]) { - print('FAIL'); + print('FAIL: http://spec.commonmark.org/0.24/#example-${e.example}'); print('input:'); print(indent(e.markdown)); print('expected:');