Changeset 257

Show
Ignore:
Timestamp:
11/03/06 22:25:22 (2 years ago)
Author:
scorfield
Message:

Fixes #160 by pushing generation of condition down into true/false. Added test case.

Location:
framework/trunk
Files:
1 added
4 modified

Legend:

Unmodified
Added
Removed
  • framework/trunk/skeleton/controller/circuit.xml.cfm

    r253 r257  
    5151                <do action="welcome" /> 
    5252        </fuseaction> 
     53        <fuseaction name="ticket160"> 
     54                <if condition="true"> 
     55                        <true> 
     56                                <include template="dsp_echo" circuit="v"> 
     57                                        <parameter name="data" value="true/true" /> 
     58                                </include> 
     59                        </true> 
     60                </if> 
     61                <if condition="true"> 
     62                        <false> 
     63                                <include template="dsp_echo" circuit="v"> 
     64                                        <parameter name="data" value="true/false" /> 
     65                                </include> 
     66                        </false> 
     67                </if> 
     68                <if condition="true"> 
     69                        <true> 
     70                                <include template="dsp_echo" circuit="v"> 
     71                                        <parameter name="data" value="true/true/1" /> 
     72                                </include> 
     73                        </true> 
     74                        <false> 
     75                                <include template="dsp_echo" circuit="v"> 
     76                                        <parameter name="data" value="true/false/1" /> 
     77                                </include> 
     78                        </false> 
     79                </if> 
     80                <!-- this construct did not work in FB5.0.0 --> 
     81                <if condition="true"> 
     82                        <false> 
     83                                <include template="dsp_echo" circuit="v"> 
     84                                        <parameter name="data" value="true/false/2" /> 
     85                                </include> 
     86                        </false> 
     87                        <true> 
     88                                <include template="dsp_echo" circuit="v"> 
     89                                        <parameter name="data" value="true/true/2" /> 
     90                                </include> 
     91                        </true> 
     92                </if> 
     93                <if condition="false"> 
     94                        <true> 
     95                                <include template="dsp_echo" circuit="v"> 
     96                                        <parameter name="data" value="false/true" /> 
     97                                </include> 
     98                        </true> 
     99                </if> 
     100                <if condition="false"> 
     101                        <false> 
     102                                <include template="dsp_echo" circuit="v"> 
     103                                        <parameter name="data" value="false/false" /> 
     104                                </include> 
     105                        </false> 
     106                </if> 
     107                <if condition="false"> 
     108                        <true> 
     109                                <include template="dsp_echo" circuit="v"> 
     110                                        <parameter name="data" value="false/true/1" /> 
     111                                </include> 
     112                        </true> 
     113                        <false> 
     114                                <include template="dsp_echo" circuit="v"> 
     115                                        <parameter name="data" value="false/false/1" /> 
     116                                </include> 
     117                        </false> 
     118                </if> 
     119                <!-- this construct did not work in FB5.0.0 --> 
     120                <if condition="false"> 
     121                        <false> 
     122                                <include template="dsp_echo" circuit="v"> 
     123                                        <parameter name="data" value="false/false/2" /> 
     124                                </include> 
     125                        </false> 
     126                        <true> 
     127                                <include template="dsp_echo" circuit="v"> 
     128                                        <parameter name="data" value="false/true/2" /> 
     129                                </include> 
     130                        </true> 
     131                </if> 
     132        </fuseaction> 
    53133         
    54134</circuit> 
  • framework/trunk/verbs/false.cfm

    r185 r257  
    6969                         
    7070                // compile <false> 
    71                 fb_appendLine("<cfelse>"); 
     71                if (fb_.verbInfo.parent.ifUsed) { 
     72                        fb_appendLine("<cfelse>"); 
     73                } else { 
     74                        fb_appendLine("<cfif not #fb_.verbInfo.parent.condition#>"); 
     75                        fb_.verbInfo.parent.ifUsed = true; 
     76                } 
    7277        } 
    7378</cfscript> 
  • framework/trunk/verbs/if.cfm

    r185 r257  
    6868                 
    6969                // compile <if> 
    70                 fb_appendLine("<cfif #fb_.verbInfo.attributes.condition#>"); 
    71         } 
    72  
    73         // compile </if> 
    74         if (fb_.verbInfo.executionMode is "end") { 
    75                 fb_appendLine("</cfif>"); 
     70                // <true> and <false> can occur in either order so we defer the conditional 
     71                // to the child tags... 
     72                fb_.verbInfo.condition = fb_.verbInfo.attributes.condition; 
     73                fb_.verbInfo.ifUsed = false; 
     74        } else { 
     75                // compile </if> 
     76                if (fb_.verbInfo.ifUsed) { 
     77                        fb_appendLine("</cfif>"); 
     78                } 
    7679        } 
    7780</cfscript> 
  • framework/trunk/verbs/true.cfm

    r170 r257  
    6969                 
    7070                // compile <true> 
    71                 // <true> is a no-op 
     71                if (fb_.verbInfo.parent.ifUsed) { 
     72                        fb_appendLine("<cfelse>"); 
     73                } else { 
     74                        fb_appendLine("<cfif #fb_.verbInfo.parent.condition#>"); 
     75                        fb_.verbInfo.parent.ifUsed = true; 
     76                } 
    7277        } 
    7378</cfscript>