1. Команды интерпретатора

advertisement
Фильтр “CF_interpreter”
Документ
Статус
Дата последнего
изменения
Использованные
обозначения
–1–
подсистема “ CF_interpreter ”. Версии
Alex Ponomarenko
Alex Ponomarenko
Содержание
1. Команды интерпретатора......................................................................................................2
1.1. IF ...............................................................................................................................................2
1.2. IF1 ............................................................................................................................................2
1.3. insertVar ................................................................................................................................3
1.4. loop ..........................................................................................................................................3
1.5. setVar ......................................................................................................................................4
1.6. math ........................................................................................................................................4
1.7. if2 ..............................................................................................................................................4
1.8. loopMainArray ......................................................................................................................6
1.9. for .............................................................................................................................................6
1.10. setAr ....................................................................................................................................6
1.11. exec......................................................................................................................................7
1.12. loopAssoc ...........................................................................................................................7
1.13. if3 ..........................................................................................................................................8
1.14. findInMA .............................................................................................................................8
1.15. echoMA ...............................................................................................................................8
1.16. # ...........................................................................................................................................8
1.17. getValMA ............................................................................................................................9
1.18. getRecordsNumberMA ..................................................................................................9
1.19. getStrLen ...........................................................................................................................9
Фильтр “CF_interpreter”
1.
–2–
Команды интерпретатора
packed value – это константа, если она указана в одинарных кавычках, либо имя переменной
интерпретатора, если она указана без одинарных кавычек
Обозначения: красным цветом указаны изменения по сравнению с предыдущей версией
1.1. IF
команда
IF
Описание
Алгоритм IF позволяет вывести содержимое блока <cmd> </cmd> при
выполнении условия. Поддеррживается ветка @else@
Интерфейс:
if(txtVarName, txtOp, txtValue)
txtVarName: packed value
txtOp: {==,!=,<=,<,gt,gte}
txtValue – имя переменной интрепретатора
Пример:
<cmd process="if" params="'txtVal',==,txtVal"></cmd>
<cmd process="if" params="'txtVal',==,txtVal"> … @else@ … </cmd>
1.2. IF1
IF1
Алгоритм IF1 позволяет вывести содержимое блока <cmd> </cmd> при
выполнении условия равенства одному из значений
Интерфейс:
if(txtVarName, txtOp, valuesList)
txtVarName: packed value
txtOp: {==or}
valuesList := <значение> | <значение>\|<Список значений>
(\| означает, что символ | используется для разделения элементов списка значений)
Пример:
<cmd process="if1" params="'txtVal',==or,txtVal|txtVal1|txtVal2"></cmd>
<cmd process="if1" params="'txtVal',==or,txtVal|txtVal1|txtVal2">…
…</cmd>
@else@
Фильтр “CF_interpreter”
–3–
1.3. insertVar
insertVar
Алгоритм “insertVar” позволяет вставить в указанное место текста значение
переменной (name), которая была передана в интерпретатор
Пример:
<cmd process="insertVar" varName="workDir"></cmd>
(эта инструкция обрабатывается в порядке обработки других инструкций cmd)
Пример2:
<insertVar varName="workDir">
(эта инструкция обрабатывается при первой возможности, т.е. до обработки
стандартных инструкций вроде cmd)
1.4. loop
loop
Алгоритм “loop” позволяет повторить указанный кусок текста указанное число
раз
Пример1:
<cmd process="loop" varName="workDir"></cmd>
<cmd process="loop" varName="text">
<td id="chapterInfo">
@loopIndex; @text; @count;
</td>
</cmd>
(вставить на место последовательности @text; - значение текущей ячейки
одномерного array-массива, который передан в интерпретатор под именем “text”)
(вставить на место @loopIndex; - текущее значение переменной цикла (цикл
начинается с 0)
(вставить на место @count; - количество элементов в массиве)
$interpreterFilter->setVar("text ", array(“text1”, “text2”));
означает: поторить цикл 2 раза, вставить на место “@text;” сначала “text1”, потом
- “text2”; вставить на место “@loopIndex;” сначала “0”, потом “1”
Пример2:
<cmd process="loop" varName="text">
<td id="chapterInfo">
@loopIndex; @text-0; @text-1;
</td>
</cmd>
(если значение переменной text на очередной итерации – массив array(), то
выполняется замена @text-0; на первый элемент массива, @text-1; на второй, и
т.д. Т.е. внутрь интерпретатора можно передать одномерный array-массив
одномерных array-массивов, и на очередной итерации можно адресоваться к
элементу одного из n array-массивов (при адресации нумерация начинается с 0)
(вставить на место @count; - количество элементов в массиве)
Фильтр “CF_interpreter”
–4–
1.5. setVar
setVar
Алгоритм “setVar” позволяет запомнить в переменной интерпретатора значение
между парными тэгами <cmd></cmd>
1.6. math
math
Алгоритм “math” позволяет вычислить значение выражения.
Интерфейс:
math (txtVarName, txtOp, valuesList)
param1: const без кавычек
txtOp: {+ | -}
param2: const без кавычек
Пример:
<cmd process="math" params="2,+,10"></cmd>
1.7. if2
Фильтр “CF_interpreter”
if2
–5–
Алгоритм IF2 позволяет вывести содержимое блока <cmd> </cmd> при
выполнении условия. Пддерживается ветка else @if2_else_cmd@
Интерфейс:
if(leftPart, txtOp, valuesList)
leftPart: packed value
txtOp: {==, != , gt, lte }
valuesList: {packed value, packed value \| valuesList }
если команда == и справа – список значений, то предполагается ИЛИ: (==) || (==)
если команда =! и справа – список значений, то предполагается И: (!=) && (!=)
если команда gt и справа – список значений, то предполагается И: (>) && (>)
Пример1:
<cmd process="if2" params="var1,==,’2’"> …
</cmd>
Пример2:
<cmd process="if2" params="var1,==,’2’|var2"> …
</cmd>
Пример3:
<cmd process="if2" params="’2’,==,’2’"> …
</cmd>
Пример4:
<cmdX process="if2" params="’2’,==,’2’"> …
@if2_else_cmdX@
</cmdX>
Фильтр “CF_interpreter”
–6–
1.8. loopMainArray
loopMainA Алгоритм loopMainArray позволяет повторить указанный кусок текста указанное
rray
число раз. В качестве основы цикла используется основной массив, который
хранится в указанной переменной интерпретатора
Интерфейс:
loopMainArray (varName : string, [startIndex : int ], [endIndex : int])
Вероятный пример1:
<cmd1 process=”loopMainArray” varName=”arrayName”>
<loopMainArray-cmd1 cmd=”myGet,1,@cmd1-curRecNumber@”></loopMainArraycmd1>
<loopMainArray-cmd1 cmd=”myGet,NODE_ID,@cmd1-curRecNumber@”>
</loopMainArray-cmd1>
<loopMainArray-cmd1 cmd=”myGetData,’NODE_DATA’,’@cmd1curRecNumber@’,’w’”></loopMainArray-cmd1>
</cmd1>
здесь в параметрах после myGet можно указывать PHP-константы
1.9. for
for
for(loopVarName, startVal, compareCmd, stopVal, changeCounter)
compareCmd: {lt, elt}
Вероятный пример1:
<cmd1 process=”for” params=”i,1,lt,5,1”>
@i;<br>
</cmd1>
1.10. setAr
setAr
Алгоритм setAr присваивает внутренней переменной array-массив
setAr(varName,val1,val2,…)
Вероятный пример1:
<cmd1 process=”setAr” params=”varName,1,2,3,4,5”></cmd1>
Фильтр “CF_interpreter”
–7–
1.11. exec
exec
Алгоритм exec вызывает внутреннюю инструкцию интерпретатора
Вероятный пример1:
<cmd1 process=”exec” code=”get,eval,APP_WINDOW_NAME”></cmd1>
Вероятный пример2:
<cmd1 process=”exec” code=”eval,APP_WINDOW_NAME”></cmd1>
Вероятный пример3:
<cmd1
process=”exec”
SYS_FW_FP__NAME”></cmd1>
code=”get,mainAr,internalVarName,1D,eval,
Вероятный пример4:
<cmd1 process=”exec” code=”get,mainAr,internalVarName,1D,int,2”></cmd1>
Вероятный пример5:
<cmd1
process=”exec”
code=”get,mainAr,internalVarName,2D,eval,
SYS_FW_FP__NAME,eval,1”></cmd1>
Вероятный пример6:
<cmd1
process=”exec”
SYS_FW_FP__NAME,int,1”></cmd1>
code=”get,mainAr,internalVarName,2D,eval,
1.12. loopAssoc
loopAssoc
Алгоритм loopAssoc (модификация loop) - цикл по масиву ассоциативных
массивов
Пример1:
<cmd process="loopAssoc" varName="doc">
@doc-key;
</cmd>
Пример2:
<cmd process="loopAssoc" varName="doc">
@doc; @loopIndex; @count;
</cmd>
Фильтр “CF_interpreter”
–8–
1.13. if3
if3
Алгоритм IF3 позволяет вывести содержимое блока <cmd> </cmd> при
выполнении всех условий
<cmd process="if3" params="’2’,==,’2’"> …
@if3_else_cmd@
</cmd>
1.14. findInMA
findInMA
Алгоритм findInMA(X,Y,Z,Q) ищет в основном массиве X запись, у которой в
поле Y находится значение Z". номер записи записывается в переменную
интерпретатора Q
Пример:
<cmd0
process="findInMA"
params="'partitionNode','NODE_ID',nodeID,'recNum'"></cmd0>
1.15. echoMA
echoMA
Алгоритм echoMA(X) распечатываем содержимое основного массива X
(массив должен храниться в переменной интерпретатора под именем X)
Пример:
<cmd0 process="echoMA" params="'partitionNode'"></cmd0>
nodeID=<insertVar varName="nodeID">
1.16. #
#
можно закомментировать команду. Тогда она не выполняется и возвращает
пустую строку
Пример:
<cmd0 process="#echoMA" params="'partitionNode'"></cmd0>
…
Распечатываем:
recNum=<cmd0 process="insertVar" varName="recNum"></cmd0>
ВНИМАНИЕ! для использования полученного значения нужно использовать
не
<insertVar varName=” recNum”>,
а <cmd0 process="insertVar" varName="recNum"></cmd0>
Фильтр “CF_interpreter”
–9–
1.17. getValMA
getValMA Алгоритм getValMA(X,Y,Z,Q) извлекает из поля (Z) записи (Y) основного массива
(X) значение, и помещает полученное значение в переменную интерпретатора (Q)
(массив должен храниться в переменной интерпретатора под именем X)
<cmd0
process="getValMA"
params="'partitionNode','NODE_CAPTION',recNum,'curPartitionCaption'"></cmd0>
…
Распечатываем:
curPartitionCaption=<cmd0
process="insertVar"
varName="curPartitionCaption"></cmd0>
1.18. getRecordsNumberMA
getRecords Алгоритм getRecordsNumberMA(X,Q) вычисляет количество записей в основном
NumberM массиве (X), и помещает полученное значение в переменную интерпретатора (Q)
A
(массив должен храниться в переменной интерпретатора под именем X)
Интерфейс:
getRecordsNumberMA(X,Q)
X: packed value
Q: packed value
Пример1:
<cmd0
process="getRecordsNumberMA"
params="'partitionNode',
'recsNumber'"></cmd0>
…
Распечатываем:
recsNumber=<cmd0 process="insertVar" varName="recsNumber"></cmd0>
1.19. getStrLen
getStrLen
Алгоритм getStrLen(X,Y) вычисляет длину строки (X), и помещает полученное
значение в переменную интерпретатора (Y)
Интерфейс:
getStrLen(X,Y)
X: packed value
Q: packed value
Пример:
<cmd0 process="getStrLen" params="shortInfo2,'shortInfo2Len'"></cmd0>
Распечатываем:
len=<cmd0 process="insertVar" varName="shortInfo2Len"></cmd0>
Фильтр “CF_interpreter”
– 10 –
Download