зеркало из https://github.com/mozilla/gecko-dev.git
Implement format-number() and <xsl:decimal-format>
b=65983 r=Pike sr=jst
This commit is contained in:
Родитель
009fdc44d4
Коммит
22667910ed
|
@ -116,8 +116,9 @@ OBJS =../base/ArrayList.$(OBJ_SUFFIX) \
|
|||
../xslt/functions/ElementAvailableFnCall.$(OBJ_SUFFIX) \
|
||||
../xslt/functions/FunctionAvailableFnCall.$(OBJ_SUFFIX) \
|
||||
../xslt/functions/GenerateIdFunctionCall.$(OBJ_SUFFIX) \
|
||||
../xslt/functions/txKeyFunctionCall.$(OBJ_SUFFIX) \
|
||||
../xslt/functions/SystemPropertyFunctionCall.$(OBJ_SUFFIX) \
|
||||
../xslt/functions/txFormatNumberFunctionCall.$(OBJ_SUFFIX) \
|
||||
../xslt/functions/txKeyFunctionCall.$(OBJ_SUFFIX) \
|
||||
../xslt/util/NodeStack.$(OBJ_SUFFIX) \
|
||||
../xslt/util/txNodeSorter.$(OBJ_SUFFIX) \
|
||||
../xslt/util/txXPathResultComparator.$(OBJ_SUFFIX) \
|
||||
|
|
|
@ -152,6 +152,7 @@ class FunctionCall : public Expr {
|
|||
public:
|
||||
|
||||
static const String INVALID_PARAM_COUNT;
|
||||
static const String INVALID_PARAM_VALUE;
|
||||
|
||||
virtual ~FunctionCall();
|
||||
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
const String FunctionCall::INVALID_PARAM_COUNT =
|
||||
"invalid number of parameters for function: ";
|
||||
|
||||
const String FunctionCall::INVALID_PARAM_VALUE =
|
||||
"invalid parameter value for function: ";
|
||||
|
||||
//- Constructors -/
|
||||
|
||||
/**
|
||||
|
|
|
@ -90,6 +90,7 @@ ExprResult* ElementAvailableFunctionCall::evaluate(Node* context, ContextState*
|
|||
localName.isEqual(COMMENT) ||
|
||||
localName.isEqual(COPY) ||
|
||||
localName.isEqual(COPY_OF) ||
|
||||
localName.isEqual(DECIMAL_FORMAT) ||
|
||||
localName.isEqual(ELEMENT) ||
|
||||
localName.isEqual(FOR_EACH) ||
|
||||
localName.isEqual(IF) ||
|
||||
|
|
|
@ -106,7 +106,7 @@ ExprResult* FunctionAvailableFunctionCall::evaluate(Node* context, ContextState*
|
|||
property.isEqual(XPathNames::FLOOR_FN) ||
|
||||
property.isEqual(DOCUMENT_FN) ||
|
||||
property.isEqual(KEY_FN) ||
|
||||
// property.isEqual(FORMAT_NUMBER_FN) ||
|
||||
property.isEqual(FORMAT_NUMBER_FN) ||
|
||||
property.isEqual(CURRENT_FN) ||
|
||||
// property.isEqual(UNPARSED_ENTITY_URI_FN) ||
|
||||
property.isEqual(GENERATE_ID_FN) ||
|
||||
|
|
|
@ -182,26 +182,65 @@ private:
|
|||
/**
|
||||
* The definition for the XSLT format-number() function
|
||||
**/
|
||||
class FormatNumberFunctionCall : public FunctionCall {
|
||||
class txFormatNumberFunctionCall : public FunctionCall {
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Creates a new format-number() function call
|
||||
**/
|
||||
FormatNumberFunctionCall();
|
||||
txFormatNumberFunctionCall(ProcessorState* aPs);
|
||||
|
||||
/**
|
||||
* Evaluates this Expr based on the given context node and processor state
|
||||
* @param context the context node for evaluation of this Expr
|
||||
* @param cs the ContextState containing the stack information needed
|
||||
* @param aContext the context node for evaluation of this Expr
|
||||
* @param aCs the ContextState containing the stack information needed
|
||||
* for evaluation
|
||||
* @return the result of the evaluation
|
||||
* @see FunctionCall.h
|
||||
**/
|
||||
virtual ExprResult* evaluate(Node* context, ContextState* cs);
|
||||
virtual ExprResult* evaluate(Node* aContext, ContextState* aCs);
|
||||
|
||||
private:
|
||||
static const UNICODE_CHAR FORMAT_QUOTE;
|
||||
|
||||
enum FormatParseState {
|
||||
Prefix,
|
||||
IntDigit,
|
||||
IntZero,
|
||||
FracZero,
|
||||
FracDigit,
|
||||
Suffix,
|
||||
Finished
|
||||
};
|
||||
|
||||
ProcessorState* mPs;
|
||||
};
|
||||
|
||||
/**
|
||||
* DecimalFormat
|
||||
* A representation of the XSLT element <xsl:decimal-format>
|
||||
*/
|
||||
class txDecimalFormat : public TxObject {
|
||||
|
||||
public:
|
||||
/*
|
||||
* Creates a new decimal format and initilizes all properties with
|
||||
* default values
|
||||
*/
|
||||
txDecimalFormat();
|
||||
MBool isEqual(txDecimalFormat* other);
|
||||
|
||||
UNICODE_CHAR mDecimalSeparator;
|
||||
UNICODE_CHAR mGroupingSeparator;
|
||||
String mInfinity;
|
||||
UNICODE_CHAR mMinusSign;
|
||||
String mNaN;
|
||||
UNICODE_CHAR mPercent;
|
||||
UNICODE_CHAR mPerMille;
|
||||
UNICODE_CHAR mZeroDigit;
|
||||
UNICODE_CHAR mDigit;
|
||||
UNICODE_CHAR mPatternSeparator;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче