Além do acesso simples, você pode usar a configuração para gerar diferentes versões da marcação do fluxo de trabalho. Por exemplo, você pode gerar uma marcação usando um loop em uma entrada de texto múltipla ou condicionalmente, dependendo de uma entrada de caixa de seleção.
As funções auxiliares são muitas vezes ideais para este fim. As seções a seguir descrevem quais auxiliares estão disponíveis e como eles podem ser usados.
Aqui está uma lista de palavras-chave e suas descrições com um exemplo de código:
{#assign "myval"} Esta é uma variável {/assign}
+
,-
,*
,,/
e %
).{matemática myNum "+" 5}
@index
e o nome da chave atual via @key
. Você também pode usar @first
e @last para verificar se você está na primeira/última etapa da iteração{#each myObj} {@index} {/cada}
==
,>
,<
,>=
, e <=
pode ser usado como operadores. Um parâmetro de hash pode ser usado para incrementar ou diminuir o contador.{#for 5 ">" 0 after="-2"} {isso} {/for}
==
, !=
, <
, , <=
e equalsIgnoreCase
pode ser usado como operadores.{comapre myStr "==" "Hallo}
{#switch tipo} {#case "artigo"} Este é um artigo {/case} {#case "resource"} This is a resource {/case}
isCar=false
booleanas e hasLicense=true
:{#if (ou (e isCar hasPlate) (e (não isCar) hasLicense)))} Permitido dirigir. {senão} Não é permitido dirigir.
trueVar=true
:{a menos que trueVar} Isto é text {/unless}
TRUE
ou FALSE
como saída, dependendo das variáveis:{e isCar hasPlate}
TRUE
ou FALSE
como saída, dependendo das variáveis:{ou isCar hasPlate}
TRUE
como saída se isCar=false
:{não éCar}
size
, is_not_singleton
e is_singleton
pode ser usado como operadores.
{coleção myColl "size"}
{barra #each }{lookup .. /foo@index} {/each}
{#with myVal} {#ech myObj} {/cada} {/com}
Aqui está uma lista de palavras-chave e suas descrições com um exemplo de código:
"lowercase"
, "lowercase_underscore"
ou "lowercase_hyphen"
).{caseFormat myStr "lowercase_underscore"}
{capitalizePrimeiro valor}
{valor de corte " "}
FALSE
. Caso contrário, o valor original será usado.{defaultIfEmpty valor "nothing"}
{join "a" "b" "c" " // " prefix="" suffix=""}
{tamanho do valor central=19 pad=" "}
{ljust valor 20 pad=" "}
{rjust valor 20 pad=" "}
{valor da substring 3} {valor da substring 0 3}
{menor valor}
{valor superior}
{valor slugify}
value="Hello %s"
e param1="TeamViewer"
:{stringFormat valor param1}
{valor stripTags}
{valor em maiúsculas totalmente=false}
{abreviar valor 6}
{wordWrap valor 5}
{substitua o valor "... " "rochas"}
TRUE
, FALSE
e (opcionalmente) NULL
para cadeias de caracteres com valores como "sim", "não" ou "talvez".{yesno valor yes="yes" no="no" maybe="talvez"}
"full"
para mostrar datas em um formato como "terça-feira, 19 de junho de 2012""medium"
para mostrar datas em um formato como "Jun 19, 2012""short"
para mostrar datas em um formato como "19/06/12""pattern"
para mostrar datas em um padrão personalizado.{dateFormat data ["format"] [format="formato"] [tz=fuso horário|timeZoneId]}
groupingUsed
para definir se o agrupamento será ou não usado no formatomaximumFractionDigits
para definir o número máximo de dígitos permitidos na porção de fraçãomaximumIntegerDigits
Para definir o número máximo de dígitos na parte inteiraminimumFractionDigits
para definir o número mínimo de dígitos na porção fracionáriaminimumIntegerDigits
Para definir o número mínimo de dígitos na parte inteiraparseIntegerOnly
para definir se os números devem ou não ser analisados como apenas inteirosroundingMode
para definir como os números devem ser arredondados o (em combinação com , , , , FLOOR
, HALF_UP
, HALF_DOWN
, , HALF_EVEN
) UNNECESSARY
CEILING
DOWN
UP
{númeroNúmero do formato ["format"] [locale=padrão]}
Veja um exemplo prático:
"Geral": { "use_camera": { "title": "Usar câmera de Smartglasses", "inputType": "checkbox-input", "value": "true" } } }< onresume> <rule id="auto"> <expression>1</expression>< actions> §{#if General.use_camera.value}§ <action ref="start_cam"/> §{/if}§ </ ações> </regra> </onresume>
Como você pode ver, a palavra-chave if aqui permite que você execute apenas uma ação quando o parâmetro de configuração correspondente estiver definido como true. É importante notar que todas as palavras-chave são usadas dentro do escopo escrevendo primeiro uma hashtag (#).
Aqui está outro exemplo usando cada palavra-chave:
{ "Configuration": { "buttons": { "title": "Function Keys", "inputType": "multiple-dropdown-input", "elements": [ { "name": "TAB", "content": "ANDRRES_key_tab", "type": "TEXT", "translatable": true }, { "name": "DELETE", "content": "ANDRRES_key_delete", "type": "TEXT", "translatable": true }, { "name": "BACKSPACE", "content": "ANDRRES_key_backspace", "type": "TEXT", "translatable": true }, { "name": "F1", "content": "F1", "speech_cmd": "F 1", "type": "TEXT" }, { "name": "F2", "content": "F2", "speech_cmd": "F 2", "type": "TEXT" } ], "value": [ { "name": "TAB", "content": "ANDRRES_key_tab", "type": "TEXT", "translatable": true }, { "name": "DELETE", "content": "ANDRRES_key_delete", "type": "TEXT", "translatable": true } ] } } } <ui_update id="show_key_input_footer"> <widget_params> <ui_element name="FOOTER_L2">< param name="VISIBILIDADE">INVISIBLE</param> </ui_element> <ui_element name="RETURN_L1"> <param name="menu_id" descriptor="">0</param> </ui_element> §{#each Configuration.buttons.value}§ <ui_element name="§{name}§"> <param name="menu_id" descriptor="">§{math @index "+" 1}§</param> </ui_element> §{#if @last}§ §{#if Configuration.enable_camera.value}§ <ui_element name="CAMERA"> <param name="MENU_ID">§{math @.. /index "+" 2}§</param> </ui_element> <ui_element name="ENTER"> <param name="MENU_ID">§{math @.. /index "+" 3}§</param> </ui_element> §{else}§ <ui_element name="ENTER"> <param name="MENU_ID">§{math @../índice "+" 2}§</param> </ui_element> §{/se}§ §{/se}§ §{/cada}§ </widget_params> </ui_update>
Neste exemplo, um menu suspenso de vários níveis é usado para configurar vários botões que são mostrados na interface do usuário. Para os dois últimos botões, há uma varredura de código de barras, dependendo se uma entrada de caixa de seleção está definida, bem como outro botão padrão. Ambos os botões são mostrados mais à direita na interface. Como você pode vê-lo aqui, você também pode criar componentes altamente configuráveis como este.