18
18
package com .github .jknack .handlebars .internal ;
19
19
20
20
import java .io .IOException ;
21
- import java .io .Reader ;
22
21
23
22
import org .antlr .v4 .runtime .ANTLRErrorListener ;
24
23
import org .antlr .v4 .runtime .ANTLRInputStream ;
47
46
*/
48
47
public class HbsParserFactory implements ParserFactory {
49
48
50
-
51
49
/**
52
50
* The logging system.
53
51
*/
@@ -69,55 +67,47 @@ public Parser create(final Handlebars handlebars,
69
67
70
68
@ Override
71
69
public Template parse (final TemplateSource source ) throws IOException {
72
- Reader reader = null ;
73
- try {
74
- logger .debug ("About to parse: {}" , source );
75
- final ANTLRErrorListener errorReporter = new HbsErrorReporter (source .filename ());
76
-
77
- reader = source .reader ();
78
- // 1. Lexer
79
- final HbsLexer lexer = newLexer (newStream (source .filename (), reader ),
80
- startDelimiter , endDelimiter );
81
- configure (lexer , errorReporter );
82
-
83
- // 2. Parser
84
- final HbsParser parser = newParser (lexer );
85
- configure (parser , errorReporter );
86
-
87
- logger .debug ("Building AST" );
88
- // 3. Parse
89
- ParseTree tree = parser .template ();
90
-
91
- // remove unnecessary spaces and new lines?
92
- if (handlebars .prettyPrint ()) {
93
- logger .debug ("Applying Mustache spec" );
94
- new ParseTreeWalker ().walk (new MustacheSpec (), tree );
95
- }
70
+ logger .debug ("About to parse: {}" , source );
71
+ final ANTLRErrorListener errorReporter = new HbsErrorReporter (source .filename ());
72
+
73
+ // 1. Lexer
74
+ final HbsLexer lexer = newLexer (newStream (source .filename (), source .content ()),
75
+ startDelimiter , endDelimiter );
76
+ configure (lexer , errorReporter );
77
+
78
+ // 2. Parser
79
+ final HbsParser parser = newParser (lexer );
80
+ configure (parser , errorReporter );
81
+
82
+ logger .debug ("Building AST" );
83
+ // 3. Parse
84
+ ParseTree tree = parser .template ();
85
+
86
+ // remove unnecessary spaces and new lines?
87
+ if (handlebars .prettyPrint ()) {
88
+ logger .debug ("Applying Mustache spec" );
89
+ new ParseTreeWalker ().walk (new MustacheSpec (), tree );
90
+ }
96
91
97
- if (lexer .whiteSpaceControl ) {
98
- logger .debug ("Applying white spaces control" );
99
- new ParseTreeWalker ().walk (new WhiteSpaceControl (), tree );
100
- }
92
+ if (lexer .whiteSpaceControl ) {
93
+ logger .debug ("Applying white spaces control" );
94
+ new ParseTreeWalker ().walk (new WhiteSpaceControl (), tree );
95
+ }
101
96
102
- /**
103
- * Build the AST.
104
- */
105
- TemplateBuilder builder = new TemplateBuilder (handlebars , source ) {
106
- @ Override
107
- protected void reportError (final CommonToken offendingToken , final int line ,
108
- final int column ,
109
- final String message ) {
110
- errorReporter .syntaxError (parser , offendingToken , line , column , message , null );
111
- }
112
- };
113
- logger .debug ("Creating templates" );
114
- Template template = builder .visit (tree );
115
- return template ;
116
- } finally {
117
- if (reader != null ) {
118
- reader .close ();
97
+ /**
98
+ * Build the AST.
99
+ */
100
+ TemplateBuilder builder = new TemplateBuilder (handlebars , source ) {
101
+ @ Override
102
+ protected void reportError (final CommonToken offendingToken , final int line ,
103
+ final int column ,
104
+ final String message ) {
105
+ errorReporter .syntaxError (parser , offendingToken , line , column , message , null );
119
106
}
120
- }
107
+ };
108
+ logger .debug ("Creating templates" );
109
+ Template template = builder .visit (tree );
110
+ return template ;
121
111
}
122
112
123
113
};
@@ -127,13 +117,13 @@ protected void reportError(final CommonToken offendingToken, final int line,
127
117
* Creates a new {@link ANTLRInputStream}.
128
118
*
129
119
* @param filename The file's name.
130
- * @param reader A reader .
120
+ * @param content A content .
131
121
* @return A new {@link ANTLRInputStream}.
132
122
* @throws IOException If the reader can't be open.
133
123
*/
134
- private ANTLRInputStream newStream (final String filename , final Reader reader )
124
+ private ANTLRInputStream newStream (final String filename , final String content )
135
125
throws IOException {
136
- ANTLRInputStream stream = new ANTLRInputStream (reader );
126
+ ANTLRInputStream stream = new ANTLRInputStream (content );
137
127
stream .name = filename ;
138
128
return stream ;
139
129
}
0 commit comments