format static method
Implementation
static String format(String s, {JsonAnalyzer? analyzer}) {
analyzer ??= JsonAnalyzer();
var result = s;
var err = analyzer.analyze(s);
if (err == null) {
var tokens = Lexer().scan(s);
var reformatText = '';
var lastLineIndentNumber = 0;
while (!tokens.isEof) {
if (tokens.precedingComments != null) {
var commentText =
'${tokens.precedingComments!.toString()}\n${_createIndentSpace(lastLineIndentNumber)}';
var nextComment = tokens.precedingComments?.next;
while (nextComment is CommentToken) {
commentText +=
'${nextComment.toString()}\n${_createIndentSpace(lastLineIndentNumber)}';
nextComment = nextComment.next;
}
reformatText += commentText;
}
reformatText += tokens.lexeme;
if (tokens.lexeme == '{' || tokens.lexeme == '[') {
lastLineIndentNumber++;
reformatText += '\n${_createIndentSpace(lastLineIndentNumber)}';
} else if (tokens.lexeme == ':') {
reformatText += ' ';
}
if (tokens.next?.lexeme == '}' ||
tokens.next?.lexeme == ']' ||
tokens.next?.isEof == true) {
lastLineIndentNumber =
lastLineIndentNumber > 0 ? --lastLineIndentNumber : 0;
reformatText += '\n${_createIndentSpace(lastLineIndentNumber)}';
} else if (tokens.lexeme == ',') {
reformatText += '\n${_createIndentSpace(lastLineIndentNumber)}';
}
tokens = tokens.next!;
}
result = reformatText;
} else {
error(tag: 'JsonElement', message: 'format error', err: err);
}
return result;
}