<cfsilent>
<!--- 20181209 v0.3 --->
<!--- Используется в селекте для структурирования списка полей. Выводит вместо себя список через запятую, экспортирует Map со структурами выражение+заголовок, с ключом, соответствующим имени колонки в селекте (ключ вычисляется регулярным выражением)  --->
<!---v0.3 добавлено поле cfSqlType--->
	<cfif thisTag.executionMode is "end">	
	
		<cfparam name="ATTRIBUTES.titleMapOut"/>	
		<cfparam name="ATTRIBUTES.lengthOut"/>
		<cfparam name="ATTRIBUTES.listOut" default=""/>	

		<cfparam name="thisTag.fieldsArray" type="array"/><!--- Вложенные теги field отдают сюда свои данные --->
		<cfset titleMap=structNew()/>
		<cfset list=""/>
		<cfset i=0/>
		<cfloop array=#thisTag.fieldsArray# index="field">
			<cfset i=i+1/>
			<cfset list=listAppend(#list#, #field.expression#)/>
			<cfif len(#field.name#)> 
				<cfset structInsert(#titleMap#, #field.name#, structNew())/>
				<cfset "titleMap.#field.name#.ordinal"=#i#/>
				<cfset "titleMap.#field.name#.title"=#field.title#/>
				<cfset "titleMap.#field.name#.cfSqlType"=#field.cfSqlType#/>
			</cfif>
		</cfloop>

		<cfif len(ATTRIBUTES.lengthOut)>
			<cfset "CALLER.#ATTRIBUTES.lengthOut#"=#arrayLen(thisTag.fieldsArray)#/>
		</cfif>
		
		<cfif len(ATTRIBUTES.titleMapOut)>
			<cfset "CALLER.#ATTRIBUTES.titleMapOut#"=#titleMap#/>
		</cfif>
		
		<cfif len(ATTRIBUTES.listOut)>
			<cfset "CALLER.#ATTRIBUTES.listOut#"=preserveSingleQuotes(list)/>
		<cfelse>
			<cfset thisTag.generatedContent=preserveSingleQuotes(list)/>
		</cfif>
		
	</cfif>
</cfsilent>