Skip to content

Commit

Permalink
Refactoring: extracted RenderQuerySection() and RenderArraySection()
Browse files Browse the repository at this point in the history
  • Loading branch information
pmcelhaney committed May 30, 2010
1 parent f53dc93 commit a2e9081
Showing 1 changed file with 24 additions and 10 deletions.
34 changes: 24 additions & 10 deletions Mustache.cfc
Original file line number Diff line number Diff line change
Expand Up @@ -40,29 +40,43 @@
<cfargument name="inner"/>
<cfargument name="context"/>
<cfset var ctx = get(tagName, context) />
<cfset var result = "" />
<cfset var item = "" />
<cfif isStruct(ctx)>
<cfreturn render(inner, ctx)>
<cfelseif isQuery(ctx)>
<cfloop query="ctx">
<cfset result &= render(inner, ctx) /> <!--- TODO: should probably use StringBuilder for performance --->
</cfloop>
<cfreturn result/>
<cfreturn renderQuerySection(inner, ctx) />
<cfelseif isArray(ctx)>
<cfloop array="#ctx#" index="item">
<cfset result &= render(inner, item) /> <!--- TODO: should probably use StringBuilder for performance --->
</cfloop>
<cfreturn result />
<cfreturn renderArraySection(inner, ctx) />
<cfelseif isFunction(context[tagName])>
<cfreturn evaluate("context.#tagName#(inner)") />
<cfelseif ctx xor type eq "^">
<cfreturn inner />
<cfelse>
<cfreturn "" />
</cfif>
</cffunction>

<cffunction name="renderQuerySection" access="private" output="false">
<cfargument name="template"/>
<cfargument name="context"/>
<cfset var result = "" />
<cfloop query="context">
<cfset result &= render(template, context) /> <!--- TODO: should probably use StringBuilder for performance --->
</cfloop>
<cfreturn result/>
</cffunction>

<cffunction name="renderArraySection" access="private" output="false">
<cfargument name="template"/>
<cfargument name="context"/>
<cfset var result = "" />
<cfset var item = "" />
<cfloop array="#context#" index="item">
<cfset result &= render(template, item) /> <!--- TODO: should probably use StringBuilder for performance --->
</cfloop>
<cfreturn result/>
</cffunction>


<cffunction name="renderTags" access="private" output="false">
<cfargument name="template"/>
<cfargument name="context" />
Expand Down

0 comments on commit a2e9081

Please sign in to comment.