/* cFormulaOperators is container for holding all ECMA-376 operators, see chapter $18.17.2.2 in "ECMA-376, Second Edition, Part 1 - Fundamentals And Markup Language Reference" */
/* cFormulaOperators is container for holding all ECMA-376 operators, see chapter $18.17.2.2 in "ECMA-376, Second Edition, Part 1 - Fundamentals And Markup Language Reference" */
varcFormulaOperators={
varcFormulaOperators={
'(':parentLeft,
'(':parentLeft,
')':parentRight,
')':parentRight,
'{':function(){
'{':function(){
varr={};
varr={};
r.name='{';
r.name='{';
r.toString=function(){
r.toString=function(){
returnthis.name;
returnthis.name;
};
};
returnr;
returnr;
},
},
'}':function(){
'}':function(){
varr={};
varr={};
r.name='}';
r.name='}';
r.toString=function(){
r.toString=function(){
returnthis.name;
returnthis.name;
};
};
returnr;
returnr;
},/* 50 is highest priority */
},/* 50 is highest priority */
':':cRangeUnionOperator,
':':cRangeUnionOperator,
'':cRangeIntersectionOperator,
'':cRangeIntersectionOperator,
'un_minus':cUnarMinusOperator,
'un_minus':cUnarMinusOperator,
'un_plus':cUnarPlusOperator,
'un_plus':cUnarPlusOperator,
'%':cPercentOperator,
'%':cPercentOperator,
'^':cPowOperator,
'^':cPowOperator,
'*':cMultOperator,
'*':cMultOperator,
'/':cDivOperator,
'/':cDivOperator,
'+':cAddOperator,
'+':cAddOperator,
'-':cMinusOperator,
'-':cMinusOperator,
'&':cConcatSTROperator/*concat str*/,
'&':cConcatSTROperator/*concat str*/,
'=':cEqualsOperator/*equals*/,
'=':cEqualsOperator/*equals*/,
'<>':cNotEqualsOperator,
'<>':cNotEqualsOperator,
'<':cLessOperator,
'<':cLessOperator,
'<=':cLessOrEqualOperator,
'<=':cLessOrEqualOperator,
'>':cGreaterOperator,
'>':cGreaterOperator,
'>=':cGreaterOrEqualOperator
'>=':cGreaterOrEqualOperator
/* 10 is lowest priopity */
/* 10 is lowest priopity */
};
};
/* cFormulaFunctionGroup is container for holding all ECMA-376 function, see chapter $18.17.7 in "ECMA-376, Second Edition, Part 1 - Fundamentals And Markup Language Reference" */
/* cFormulaFunctionGroup is container for holding all ECMA-376 function, see chapter $18.17.7 in "ECMA-376, Second Edition, Part 1 - Fundamentals And Markup Language Reference" */
/*
/*
Каждая формула представляет собой копию функции cBaseFunction.
Каждая формула представляет собой копию функции cBaseFunction.
Для реализации очередной функции необходимо указать количество (минимальное и максимальное) принимаемых аргументов. Берем в спецификации.
Для реализации очередной функции необходимо указать количество (минимальное и максимальное) принимаемых аргументов. Берем в спецификации.
Также необходино написать реализацию методов Calculate и getInfo(возвращает название функции и вид/количетво аргументов).
Также необходино написать реализацию методов Calculate и getInfo(возвращает название функции и вид/количетво аргументов).
В методе Calculate необходимо отслеживать тип принимаемых аргументов. Для примера, если мы обращаемся к ячейке A1, в которой лежит 123, то этот аргумент будет числом. Если же там лежит "123", то это уже строка. Для более подробной информации смотреть спецификацию.
В методе Calculate необходимо отслеживать тип принимаемых аргументов. Для примера, если мы обращаемся к ячейке A1, в которой лежит 123, то этот аргумент будет числом. Если же там лежит "123", то это уже строка. Для более подробной информации смотреть спецификацию.
Метод getInfo является обязательным, ибо через этот метод в интерфейс передается информация о реализованных функциях.
Метод getInfo является обязательным, ибо через этот метод в интерфейс передается информация о реализованных функциях.