[Switch:]
Conditionally includes a section of the Word document.
Purpose
Conditionally includes a section of the Word document, and uses a similar structure to traditional 'switch' syntax in common programming languages.
Macro Compatibility
The macro can be used in all input document types and in Report Studio.
Usage
Use the [Switch:] / [Case:] / [Default:] / [EndSwitch:] macros to conditionally include a section of the Word document.
A Switch statement must include at least one Case statement.There is no limit on the number of Case statements you can use
.Default is optional when used with a Switch macro, but if used, must come after all Case statements.
Try NOT including newline characters to retain full control over your formatting.
Switch statements can be nested.
Parameter | Type | Presence | Purpose | Options | Default |
---|---|---|---|---|---|
String | Mandatory | The value on which to switch on, dealt with in the subsequent [Case:] statements. | N/A | N/A | |
String | Optional | Add a comment to make your document template more readable. The comment is discarded in the output document. | N/A | N/A | |
Boolean | Optional | Should NCalc expression evaluation throw error on Overflow |
|
true | |
String | Optional | The text to display should the macro fail to execute. Note that a poorly-specified macro (e.g. omitting mandatory parameters) will still result in an error message. | N/A | N/A | |
MacroMode | Optional | The mode in which variables are stored. In the legacy mode (default for Schedules), the variable created is a string and formatted. In the normal mode (default for Report Studio), the output variable is stored as a strongly-typed object, e.g. an Int32 or a List |
|
Legacy | |
ObfuscationType | Optional | Obfuscation type. Use obfuscation to write reports where sensitive data is hidden. When used, ReportMagic guarantees that the same input string will map to the same output string for the whole of the report (but the next time the report runs, it will most likely map to a different value). If you use obfuscation, the property in your macro will not show up and instead, you will see a fake item of the obfuscation type chosen. |
|
None | |
String | Optional | If specified, adds a warning message for this macro. This is processed as an NCalc, and the warning message will ALWAYS be present and will be the value of the evaluated NCalc expression. | N/A | N/A |
Examples (6)
Example 1:
Test whether the value matches a set of conditions. Note that 'blue' could be replaced with a variable stored earlier in the document, e.g. {color}.
[Switch:value=blue] [Case:value=blue] You will see this (blue) section of your Word document included if the value matches the Switch statement's value parameter. In this case, it does. [Case:value=red] This is the 'red' section of the Word document that will be shown if the value matches the Switch statement's value parameter. In this case, it does not however. ... [Default:] If no case statements apply, you will see this section in your Word document. [EndSwitch:]
Example 2:
Show a section of the Word document, with a message based on the day of the week.
First, create a variable: [String:value=Tuesday, storeAs=todaysdate] Next, execute the Switch macro: [Switch:value={todaysdate}] [Case:value=Saturday] [Case:value=Sunday] It's the weekend. [Default:] It's a weekday. ... [EndSwitch:]
Outputs:
It's a weekday.Example 3:
Basic Switch statement with a Default section:
[Switch:value={variableName}][Case:value=1]The value is 1[Case:value=2]The value is 2[Default:]The value is neither 1 nor 2[EndSwitch:]
Example 4:
Basic Switch statement with no Default section:
[Switch:value=Z][Case:value=A]The value is A[Case:value=B]The value is B[EndSwitch:]
Example 5:
A nested Switch (indents are used for readability but are not necessary) used with a predefined variable:
Store a variable (this could be generated by various macros) [String:value=blue,storeAsHidden=myVariable] [Switch:value={myVariable}] [Case:value=red]The value is red [Switch:value=10] [Case:value=1]Nested switch value is 1 [Case:value=2]Nested switch value is 2 [Default:]Nested switch value is neither 1 nor 2 [EndSwitch:] [Case:value=green]The value is green [Default:]The value is some other colour [EndSwitch:]
Example 6:
A Switch macro that uses fall-through on multiple Case statements. To use the fall-through mechanism, simply use whitespace for the Case statement (in this case when the value is 3, 4 or 5, the final Case statement is selected):
[Switch:value=5] [Case:value=1]The value is 1 [Case:value=2]The value is 2 [Case:value=3] [Case:value=4] [Case:value=5]The value is 3, 4 or 5 [Default:]The value is some other number [EndSwitch:]