JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/printer/concretesyntaxmodel/CsmElement.java
1/*
2 * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2020 The JavaParser Team.
4 *
5 * This file is part of JavaParser.
6 *
7 * JavaParser can be used either under the terms of
8 * a) the GNU Lesser General Public License as published by
9 *     the Free Software Foundation, either version 3 of the License, or
10 *     (at your option) any later version.
11 * b) the terms of the Apache License
12 *
13 * You should have received a copy of both licenses in LICENCE.LGPL and
14 * LICENCE.APACHE. Please refer to those files for details.
15 *
16 * JavaParser is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 */
21
22package com.github.javaparser.printer.concretesyntaxmodel;
23
24import com.github.javaparser.GeneratedJavaParserConstants;
25import com.github.javaparser.ast.Node;
26import com.github.javaparser.ast.observer.ObservableProperty;
27import com.github.javaparser.printer.SourcePrinter;
28import com.github.javaparser.utils.LineSeparator;
29
30import java.util.Arrays;
31import java.util.List;
32
33import static com.github.javaparser.TokenTypes.*;
34
35public interface CsmElement {
36
37    void prettyPrint(Node nodeSourcePrinter printer);
38
39    static CsmElement child(ObservableProperty property) {
40        return new CsmSingleReference(property);
41    }
42
43    static CsmElement attribute(ObservableProperty property) {
44        return new CsmAttribute(property);
45    }
46
47    static CsmElement sequence(CsmElement... elements) {
48        return new CsmSequence(Arrays.asList(elements));
49    }
50
51    static CsmElement string(int tokenTypeString content) {
52        return new CsmToken(tokenTypecontent);
53    }
54
55    static CsmElement string(int tokenType) {
56        return new CsmToken(tokenType);
57    }
58
59    static CsmElement stringToken(ObservableProperty property) {
60        return new CsmString(property);
61    }
62
63    static CsmElement textBlockToken(ObservableProperty property) {
64        return new CsmString(property);
65    }
66
67    static CsmElement charToken(ObservableProperty property) {
68        return new CsmChar(property);
69    }
70
71    static CsmElement token(int tokenType) {
72        return new CsmToken(tokenType);
73    }
74
75    static CsmElement token(int tokenTypeCsmToken.TokenContentCalculator tokenContentCalculator) {
76        return new CsmToken(tokenTypetokenContentCalculator);
77    }
78
79    static CsmElement conditional(ObservableProperty propertyCsmConditional.Condition conditionCsmElement thenElement) {
80        return new CsmConditional(propertyconditionthenElement);
81    }
82
83    static CsmElement conditional(ObservableProperty propertyCsmConditional.Condition conditionCsmElement thenElementCsmElement elseElement) {
84        return new CsmConditional(propertyconditionthenElementelseElement);
85    }
86
87    static CsmElement conditional(List<ObservablePropertypropertiesCsmConditional.Condition conditionCsmElement thenElementCsmElement elseElement) {
88        return new CsmConditional(propertiesconditionthenElementelseElement);
89    }
90
91    static CsmElement space() {
92        return new CsmToken(spaceTokenKind(), " ");
93    }
94
95    static CsmElement semicolon() {
96        return new CsmToken(GeneratedJavaParserConstants.SEMICOLON);
97    }
98
99    static CsmElement comment() { return new CsmComment(); }
100
101    static CsmElement newline() {
102        return newline(LineSeparator.SYSTEM);
103    }
104
105    static CsmElement newline(LineSeparator lineSeparator) {
106        return new CsmToken(eolTokenKind(lineSeparator), lineSeparator.asRawString());
107    }
108
109    static CsmElement none() {
110        return new CsmNone();
111    }
112
113    static CsmElement comma() {
114        return new CsmToken(GeneratedJavaParserConstants.COMMA);
115    }
116
117    static CsmElement list(ObservableProperty property) {
118        return new CsmList(property);
119    }
120
121    static CsmElement list(ObservableProperty propertyCsmElement separator) {
122        return new CsmList(propertyCsmElement.none(), separator, new CsmNone(), new CsmNone());
123    }
124
125    static CsmElement list(ObservableProperty propertyCsmElement separatorCsmElement preceedingCsmElement following) {
126        return new CsmList(propertynone(), separatorpreceedingfollowing);
127    }
128
129    static CsmElement list(ObservableProperty propertyCsmElement separatorPreCsmElement separatorPostCsmElement preceedingCsmElement following) {
130        return new CsmList(propertyseparatorPreseparatorPostpreceedingfollowing);
131    }
132
133    static CsmElement orphanCommentsEnding() {
134        return new CsmOrphanCommentsEnding();
135    }
136
137    static CsmElement orphanCommentsBeforeThis() {
138        // FIXME
139        return new CsmNone();
140    }
141
142    static CsmElement indent() {
143        return new CsmIndent();
144    }
145
146    static CsmElement unindent() {
147        return new CsmUnindent();
148    }
149
150    static CsmElement block(CsmElement content) {
151        return sequence(token(GeneratedJavaParserConstants.LBRACE), indent(), contentunindent(), token(GeneratedJavaParserConstants.RBRACE));
152    }
153}
154
MembersX
CsmElement:stringToken
CsmElement:token
CsmElement:orphanCommentsEnding
CsmElement:sequence
CsmElement:space
CsmElement:prettyPrint
CsmElement:charToken
CsmElement:orphanCommentsBeforeThis
CsmElement:conditional
CsmElement:indent
CsmElement:block
CsmElement:child
CsmElement:unindent
CsmElement:list
CsmElement:none
CsmElement:newline
CsmElement:comma
CsmElement:textBlockToken
CsmElement:comment
CsmElement:string
CsmElement:attribute
CsmElement:semicolon
Members
X