Macros de Control |
Superior Previo Próximo |
Los macros de control se utilizan para controlar el procesamiento y formateo de plantillas. Los tipos básicos de macros del control incluyen:
En general, los macros del control se nombran según "camel casing" (*).
Listas La lista se utiliza para generar elementos múltiples. La estructura básica es:
%list=<TemplateName> @separator=<string> @indent=<string>[<conditions>]%
donde <string > es una cadena literal doblemente calificada y <TemplateName> puede referir a uno de los siguientes nombres de plantilla:
<condiciones> es opcional y aparece en las mismas condiciones como las condiciones para este y sus informes.
Ejemplo: %list="Attribute" @separator="\n" @indent = " " %
El atributo separador, denotada arriba por @separator, especifica el espacio que se debe utilizar entre cada ítem de la lista. Esto excluye el último item en la lista.
El atributo de indentación, denotado por @indent, especifica el espacio por el cual cada línea en la salida generada debe ser indentada.
El ejemplo anterior haría salir el resultado de procesar la plantilla Atributo, para cada elemento atributo de la clase objetivo. La lista resultante separaría e indentaría sus artículos por una sola línea nueva y dos espacios respectivamente. Si la clase objetivo tuviera algunos atributos estereotipados, serían generadas usando la plantilla apropiadamente especializada.
Hay algunos casos especiales a considerar al usar el macro de la lista:
Ramificación (construcciones si-entonces-sino) El CTF soporta una forma limitada de ramificación con las macros siguientes:
La estructura básica de las macros if y elseIf: %if <test> <operator> <test>% donde <operador> puede ser uno de:
y <test> puede ser uno de:
Las ramas pueden ser anidadas, y las condiciones múltiples se pueden especificar usando:
Nota: Al especificar condiciones múltiples, "y" u "o" tienen el mismo orden de procedencia y las condiciones se procesan de izquierda a derecha.
Los macros endif o endTemplate se deben utilizar para significar el extremo de una rama. Además, el macro endTemplate hace que la plantilla vuelva inmediatamente, si la rama correspondiente se esta ejecutando.
Ejemplo: %if elemType == "Interface"% ; %else% %OperationBody% %endIf%
Ejemplo: $bases=%list="ClassBase" @separator=", "% $interfaces=%list="ClassInterface" @separator=", "% %if $bases != "" and $interfaces != ""% : $bases, $interfaces %elseIf $bases != ""% : $bases %elseIf $interfaces != ""% : $interfaces %endIf%
La Macro PI
Hay dos medios principales de generar espacios en blanco desde las plantillas:
Por Defecto, cada plantilla que genera una sustitución no vacía también resulta una nueva linea que se produce en la producción. Esta conducta se puede cambiar a través del macro PI.
Para demostrar el uso del macro PI, considerar la Plantilla de Operación C# determinada:
%opTag:"Attribute"% %PI=" "% %opTag:"unsafe"=="true" ? "unsafe" : ""% %CONVERT_SCOPE(opScope)% %opTag:"new"=="true" ? "new" : ""% %opAbstract=="T" ? "abstract" : ""% %opConst=="T" ? "sealed" : ""% %opStatic=="T" ? "static" : ""% %opTag:"extern"=="true" ? "extern" : ""% %opTag:"delegate"=="true" ? "delegate" : ""% %opTag:"override"=="true" ? "override" : ""% %opTag:"virtual"=="true" ? "virtual" : ""% %opReturnType%%opReturnArray=="T" ? "[]" : ""% %opStereotype=="operator" ? "operator" : ""% %opName%(%list="Parameter" @separator=", "%)
El PI predeterminado es \n, entonces cualquier atributo estaría en su propia linea.
Las Líneas en blanco no tienen efecto en la producción.
Configurar el PI, entonces las claves se separan por un espacio.
Cualquier clave que no se aplica, es decir el macro produce un resultado vacío, no resultará en un espacio.
Solo un espacio se genera para esta linea.
La linea final en la plantilla no generará un espacio.
En el ejemplo de arriba queremos organizar macros para las claves varias verticalmente para que estén listos. Sin embargo en la salida, queremos que cada clave relevante sea separada por un espacio simple. Esto se logra por la linea: %PI=" "%
Tener en cuenta como no necesitamos especificar el espacio entre cada una de las claves posibles. Este espacio ya esta implicado configurando el PI a un solo espacio. Esencialmente el PI actúa como un mecanismo conveniente para formatear la salida desde adentro de las plantillas.
La estructura para configurar la instrucción del proceso es:
%PI=<value>%
donde <value> puede ser un string literal incluido entre comillas.
Los puntos siguientes se aplican al macro PI:
Los Macros de Sincronización Los Macros de Sincronización se usan para proveer un formato para EA cuando se insertan nuevas secciones en el código fuente, durante la sincronización directa. Los valores para sincronizar macros deben ser configurados en la plantilla de Archivo.
La estructura para configurar macros de sincronización es:
%<name>=<value>%
donde <name> puede ser uno de los macros listados abajo y <value> es un string literal incluido entre comillas.
|