11package com .hubspot .jinjava .lib .tag .eager ;
22
33import com .google .common .annotations .Beta ;
4+ import com .google .common .base .Strings ;
45import com .hubspot .jinjava .interpret .CallStack ;
56import com .hubspot .jinjava .interpret .Context ;
67import com .hubspot .jinjava .interpret .DeferredLazyReference ;
1314import com .hubspot .jinjava .tree .parse .TokenScannerSymbols ;
1415import com .hubspot .jinjava .util .EagerExpressionResolver ;
1516import java .lang .reflect .InvocationTargetException ;
17+ import java .util .Arrays ;
1618import java .util .Collection ;
1719import java .util .Collections ;
1820import java .util .HashSet ;
21+ import java .util .List ;
1922import java .util .Map .Entry ;
2023import java .util .Set ;
2124import java .util .stream .Collectors ;
@@ -40,7 +43,8 @@ public DeferredToken build() {
4043 token ,
4144 usedDeferredWords != null
4245 ? usedDeferredWords
43- .map (prop -> prop .split ("\\ ." , 2 )[0 ])
46+ .map (DeferredToken ::splitToken )
47+ .map (DeferredToken ::getFirstNonEmptyToken )
4448 .distinct ()
4549 .filter (word ->
4650 interpreter == null ||
@@ -50,7 +54,8 @@ public DeferredToken build() {
5054 : Collections .emptySet (),
5155 setDeferredWords != null
5256 ? setDeferredWords
53- .map (prop -> prop .split ("\\ ." , 2 )[0 ])
57+ .map (DeferredToken ::splitToken )
58+ .map (DeferredToken ::getFirstNonEmptyToken )
5459 .collect (Collectors .toSet ())
5560 : Collections .emptySet (),
5661 acquireImportResourcePath (),
@@ -413,10 +418,19 @@ private static CallStack acquireMacroStack() {
413418 .orElse (null );
414419 }
415420
421+ private static String getFirstNonEmptyToken (List <String > strings ) {
422+ return Strings .isNullOrEmpty (strings .get (0 )) ? strings .get (1 ) : strings .get (0 );
423+ }
424+
425+ public static List <String > splitToken (String token ) {
426+ return Arrays .asList (token .split ("\\ ." ));
427+ }
428+
416429 public static Set <String > getBases (Set <String > original ) {
417430 return original
418431 .stream ()
419- .map (prop -> prop .split ("\\ ." , 2 )[0 ])
432+ .map (DeferredToken ::splitToken )
433+ .map (prop -> prop .get (0 ))
420434 .collect (Collectors .toSet ());
421435 }
422436}
0 commit comments