.. _Macro_Syntax_Brackets:

Macro Syntax Brackets
---------------------


Macros can have any of the following markup:

* ``{{`` and ``}}``
 
  indicate macros that resolve to single values.
  The value can also return an object. A direction parameter
  is also available for hierarchy searching. This is indicated 
  by ``||``. Refer to the topic on SELECT-FROM-WHERE type 
  macros for details.

  Any number of single opening and closing brackets (``{`` and ``}``)
  can also occur inside these scalar macros.

* ``{#`` and ``#}``

  indicate macros that resolve to lists of values.
* ``{%`` and ``%}``

  indicate macros that resolve to dictionaries
* ``((`` and ``))``

  indicate macros that test for a condition are enclosed in
  round brackets (( and )) - these macros evaluate to True or False

  The comparison operators that are available for these macros
  are: ``==, !=, <, >, <=, >=``.

  The OR operator in a test is ``|``, for example:

  ::

     (( device.cuc.PagerDevice.Undeletable| ObjectId:input.ObjectId|
        direction:local == False ))

* ``((test)) <if value> <else value>``

  IF ELSE type conditional macro.
* ``((test)) <value> ((test)) <value> <value>``

  IF ELSEIF ELSE-type
  macros combine tests and result values if the test resolves to True
  or False. The logic is IF (test) THEN <value> ELSE IF (test) THEN
  <value> ELSE <value>.

  Example: 
    
  :: 
 
     ((self.a == self.b)) <foo-{{CallManager.host}}> 
      ((self.b ==  self.c)) <foo-{{CallManager.username}}>
      <foo-{{CallManager.version}}>

  This macro tests for the equality of values in a calling model
  (referenced by 'self') and returns an evaluation for the condition
  that is True. The evaluation refers in dot notation to attributes
  of a Data Model called 'CallManager' and concatenates the result
  with a string 'foo-'.

* 'SELECT FROM WHERE'-type macros returning single-, dictionary- and 
  list type values and can take parameters. 
  
  The format is:

  * *{{ SELECT FROM \| WHERE }}*
  * *{% SELECT FROM \| WHERE %}*
  * *{# SELECT FROM \| WHERE #}*
   
  These types and their parameters are illustrated in the  
  topic on 'SELECT FROM WHERE' Macros.



.. |VOSS-4-UC| replace:: VOSS-4-UC
.. |Unified CM| replace:: Unified CM