// $Id: ExprNumberAction.java 99 2005-02-28 21:37:53Z blindsey $

package com.jclark.xsl.tr;

import com.jclark.xsl.om.*;
import com.jclark.xsl.expr.NumberExpr;
import com.jclark.xsl.conv.NumberListFormat;

/**
 *
 */
class ExprNumberAction implements Action
{
    private NumberExpr expr;
    private NumberListFormatTemplate formatTemplate;

    ExprNumberAction(NumberExpr expr, NumberListFormatTemplate formatTemplate)
    {
        this.expr = expr;
        this.formatTemplate = formatTemplate;
    }

    public void invoke(ProcessContext context, Node node, Result result) 
        throws XSLException
    {
        NumberListFormat format = formatTemplate.instantiate(context, node);
        result.characters(format.getPrefix(0));
        result.characters(format.formatNumber(0,
                                              Math.round((float)expr.eval(node, context))));
        result.characters(format.getSuffix());
    }
}
