Synopsis
<#switch value>
  <#case refValue1>
    ...
    <#break>
  <#case refValue2>
    ...
    <#break>
  ...
  <#case refValueN>
    ...
    <#break>
  <#default>
    ...
</#switch>
          Where:
- 
              
value,refValue1, etc.: Expressions evaluates to scalars of the same type. 
The break-s and default
          are optional.
Description
The usage of this directive is not recommended, as it's
          error-prone because of the fall-through behavior. Use elseif-s
          instead unless you want to exploit the fall-through behavior.
Switch is used to choose a fragment of template depending on the value of an expression:
<#switch animal.size>
  <#case "small">
     This will be processed if it is small
     <#break>
  <#case "medium">
     This will be processed if it is medium
     <#break>
  <#case "large">
     This will be processed if it is large
     <#break>
  <#default>
     This will be processed if it is neither
</#switch>    Inside the switch must be one or more
          <#case value>,
          and after all such case tags optionally one
          <#default>. When FM reaches the
          switch directive, it chooses a
          case directive where
          refValue equals with
          value and continues
          the processing of the template there. If there is no
          case directive with appropriate value then it
          continues processing at the default directive if
          that exists, otherwise it continues the processing after the end-tag
          of switch. And now comes the confusing thing:
          when it has chosen a case directive, it will
          continue the processing there, and will go ahead until it reaches a
          break directive. That is, it will not
          automatically leave the switch directive when it
          reaches another case directive or the
          <#default> tag. Example:
<#switch x>
  <#case 1>
    1
  <#case 2>
    2
  <#default>
    d
</#switch>    If x is 1, then it will print 1 2 d; if
          x is 2 then it will print 2 d; if
          x is 3 then it will print d. This is the
          mentioned fall-through behavior. The break tag
          instructs FM to immediately skip past the switch
          end-tag.
