public static void AddTrivias<T>(this IScriptTerminal node, T trivias, bool before) where T : IEnumerable<ScriptTrivia> { foreach (var trivia in trivias) { node.AddTrivia(trivia, before); } }
public static void AddSpaceAfter(this IScriptTerminal node) { if (!node.HasTrailingSpaceTrivias()) { node.AddTrivia(ScriptTrivia.Space, false); } }
public static void AddSemiColonAfter(this IScriptTerminal node) { if (!node.HasTrivia(ScriptTriviaType.SemiColon, false)) { node.AddTrivia(ScriptTrivia.SemiColon, false); } }
public static void AddCommaAfter(this IScriptTerminal node) { if (!node.HasTrivia(ScriptTriviaType.Comma, false)) { node.AddTrivia(ScriptTrivia.Comma, false); } }
public static void AddLeadingSpace(this IScriptTerminal node) { if (!node.HasLeadingSpaceTrivias()) { node.AddTrivia(ScriptTrivia.Space, true); } }
private void FlushTrivias(IScriptTerminal element, bool isBefore) { if (_isKeepTrivia && _trivias.Count > 0) { element.AddTrivias(_trivias, isBefore); _trivias.Clear(); } }
public static void AddTrivia(this IScriptTerminal node, ScriptTrivia trivia, bool before) { var trivias = node.Trivias; if (trivias == null) { node.Trivias = trivias = new ScriptTrivias(); } (before ? trivias.Before : trivias.After).Add(trivia); }
private T Close <T>(T node) where T : ScriptNode { node.Span.End = Previous.End; if (_isKeepTrivia && node is IScriptTerminal terminal) { _lastTerminalWithTrivias = terminal; FlushTrivias(terminal, false); } return(node); }
public static bool HasTriviaEndOfStatement(this IScriptTerminal node, bool before) { if (node.Trivias == null) { return false; } foreach (var trivia in (before ? node.Trivias.Before : node.Trivias.After)) { if (trivia.Type == ScriptTriviaType.NewLine || trivia.Type == ScriptTriviaType.SemiColon) { return true; } } return false; }
public static bool HasTrivia(this IScriptTerminal node, ScriptTriviaType triviaType, bool before) { if (node.Trivias == null) { return false; } foreach (var trivia in (before ? node.Trivias.Before : node.Trivias.After)) { if (trivia.Type == triviaType) { return true; } } return false; }
public static bool HasTrailingSpaceTrivias(this IScriptTerminal node) { if (node.Trivias == null) { return false; } var triviasAfter = node.Trivias.After; if (triviasAfter.Count > 0) { var trivia = triviasAfter[triviasAfter.Count - 1]; if (trivia.Type.IsSpaceOrNewLine()) { return true; } } return false; }
public static bool HasLeadingSpaceTrivias(this IScriptTerminal node) { if (node.Trivias == null) { return false; } foreach (var trivia in node.Trivias.Before) { if (trivia.Type.IsSpaceOrNewLine()) { return true; } else { break; } } return false; }