TemplatePath.java
package org.freshmarker.file;
import org.freshmarker.core.ProcessContext;
import org.freshmarker.core.ProcessException;
import org.freshmarker.core.model.DotHashAddressable;
import org.freshmarker.core.model.TemplateNull;
import org.freshmarker.core.model.TemplateObject;
import org.freshmarker.core.model.primitive.TemplateNumber;
import org.freshmarker.core.model.primitive.TemplatePrimitive;
import org.freshmarker.core.model.primitive.TemplateString;
import java.io.File;
import java.nio.file.Path;
public class TemplatePath extends TemplatePrimitive<Path> implements DotHashAddressable {
public TemplatePath(Path value) {
super(value);
}
@Override
public TemplateObject get(ProcessContext context, String name) {
return switch (name) {
case "size" -> new TemplateNumber(getValue().toFile().length());
case "name" -> new TemplateString(getValue().getFileName().toString());
case "parent" -> create(getValue().getParent());
default -> throw new ProcessException("unsupported attribute: " + name);
};
}
private TemplateObject create(Path path) {
return path == null ? TemplateNull.NULL : new TemplatePath(path);
}
}