blob: 345ea7df08a365a836d79d526d874719738badaa [file] [log] [blame]
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library generate_vm_service_common;
import 'package:markdown/markdown.dart';
import 'package:pub_semver/pub_semver.dart';
import 'src_gen_common.dart';
/// [ApiParseUtil] contains top level parsing utilities.
class ApiParseUtil {
/// Extract the current VM Service version number as a String.
static String parseVersionString(List<Node> nodes) =>
parseVersionSemVer(nodes).toString();
static Version parseVersionSemVer(List<Node> nodes) {
final RegExp regex = RegExp(r'[\d.]+');
// Extract version from header: `# Dart VM Service Protocol 2.0`.
Element node = nodes.firstWhere((n) => isH1(n)) as Element;
Text text = node.children![0] as Text;
Match? match = regex.firstMatch(text.text);
if (match == null) throw 'Unable to locate service protocol version';
// Append a `.0`.
return Version.parse('${match.group(0)}.0');
}
}