// 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 nodes) => parseVersionSemVer(nodes).toString(); static Version parseVersionSemVer(List 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'); } }