parseDimension static method

String parseDimension(
  1. LatexParserContext ctx,
  2. LatexTokenStream stream
)

Parses a TeX dimension either in braces ({1.2em}) or in the usual unbraced form (1.2em). Leading whitespace is ignored.

Implementation

static String parseDimension(
  LatexParserContext ctx,
  LatexTokenStream stream,
) {
  if (stream.peek() is LeftBraceToken) {
    final arg = ctx.parseArgument();
    if (arg == null) return "0pt";
    final text = extractText([arg]).trim();
    return text.isEmpty ? "0pt" : text;
  }

  while (stream.peek() is WhitespaceToken) {
    stream.advance();
  }

  final rawBuffer = StringBuffer();
  while (true) {
    final token = stream.peek();
    if (token is! TextToken) break;
    rawBuffer.write(token.content);
    stream.advance();
    if (_dimensionPattern.hasMatch(rawBuffer.toString())) break;
  }

  final raw = rawBuffer.toString();
  final match = _dimensionPattern.firstMatch(raw);
  return match?.group(0) ?? (raw.isEmpty ? "0pt" : raw);
}