2020import java .io .IOException ;
2121
2222import org .antlr .v4 .runtime .ANTLRErrorListener ;
23- import org .antlr .v4 .runtime .ANTLRInputStream ;
23+ import org .antlr .v4 .runtime .CharStream ;
24+ import org .antlr .v4 .runtime .CharStreams ;
2425import org .antlr .v4 .runtime .CommonToken ;
2526import org .antlr .v4 .runtime .CommonTokenStream ;
2627import org .antlr .v4 .runtime .LexerNoViableAltException ;
@@ -68,11 +69,12 @@ public Parser create(final Handlebars handlebars,
6869 @ Override
6970 public Template parse (final TemplateSource source ) throws IOException {
7071 logger .debug ("About to parse: {}" , source );
71- final ANTLRErrorListener errorReporter = new HbsErrorReporter (source .filename ());
72+ String sourceName = source .filename ();
73+ final ANTLRErrorListener errorReporter = new HbsErrorReporter (sourceName );
7274
7375 // 1. Lexer
74- final HbsLexer lexer = newLexer ( newStream ( source .filename (),
75- source . content ( handlebars . getCharset ()) ), startDelimiter , endDelimiter );
76+ String content = source .content ( handlebars . getCharset ());
77+ final HbsLexer lexer = newLexer ( CharStreams . fromString ( content , sourceName ), startDelimiter , endDelimiter );
7678 configure (lexer , errorReporter );
7779
7880 // 2. Parser
@@ -97,7 +99,7 @@ public Template parse(final TemplateSource source) throws IOException {
9799 /**
98100 * Build the AST.
99101 */
100- TemplateBuilder < Template > builder = new TemplateBuilder < Template > (handlebars , source ) {
102+ TemplateBuilder builder = new TemplateBuilder (handlebars , source ) {
101103 @ Override
102104 protected void reportError (final CommonToken offendingToken , final int line ,
103105 final int column ,
@@ -113,21 +115,6 @@ protected void reportError(final CommonToken offendingToken, final int line,
113115 };
114116 }
115117
116- /**
117- * Creates a new {@link ANTLRInputStream}.
118- *
119- * @param filename The file's name.
120- * @param content A content.
121- * @return A new {@link ANTLRInputStream}.
122- * @throws IOException If the reader can't be open.
123- */
124- private ANTLRInputStream newStream (final String filename , final String content )
125- throws IOException {
126- ANTLRInputStream stream = new ANTLRInputStream (content );
127- stream .name = filename ;
128- return stream ;
129- }
130-
131118 /**
132119 * Creates a new {@link HbsLexer}.
133120 *
@@ -136,7 +123,7 @@ private ANTLRInputStream newStream(final String filename, final String content)
136123 * @param endDelimiter The end delimiter.
137124 * @return A new {@link HbsLexer}.
138125 */
139- private HbsLexer newLexer (final ANTLRInputStream stream , final String startDelimiter ,
126+ private HbsLexer newLexer (final CharStream stream , final String startDelimiter ,
140127 final String endDelimiter ) {
141128 return new HbsLexer (stream , startDelimiter , endDelimiter ) {
142129
0 commit comments