package org.jtwig.property.resolver;
import com.google.common.base.Optional;
import org.jtwig.macro.ImportedMacros;
import org.jtwig.macro.Macro;
import org.jtwig.macro.render.MacroRender;
import org.jtwig.property.resolver.request.PropertyResolveRequest;
import org.jtwig.reflection.model.Value;
public class MacroPropertyResolver implements PropertyResolver {
private final MacroRender macroRender;
private final ImportedMacros macro;
public MacroPropertyResolver(MacroRender macroRender, ImportedMacros macro) {
this.macroRender = macroRender;
this.macro = macro;
}
@Override
public Optional<Value> resolve(PropertyResolveRequest request) {
Optional<Macro> resolve = macro.resolve(request.getPropertyName().get());
if (!resolve.isPresent()) return Optional.absent();
return Optional.of(new Value(macroRender.render(request, request.getArguments(), resolve.get())));
}
}