52 lines
2.1 KiB
Java
52 lines
2.1 KiB
Java
package com.utopiaindustries.dialect;
|
|
|
|
import com.utopiaindustries.util.TimePeriodFormatter;
|
|
import org.thymeleaf.IEngineConfiguration;
|
|
import org.thymeleaf.context.ITemplateContext;
|
|
import org.thymeleaf.engine.AttributeName;
|
|
import org.thymeleaf.model.IProcessableElementTag;
|
|
import org.thymeleaf.processor.element.AbstractAttributeTagProcessor;
|
|
import org.thymeleaf.processor.element.IElementTagStructureHandler;
|
|
import org.thymeleaf.standard.expression.IStandardExpression;
|
|
import org.thymeleaf.standard.expression.IStandardExpressionParser;
|
|
import org.thymeleaf.standard.expression.StandardExpressions;
|
|
import org.thymeleaf.templatemode.TemplateMode;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
public class FormatTimePeriodHumanReadableBetween extends AbstractAttributeTagProcessor {
|
|
private static final String ATTR_NAME = "humanreadableperiodbetween";
|
|
private static final int PRECEDENCE = 100000;
|
|
|
|
public FormatTimePeriodHumanReadableBetween( final String dialectPrefix ) {
|
|
super(
|
|
TemplateMode.HTML,
|
|
dialectPrefix,
|
|
null,
|
|
false,
|
|
ATTR_NAME,
|
|
true,
|
|
PRECEDENCE,
|
|
true
|
|
);
|
|
}
|
|
|
|
protected void doProcess( ITemplateContext iTemplateContext, IProcessableElementTag iProcessableElementTag, AttributeName attributeName, String attributeValue, IElementTagStructureHandler iElementTagStructureHandler ) {
|
|
final IEngineConfiguration configuration = iTemplateContext.getConfiguration();
|
|
final IStandardExpressionParser parser = StandardExpressions.getExpressionParser( configuration );
|
|
final IStandardExpression expression = parser.parseExpression( iTemplateContext, attributeValue );
|
|
final String attributeValueParsed = ( String ) expression.execute( iTemplateContext );
|
|
// get arguments from comma separated list
|
|
String[] args = attributeValueParsed.split( "," );
|
|
LocalDateTime from = LocalDateTime.parse( args[0] );
|
|
LocalDateTime to = LocalDateTime.parse( args[1] );
|
|
// formatted time period
|
|
String formattedPeriod = ( new TimePeriodFormatter() )
|
|
.from( from )
|
|
.to( to )
|
|
.format();
|
|
// render the body
|
|
iElementTagStructureHandler.setBody( formattedPeriod, false );
|
|
}
|
|
}
|