/* 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={
'(':parentLeft,
')':parentRight,
'{':function(){
varr={};
r.name='{';
r.toString=function(){
returnthis.name;
};
returnr;
},
'}':function(){
varr={};
r.name='}';
r.toString=function(){
returnthis.name;
};
returnr;
},/* 50 is highest priority */
':':cRangeUnionOperator,
'':cRangeIntersectionOperator,
'un_minus':cUnarMinusOperator,
'un_plus':cUnarPlusOperator,
'%':cPercentOperator,
'^':cPowOperator,
'*':cMultOperator,
'/':cDivOperator,
'+':cAddOperator,
'-':cMinusOperator,
'&':cConcatSTROperator/*concat str*/,
'=':cEqualsOperator/*equals*/,
'<>':cNotEqualsOperator,
'<':cLessOperator,
'<=':cLessOrEqualOperator,
'>':cGreaterOperator,
'>=':cGreaterOrEqualOperator
/* 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" */
/*
Каждая формула представляет собой копию функции cBaseFunction.
Для реализации очередной функции необходимо указать количество (минимальное и максимальное) принимаемых аргументов. Берем в спецификации.
Также необходино написать реализацию методов Calculate и getInfo(возвращает название функции и вид/количетво аргументов).
В методе Calculate необходимо отслеживать тип принимаемых аргументов. Для примера, если мы обращаемся к ячейке A1, в которой лежит 123, то этот аргумент будет числом. Если же там лежит "123", то это уже строка. Для более подробной информации смотреть спецификацию.
Метод getInfo является обязательным, ибо через этот метод в интерфейс передается информация о реализованных функциях.
*/
varcFormulaOperators={
'(':parentLeft,
')':parentRight,
'{':function(){
varr={};
r.name='{';
r.toString=function(){
returnthis.name;
};
returnr;
},
'}':function(){
varr={};
r.name='}';
r.toString=function(){
returnthis.name;
};
returnr;
},/* 50 is highest priority */
':':cRangeUnionOperator,
'':cRangeIntersectionOperator,
'un_minus':cUnarMinusOperator,
'un_plus':cUnarPlusOperator,
'%':cPercentOperator,
'^':cPowOperator,
'*':cMultOperator,
'/':cDivOperator,
'+':cAddOperator,
'-':cMinusOperator,
'&':cConcatSTROperator/*concat str*/,
'=':cEqualsOperator/*equals*/,
'<>':cNotEqualsOperator,
'<':cLessOperator,
'<=':cLessOrEqualOperator,
'>':cGreaterOperator,
'>=':cGreaterOrEqualOperator
/* 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" */
/*
Каждая формула представляет собой копию функции cBaseFunction.
Для реализации очередной функции необходимо указать количество (минимальное и максимальное) принимаемых аргументов. Берем в спецификации.
Также необходино написать реализацию методов Calculate и getInfo(возвращает название функции и вид/количетво аргументов).
В методе Calculate необходимо отслеживать тип принимаемых аргументов. Для примера, если мы обращаемся к ячейке A1, в которой лежит 123, то этот аргумент будет числом. Если же там лежит "123", то это уже строка. Для более подробной информации смотреть спецификацию.
Метод getInfo является обязательным, ибо через этот метод в интерфейс передается информация о реализованных функциях.