Files
sdk/pkg/vm_service/tool/common/src_gen_common.dart
T
Jacob MacDonald 88fdbea483 Update to the latest markdown, an internal Cl has been prepared and
paired with this so the sdk roll can succeed.

TEST=Fixes static errors

Change-Id: Ia4e325936ea81d0d51fbf6dd939b732860d22100
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183760
Commit-Queue: Jake Macdonald <jakemac@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
2021-02-09 18:42:42 +00:00

95 lines
2.7 KiB
Dart

// 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 src_gen_common;
import 'package:markdown/markdown.dart';
const int RUNE_SPACE = 32;
const int RUNE_EOL = 10;
const int RUNE_LEFT_CURLY = 123;
const int RUNE_RIGHT_CURLY = 125;
final RegExp _wsRegexp = RegExp(r'\s+');
String collapseWhitespace(String str) => str.replaceAll(_wsRegexp, ' ');
bool isEmphasis(Node node) => node is Element && node.tag == 'em';
bool isPara(Node node) => node is Element && node.tag == 'p';
bool isBlockquote(Node node) => node is Element && node.tag == 'blockquote';
bool isPre(Node node) => node is Element && node.tag == 'pre';
bool isList(Node node) => node is Element && node.tag == 'ul';
bool isH1(Node node) => node is Element && node.tag == 'h1';
bool isH3(Node node) => node is Element && node.tag == 'h3';
bool isHeader(Node node) => node is Element && node.tag.startsWith('h');
String textForElement(Node node) =>
(((node as Element).children!.first) as Text).text;
String textForCode(Node node) =>
textForElement((node as Element).children!.first);
/// foo ==> Foo
String titleCase(String str) =>
str.substring(0, 1).toUpperCase() + str.substring(1);
/// FooBar ==> fooBar
String lowerTitleCase(String str) =>
str.substring(0, 1).toLowerCase() + str.substring(1);
String joinLast(Iterable<String> strs, String join, [String? last]) {
if (strs.isEmpty) return '';
List list = strs.toList();
if (list.length == 1) return list.first;
StringBuffer buf = StringBuffer();
for (int i = 0; i < list.length; i++) {
if (i > 0) {
if (i + 1 == list.length && last != null) {
buf.write(last);
} else {
buf.write(join);
}
}
buf.write(list[i]);
}
return buf.toString();
}
/// Wrap a string on column boundaries.
String wrap(String str, [int col = 80]) {
// The given string could contain newlines.
List<String> lines = str.split('\n');
return lines.map((l) => _simpleWrap(l, col)).join('\n');
}
/// Wrap a string ignoring newlines.
String _simpleWrap(String str, [int col = 80]) {
List<String> lines = [];
while (str.length > col) {
int index = col;
while (index > 0 && str.codeUnitAt(index) != RUNE_SPACE) {
index--;
}
if (index == 0) {
index = str.indexOf(' ');
if (index == -1) {
lines.add(str);
str = '';
} else {
lines.add(str.substring(0, index).trim());
str = str.substring(index).trim();
}
} else {
lines.add(str.substring(0, index).trim());
str = str.substring(index).trim();
}
}
if (str.isNotEmpty) lines.add(str);
return lines.join('\n');
}