@@ -19,22 +19,25 @@ class JavadocParser {
19
19
private static final int PARAM_DESC = 7 ;
20
20
private static final int RETURN_DESC = 8 ;
21
21
private static final int IGNORE = 9 ;
22
+ private static final int CODE = 10 ;
22
23
private static final String DEPRECATED = "deprecated" ;
23
24
24
25
private int previousState = TEXT ;
25
26
26
- private StringBuilder currentParam = new StringBuilder ();
27
- private StringBuilder currentDoclet = new StringBuilder ();
27
+ private final StringBuilder currentParam = new StringBuilder ();
28
+ private final StringBuilder currentDoclet = new StringBuilder ();
28
29
private StringBuilder currentContent ;
29
30
30
31
private int state = TEXT ;
31
32
32
33
private String returnDesc = "" ;
33
34
34
- private Map <String , String > params = new LinkedHashMap <>();
35
+ private final Map <String , String > params = new LinkedHashMap <>();
35
36
36
37
private boolean deprecated ;
37
38
39
+ private boolean hasReturn ;
40
+
38
41
/**
39
42
* Parse the javadoc.
40
43
*/
@@ -48,6 +51,7 @@ Javadoc parse(String text) {
48
51
currentContent = mainContent ;
49
52
50
53
for (char c : text .toCharArray ()) {
54
+
51
55
switch (state ) {
52
56
case RETURN_DESC :
53
57
if (c == '\n' ) {
@@ -57,6 +61,11 @@ Javadoc parse(String text) {
57
61
if (state == PARAM_DESC ) {
58
62
processSetParam ();
59
63
}
64
+ case CODE :
65
+ if (state == CODE && c == '}' ) {
66
+ state = previousState ;
67
+ break ;
68
+ }
60
69
case TEXT :
61
70
processText (c );
62
71
continue ;
@@ -77,32 +86,44 @@ Javadoc parse(String text) {
77
86
}
78
87
}
79
88
80
- if (state == RETURN_DESC ) {
81
- returnDesc = currentContent .toString ();
89
+ if (hasReturn ) {
90
+ returnDesc = mergeLines ( currentContent .toString () );
82
91
}
83
92
84
93
return splitMain (mainContent .toString ().trim ());
85
94
}
86
95
87
96
private void processSetParam () {
88
- params .put (currentParam .toString (), currentContent .toString ().trim ());
97
+ params .put (currentParam .toString (), mergeLines ( currentContent .toString ().trim () ));
89
98
}
90
99
91
100
private void processReturnDesc (StringBuilder mainContent ) {
92
101
state = TEXT ;
93
102
previousState = TEXT ;
94
103
returnDesc = currentContent .toString ();
95
- currentContent = mainContent ;
104
+ currentContent = new StringBuilder ( returnDesc ) ;
96
105
}
97
106
98
107
private void processText (char c ) {
99
- if (c == '{' || c == '@' ) {
100
- currentDoclet .delete (0 , currentDoclet .length ());
101
- state = DOCLET_START ;
102
- } else if (c == '<' ) {
103
- state = TAG_START ;
104
- } else if (c != '}' && c != '>' ) {
105
- currentContent .append (c );
108
+ switch (c ) {
109
+ case '{' :
110
+ case '@' :
111
+ currentDoclet .delete (0 , currentDoclet .length ());
112
+ state = DOCLET_START ;
113
+ break ;
114
+ case '<' :
115
+ state = TAG_START ;
116
+ break ;
117
+ case '\n' :
118
+ if (state == CODE ) {
119
+ currentContent .append ("\\ n" );
120
+ return ;
121
+ }
122
+ default :
123
+ if (c != '}' && c != '>' ) {
124
+ currentContent .append (c );
125
+ }
126
+ break ;
106
127
}
107
128
}
108
129
@@ -132,23 +153,22 @@ private void processDocletStart(char c) {
132
153
deprecated = true ;
133
154
}
134
155
state = IGNORE ;
135
- } else {
136
- if ( docletName . equals ( "param" )) {
137
- currentParam . delete ( 0 , currentParam . length ()) ;
138
- state = PARAM_NAME ;
139
- }
140
- if ( docletName . equals ( "return" )) {
141
- currentContent = new StringBuilder () ;
142
- state = RETURN_DESC ;
143
- previousState = RETURN_DESC ;
144
- }
156
+ } else if ( "param" . equals ( docletName )) {
157
+ currentParam . delete ( 0 , currentParam . length ());
158
+ state = PARAM_NAME ;
159
+ } else if ( "return" . equals ( docletName )) {
160
+ currentContent = new StringBuilder ();
161
+ state = RETURN_DESC ;
162
+ previousState = RETURN_DESC ;
163
+ hasReturn = true ;
164
+ } else if ( "@code" . equals ( docletName )) {
165
+ state = CODE ;
145
166
}
146
167
} else {
147
168
currentDoclet .append (c );
148
169
}
149
170
}
150
171
151
-
152
172
private Javadoc splitMain (String mainText ) {
153
173
154
174
String desc = "" ;
0 commit comments