@@ -28,7 +28,7 @@ public class LinkReferenceDefinitionParser {
2828
2929 private StringBuilder label ;
3030 private String destination ;
31- private char titleDelimiter ;
31+ private TitleDelimiter titleDelimiter ;
3232 private StringBuilder title ;
3333 private boolean referenceValid = false ;
3434
@@ -205,35 +205,26 @@ private boolean startTitle(Scanner scanner) {
205205 return true ;
206206 }
207207
208- titleDelimiter = '\0' ;
209208 char c = scanner .peek ();
210- switch (c ) {
211- case '"' :
212- case '\'' :
213- titleDelimiter = c ;
214- break ;
215- case '(' :
216- titleDelimiter = ')' ;
217- break ;
218- }
209+ titleDelimiter = TitleDelimiter .fromOpeningChar (c );
219210
220- if (titleDelimiter != '\0' ) {
211+ if (titleDelimiter != null ) {
221212 state = State .TITLE ;
222213 title = new StringBuilder ();
223214 scanner .next ();
224215 if (!scanner .hasNext ()) {
225216 title .append ('\n' );
226217 }
227218 } else {
228- // There might be another reference instead, try that for the same character.
219+
229220 state = State .START_DEFINITION ;
230221 }
231222 return true ;
232223 }
233224
234225 private boolean title (Scanner scanner ) {
235226 Position start = scanner .position ();
236- if (!LinkScanner .scanLinkTitleContent (scanner , titleDelimiter )) {
227+ if (!LinkScanner .scanLinkTitleContent (scanner , titleDelimiter . getClosingChar () )) {
237228 // Invalid title, stop. Title collected so far must not be used.
238229 title = null ;
239230 return false ;
@@ -307,4 +298,32 @@ enum State {
307298 // End state, no matter what kind of lines we add, they won't be references
308299 PARAGRAPH ,
309300 }
301+ private enum TitleDelimiter {
302+ DOUBLE_QUOTE ('"' ),
303+ SINGLE_QUOTE ('\'' ),
304+ PARENTHESIS (')' );
305+
306+ private final char closingChar ;
307+
308+ TitleDelimiter (char closingChar ) {
309+ this .closingChar = closingChar ;
310+ }
311+
312+ public char getClosingChar () {
313+ return closingChar ;
314+ }
315+
316+ public static TitleDelimiter fromOpeningChar (char c ) {
317+ switch (c ) {
318+ case '"' :
319+ return DOUBLE_QUOTE ;
320+ case '\'' :
321+ return SINGLE_QUOTE ;
322+ case '(' :
323+ return PARENTHESIS ;
324+ default :
325+ return null ;
326+ }
327+ }
328+ }
310329}
0 commit comments