<cfif (THISTAG.ExecutionMode EQ "Start")>
<cfparam name="ATTRIBUTES.Text" type="string" />
<cfparam name="ATTRIBUTES.Pattern" type="string" />
<cfparam name="ATTRIBUTES.ReturnVariable" type="variablename" />
<cfelse>
<cfsavecontent variable="strMethod">
<cfoutput>
#("<" & "cfscript>")#
#REReplaceNoCase(
THISTAG.GeneratedContent,
"function\s*\(",
"function $(",
"one"
)#
#("</" & "cfscript>")#
</cfoutput>
</cfsavecontent>
<cfset strMethodFile = GetTempFile(
ExpandPath( "/" ),
"rereplace"
) />
<cffile
action="write"
file="#strMethodFile#"
output="#strMethod#"
/>
<cfinclude template="/#GetFileFromPath( strMethodFile )#" />
<cffile
action="delete"
file="#strMethodFile#"
/>
<cfset objPattern = CreateObject( "java", "java.util.regex.Pattern" ).Compile(
JavaCast( "string", ATTRIBUTES.Pattern )
) />
<cfset objMatcher = objPattern.Matcher(
JavaCast( "string", ATTRIBUTES.Text )
) />
<cfset objBuffer = CreateObject( "java", "java.lang.StringBuffer" ).Init() />
<cfset arrParameters = GetMetaData( $ ).Parameters />
<cfloop condition="#objMatcher.Find()#">
<cfset objArguments = {} />
<cfset objArguments[ arrParameters[ 1 ].Name ] = objMatcher.Group() />
<cfloop
index="intGroup"
from="1"
to="#objMatcher.GroupCount()#"
step="1">
<cfset objArguments[ arrParameters[ intGroup + 1 ].Name ] = objMatcher.Group( JavaCast( "int", intGroup ) ) />
<cfif NOT StructKeyExists( objArguments, arrParameters[ intGroup + 1 ].Name )>
<cfset objArguments[ arrParameters[ intGroup + 1 ].Name ] = "" />
</cfif>
</cfloop>
<cfset strNewContent = $(
ArgumentCollection = objArguments
) />
<cfset objMatcher.AppendReplacement(
objBuffer,
REReplace( strNewContent, "([\$\\])", "\\\1", "all" )
) />
</cfloop>
<cfset objMatcher.AppendTail( objBuffer ) />
<cfset CALLER[ ATTRIBUTES.ReturnVariable ] = objBuffer.ToString() />
<cfset THISTAG.GeneratedContent = "" />
</cfif>