Exemplo n.º 1
0
        public static Doc Print(ArgumentSyntax node)
        {
            var docs = new List <Doc>();

            if (node.NameColon != null)
            {
                docs.Add(NameColon.Print(node.NameColon));
            }

            docs.Add(Token.PrintWithSuffix(node.RefKindKeyword, " "));
            docs.Add(Node.Print(node.Expression));
            return(Doc.Concat(docs));
        }
Exemplo n.º 2
0
 public static Doc Print(RecursivePatternSyntax node)
 {
     return(Doc.Concat(
                node.Type != null ? Doc.Concat(Node.Print(node.Type), " ") : Doc.Null,
                node.PositionalPatternClause != null
             ? Doc.Concat(
                    Token.Print(node.PositionalPatternClause.OpenParenToken),
                    SeparatedSyntaxList.Print(
                        node.PositionalPatternClause.Subpatterns,
                        subpatternNode =>
                        Doc.Concat(
                            subpatternNode.NameColon != null
                                     ? NameColon.Print(subpatternNode.NameColon)
                                     : string.Empty,
                            Node.Print(subpatternNode.Pattern)
                            ),
                        " "
                        ),
                    Token.Print(node.PositionalPatternClause.CloseParenToken)
                    )
             : string.Empty,
                node.PropertyPatternClause != null
             ? Doc.Concat(
                    Token.PrintWithSuffix(node.PropertyPatternClause.OpenBraceToken, " "),
                    SeparatedSyntaxList.Print(
                        node.PropertyPatternClause.Subpatterns,
                        subpatternNode =>
                        Doc.Concat(
                            subpatternNode.NameColon != null
                                     ? NameColon.Print(subpatternNode.NameColon)
                                     : Doc.Null,
                            Node.Print(subpatternNode.Pattern)
                            ),
                        " "
                        ),
                    node.PropertyPatternClause.Subpatterns.Any() ? " " : Doc.Null,
                    Token.Print(node.PropertyPatternClause.CloseBraceToken)
                    )
             : string.Empty,
                node.Designation != null
             ? Doc.Concat(" ", Node.Print(node.Designation))
             : string.Empty
                ));
 }
Exemplo n.º 3
0
        public static Doc Print(AttributeListSyntax node)
        {
            var docs = new List <Doc>();

            if (node.Parent is CompilationUnitSyntax)
            {
                docs.Add(ExtraNewLines.Print(node));
            }

            docs.Add(Token.Print(node.OpenBracketToken));
            if (node.Target != null)
            {
                docs.Add(
                    Token.Print(node.Target.Identifier),
                    Token.PrintWithSuffix(node.Target.ColonToken, " ")
                    );
            }

            var printSeparatedSyntaxList = SeparatedSyntaxList.Print(
                node.Attributes,
                attributeNode =>
            {
                var name = Node.Print(attributeNode.Name);
                if (attributeNode.ArgumentList == null)
                {
                    return(name);
                }

                return(Doc.Group(
                           name,
                           Token.Print(attributeNode.ArgumentList.OpenParenToken),
                           Doc.Indent(
                               Doc.SoftLine,
                               SeparatedSyntaxList.Print(
                                   attributeNode.ArgumentList.Arguments,
                                   attributeArgumentNode =>
                                   Doc.Concat(
                                       attributeArgumentNode.NameEquals != null
                                            ? NameEquals.Print(attributeArgumentNode.NameEquals)
                                            : Doc.Null,
                                       attributeArgumentNode.NameColon != null
                                            ? NameColon.Print(attributeArgumentNode.NameColon)
                                            : Doc.Null,
                                       Node.Print(attributeArgumentNode.Expression)
                                       ),
                                   Doc.Line
                                   )
                               ),
                           Doc.SoftLine,
                           Token.Print(attributeNode.ArgumentList.CloseParenToken)
                           ));
            },
                Doc.Line
                );

            docs.Add(
                node.Attributes.Count > 1
                    ? Doc.Indent(Doc.SoftLine, printSeparatedSyntaxList)
                    : printSeparatedSyntaxList
                );

            docs.Add(
                node.Attributes.Count > 1 ? Doc.SoftLine : Doc.Null,
                Token.Print(node.CloseBracketToken)
                );

            return(Doc.Group(docs));
        }