99import com .hubspot .jinjava .lib .fn .eager .EagerMacroFunction ;
1010import com .hubspot .jinjava .lib .tag .DoTag ;
1111import com .hubspot .jinjava .lib .tag .FromTag ;
12- import com .hubspot .jinjava .loader . RelativePathResolver ;
12+ import com .hubspot .jinjava .lib . tag . eager . importing . EagerImportingStrategyFactory ;
1313import com .hubspot .jinjava .tree .Node ;
1414import com .hubspot .jinjava .tree .parse .TagToken ;
1515import com .hubspot .jinjava .util .EagerReconstructionUtils ;
16+ import com .hubspot .jinjava .util .PrefixToPreserveState ;
1617import java .io .IOException ;
1718import java .util .List ;
1819import java .util .Map ;
1920import java .util .Map .Entry ;
2021import java .util .Optional ;
2122import java .util .stream .Collectors ;
23+ import java .util .stream .Stream ;
2224
2325@ Beta
2426public class EagerFromTag extends EagerStateChangingTag <FromTag > {
@@ -33,6 +35,9 @@ public EagerFromTag(FromTag fromTag) {
3335
3436 @ Override
3537 public String getEagerTagImage (TagToken tagToken , JinjavaInterpreter interpreter ) {
38+ String initialPathSetter = EagerImportingStrategyFactory .getSetTagForCurrentPath (
39+ interpreter
40+ );
3641 List <String > helper = FromTag .getHelpers (tagToken );
3742 Map <String , String > imports = FromTag .getImportMap (helper );
3843 Optional <String > maybeTemplateFile ;
@@ -55,10 +60,17 @@ public String getEagerTagImage(TagToken tagToken, JinjavaInterpreter interpreter
5560 interpreter .getContext ().addGlobalMacro (deferredMacro );
5661 });
5762 return (
58- EagerReconstructionUtils .buildBlockOrInlineSetTag (
59- RelativePathResolver .CURRENT_PATH_CONTEXT_KEY ,
60- interpreter .getContext ().get (RelativePathResolver .CURRENT_PATH_CONTEXT_KEY ),
61- interpreter
63+ initialPathSetter +
64+ new PrefixToPreserveState (
65+ EagerReconstructionUtils .handleDeferredTokenAndReconstructReferences (
66+ interpreter ,
67+ DeferredToken
68+ .builderFromToken (tagToken )
69+ .addUsedDeferredWords (Stream .of (helper .get (0 )))
70+ .addUsedDeferredWords (imports .keySet ())
71+ .addSetDeferredWords (imports .values ())
72+ .build ()
73+ )
6274 ) +
6375 tagToken .getImage ()
6476 );
0 commit comments