| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <head> |
| <title>Formatting</title> |
| <link rel="stylesheet" type="text/css" href="userguide.css"> |
| </head> |
| |
| <body> |
| <h2>Formatting</h2> |
| <h3>Removing extra lines</h3> |
| <p>All characters inside scripts are used for generation output, including spaces, line breaks, or carriage return characters.</p> |
| <table class="sample"> |
| <tbody> |
| <tr class="heading"> |
| <td width="281"> |
| <p><strong>Template content</strong></p> |
| </td> |
| <td width="151"> |
| <p><strong>Actual output</strong></p> |
| </td> |
| <td width="187"> |
| <p><strong>Expected output</strong></p> |
| </td> |
| </tr> |
| <tr> |
| <td width="281"> |
| <p> |
| <span class="code"> |
| <gendoc>¶<br/> |
| ..[for (p:Package|self.ownedElement->filter(Package)->sortedBy(name))].¶</span><br/> |
| <strong>[p.name/].¶</strong><br/> |
| <span class="code"> |
| ..[/for].¶<br/> |
| </gendoc>¶ |
| </span></p> |
| </td> |
| <td width="151"> |
| <p> |
| ¶<br/> |
| ...¶<br/> |
| <strong>Allocations.¶</strong><br/> |
| ...¶<br/> |
| <strong>Context.¶</strong><br/> |
| ...¶<br/> |
| <strong>LogicalView.¶</strong><br/> |
| ...¶<br/> |
| <strong>PhysicalView.¶</strong><br/> |
| ...¶<br/> |
| <strong>UseCases.¶</strong><br/> |
| ...¶<br/> |
| ¶</p> |
| </td> |
| <td width="187"> |
| <p> |
| <strong>Allocations.¶</strong><br/> |
| <strong>Context.¶</strong><br/> |
| <strong>LogicalView.¶</strong><br/> |
| <strong>PhysicalView.¶</strong><br/> |
| <strong>UseCases.¶</strong> |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <p><span class="code"><drop/></span> tag allows to remove extra lines.</p> |
| <p>Document generation is internally performed in two steps and <span class="code"><drop/></span> |
| tag removes the <strong><u>WHOLE</u></strong> paragraph in which it is contained so it must be |
| handled with care.</p> |
| <p>First step is to analyze the lines to get as output to understand where the extra lines |
| come from in the template and where the <drop/> tags should be located.</p> |
| <table class="sample"> |
| <tbody> |
| <tr class="heading"> |
| <td width="281"> |
| <p><strong>Template content</strong></p> |
| </td> |
| <td colspan="2" width="338"> |
| <p><strong>Output</strong></p> |
| </td> |
| </tr> |
| <tr> |
| <td width="281"> |
| <p> |
| <span class="code"><gendoc><span style="background:#00FFFF;">¶</span><br/> |
| <span style="background:yellow;">..</span>[for (p:Package|self.ownedElement->filter(Package)->sortedBy(name))]<span style="background:#00FF00;">.¶</span></span><br/> |
| <strong>[p.name/].¶</strong><br/> |
| <span class="code"><span style="background:pink;">..</span>[/for]<span style="background:red;">.¶</span><br/> |
| <span class="code"></gendoc></span><span style="background:#00FFFF;">¶</span></span> |
| </p> |
| </td> |
| <td colspan="2" width="338"> |
| <p> |
| <span class="code" style="background:#00FFFF;">¶</span><br/> |
| <span class="code"style="background:yellow;">..</span><span class="code" style="background:#00FF00;">.¶</span><br/> |
| <strong>Allocations.¶</strong><br/> |
| <span class="code" style="background:pink;">..</span><span class="code" style="background:#00FF00;">.¶</span><br/> |
| <strong>Context.¶</strong><br/> |
| <span class="code" style="background:pink;">..</span><span class="code" style="background:#00FF00;">.¶</span><br/> |
| <strong>LogicalView.¶</strong><br/> |
| <span class="code" style="background:pink;">..</span><span class="code" style="background:#00FF00;">.¶</span><br/> |
| <strong>PhysicalView.¶</strong><br/> |
| <span class="code" style="background:pink;">..</span><span class="code" style="background:#00FF00;">.¶</span><br/> |
| <strong>UseCases.¶</strong><br/> |
| <span class="code" style="background:pink;">..</span><span class="code" style="background:red;">.¶</span><br/> |
| <span style="background:#00FFFF;">¶</span> |
| </p> |
| </td> |
| </tr> |
| <tr> |
| <td rowspan="2" width="281"> |
| <p> |
| <span class="code"> |
| <gendoc><drop/>¶<br/> |
| ..[for (p:Package|self.ownedElement->filter(Package)->sortedBy(name))].<drop/>¶</span><br/> |
| <strong> [p.name/]¶</strong><br/> |
| <span class="code"> |
| ..[/for] .<drop/>¶<br/> |
| </gendoc><drop/>¶</span> |
| </p> |
| </td> |
| <td width="198" class="heading"> |
| <p><strong>before <drop/> handling</strong></p> |
| </td> |
| <td width="139" class="heading"> |
| <p><strong>Final output</strong></p> |
| </td> |
| </tr> |
| <tr> |
| <td width="198"> |
| <p> |
| <span class="code"><drop/>¶<br/> |
| ...<drop/>¶</span><br/> |
| <strong>Allocations.¶</strong><br/> |
| <span class="code">...<drop/>¶</span><br/> |
| <strong>Context.¶</strong><br/> |
| <span class="code">...<drop/>¶</span><br/> |
| <strong>LogicalView.¶</strong><br/> |
| <span class="code">...<drop/>¶</span><br/> |
| <strong>PhysicalView.¶</strong><br/> |
| <span class="code">...<drop/>¶</span><br/> |
| <strong>UseCases.¶</strong><br/> |
| <span class="code">...<drop/>¶<br/> |
| <drop/>¶</span> |
| </p> |
| </td> |
| <td width="139"> |
| <p> |
| <strong>Allocations.¶</strong><br/> |
| <p><strong>Context.¶</strong><br/> |
| <p><strong>LogicalView.¶</strong><br/> |
| <p><strong>PhysicalView.¶</strong><br/> |
| <p><strong>UseCases.¶</strong> |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h3>Removing lines with empty content</h3> |
| <p>Tag <span class="code"><dropEmpty/></span> drop a paragraph if the tag content is empty.</p> |
| <p>The two following examples are equivalent:</p> |
| <div class="codeBox cbBg"> |
| <p> |
| <span class="code"><context model=’${model_path}’/><br/> |
| <gendoc><br/></span> |
| All comments on packages:<br/> |
| <span class="code"> [for (p:Package|Package.allInstances()->sortedBy(name))]<drop/><br/> |
|   [for (c:Comment| p.ownedComment)]<drop/></span><br/> |
| - Comment for package [p.name/]: <strong><span class="blue"><dropEmpty></span></strong>[c._body/]<strong><span class="blue"></dropEmpty></span></strong><br/> |
| <span class="code">  [/for]<drop/><br/> |
|  [/for]<drop/><br/> |
| </gendoc></span> |
| </p> |
| </div> |
| <br/><br/> |
| <div class="codeBox cbBg"> |
| <p><span class="code"> |
| <context model=’${model_path}’/><br/> |
| <gendoc><br/></span> |
| All comments on packages:<br/> |
| <span class="code"> |
|  [for (p:Package|Package.allInstances()->sortedBy(name))]<drop/><br/> |
|   [for (c:Comment| p.ownedComment)]<drop/><br/> |
| <span class="blue"> |
|    [if (not(c._body.oclIsUndefined()))]<drop/><br/> |
| </span> |
| </span> |
| - Comment for package [p.name/]: [c._body/]<br/> |
| <span class="code"> |
| <span class="blue"> |
|    [/if]<drop/><br/> |
| </span> |
|   [/for]<drop/><br/> |
|  [/for]<drop/><br/> |
| </gendoc> |
| </span> |
| </p> |
| </div> |
| <h3>Removing line breaks</h3> |
| <p>Using tag <nobr/> allows to make template scripts easier to maintain, because |
| code can be written on several paragraphs without displaying line breaks in output document, |
| such as in the following example.</p> |
| <table class="sample"> |
| <tbody> |
| <tr class="heading"> |
| <td width="307"> |
| <p><strong>Template content</strong></p> |
| </td> |
| <td width="307"> |
| <p><strong>Output</strong></p> |
| </td> |
| </tr> |
| <tr> |
| <td width="307"> |
| <p> |
| <span class="code"> |
| <strong><gendoc></strong><br/> |
| <strong>[for (p:Package| … )]<drop/>¶</strong><br/> |
| </span> |
| Name:<strong> <span class="blue"><nobr/>¶</span></strong><br/> |
| <span class="code"> |
|  <strong> [if ( … )]<drop/>¶</strong><br/> |
| </span> |
|  [p.name/]<strong>¶</strong><br/> |
| <span class="code"> |
|  <strong> [else]<drop/>¶</strong><br/> |
| </span> |
|  Not found<strong>¶</strong><br/> |
| <span class="code"> |
|  <strong> [/if]<drop/> ¶</strong><br/> |
| </span> |
| <<Other info on package>><strong>¶</strong><br/> |
| <strong>¶</strong><br/> |
| <span class="code"> |
| <strong>[/for]<drop/>¶</strong><br/> |
| <strong></gendoc>¶</strong> |
| </span> |
| </p> |
| </td> |
| <td width="307"> |
| <p> |
| Name: Actors<br/> |
| Name: DeploymentView<br/> |
| Name: Actors<strong>¶</strong><br/> |
| <<Other info on package>><strong>¶</strong><br/> |
| <strong>¶</strong><br/> |
| Name: LogicalView<strong>¶</strong><br/> |
| <<Other info on package>><strong>¶</strong><br/> |
| <strong>¶</strong><br/> |
| Name: UseCaseView<strong>¶</strong><br/> |
| <<Other info on package>><strong>¶</strong><br/> |
| <strong>¶</strong><br/> |
| Name: Not found<strong>¶</strong><br/> |
| <<Other info on package>><strong>¶</strong><br/> |
| <strong>¶</strong> |
| </p> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </body> |
| </html> |