1
1
import Exception from '../exception' ;
2
2
3
+ function validateClose ( open , close ) {
4
+ close = close . path ? close . path . original : close ;
5
+
6
+ if ( open . path . original !== close ) {
7
+ let errorNode = { loc : open . path . loc } ;
8
+
9
+ throw new Exception ( open . path . original + " doesn't match " + close , errorNode ) ;
10
+ }
11
+ }
12
+
3
13
export function SourceLocation ( source , locInfo ) {
4
14
this . source = source ;
5
15
this . start = {
@@ -71,11 +81,7 @@ export function prepareMustache(path, params, hash, open, strip, locInfo) {
71
81
}
72
82
73
83
export function prepareRawBlock ( openRawBlock , contents , close , locInfo ) {
74
- if ( openRawBlock . path . original !== close ) {
75
- let errorNode = { loc : openRawBlock . path . loc } ;
76
-
77
- throw new Exception ( openRawBlock . path . original + " doesn't match " + close , errorNode ) ;
78
- }
84
+ validateClose ( openRawBlock , close ) ;
79
85
80
86
locInfo = this . locInfo ( locInfo ) ;
81
87
let program = new this . Program ( contents , null , { } , locInfo ) ;
@@ -88,11 +94,8 @@ export function prepareRawBlock(openRawBlock, contents, close, locInfo) {
88
94
}
89
95
90
96
export function prepareBlock ( openBlock , program , inverseAndProgram , close , inverted , locInfo ) {
91
- // When we are chaining inverse calls, we will not have a close path
92
- if ( close && close . path && openBlock . path . original !== close . path . original ) {
93
- let errorNode = { loc : openBlock . path . loc } ;
94
-
95
- throw new Exception ( openBlock . path . original + ' doesn\'t match ' + close . path . original , errorNode ) ;
97
+ if ( close && close . path ) {
98
+ validateClose ( openBlock , close ) ;
96
99
}
97
100
98
101
program . blockParams = openBlock . blockParams ;
@@ -147,17 +150,13 @@ export function prepareProgram(statements, loc) {
147
150
}
148
151
149
152
150
- export function preparePartialBlock ( openPartialBlock , program , close , locInfo ) {
151
- if ( openPartialBlock . name . original !== close . path . original ) {
152
- let errorNode = { loc : openPartialBlock . name . loc } ;
153
-
154
- throw new Exception ( openPartialBlock . name . original + " doesn't match " + close . path . original , errorNode ) ;
155
- }
153
+ export function preparePartialBlock ( open , program , close , locInfo ) {
154
+ validateClose ( open , close ) ;
156
155
157
156
return new this . PartialBlockStatement (
158
- openPartialBlock . name , openPartialBlock . params , openPartialBlock . hash ,
157
+ open . path , open . params , open . hash ,
159
158
program ,
160
- openPartialBlock . strip , close && close . strip ,
159
+ open . strip , close && close . strip ,
161
160
this . locInfo ( locInfo ) ) ;
162
161
}
163
162
0 commit comments