Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <cfset inputs = [
- "1,4,8,12,90",
- "99,88,70,3,-2",
- "Apple,Banana,Cherry,Donut,anna,berry,cherry",
- "anna,Apple,Banana,berry,cherry,Cherry",
- "Zed,Xymox,Joy Division,Cure",
- "Zed,zip,Xymox,xoom",
- "apple,banana,aardvark",
- "9,2,9,1,99,-21",
- "",
- "1,2",
- "2,1",
- "A"
- ]>
- <cfoutput>
- <cfloop array="#inputs#" index="list">
- <cfdump var="#isSorted(list)#" label="#list#">
- </cfloop>
- </cfoutput>
- <cffunction name="isSorted" returntype="struct" >
- <cfargument name="listData" required="true" type="string" />
- <cfset local.result = structNew() />
- <cfset local.result.cInsTxtSortedAsc = "NO"/>
- <cfset local.result.cInsTxtSortedDesc = "NO"/>
- <cfset local.result.cSensTxtSortedAsc = "NO"/>
- <cfset local.result.cSensTxtSortedDesc = "NO"/>
- <cfset local.result.numSortedAsc = "NO"/>
- <cfset local.result.numSortedDesc = "NO"/>
- <cfset local.result.isSorted = "NO" />
- <cftry>
- <cfif listLen(arguments.listData) GT 1>
- <cfif reFind("[^0-9,]", arguments.listData)>
- <cfset local.result.cInsTxtSortedAsc = compareNoCase(listSort(arguments.listData, "textnocase", "asc" ), arguments.listData) eq 0 />
- <cfset local.result.cInsTxtSortedDesc = compareNoCase(listSort(arguments.listData, "textnocase", "desc" ), arguments.listData) eq 0 />
- <cfset local.result.cSensTxtSortedAsc = compare(listSort(arguments.listData, "text", "asc" ), arguments.listData) eq 0 />
- <cfset local.result.cSensTxtSortedDesc = compare(listSort(arguments.listData, "text", "desc" ), arguments.listData) eq 0 />
- <cfelse>
- <cfset local.result.numSortedAsc = compare(listSort(arguments.listData, "numeric", "asc" ), arguments.listData) eq 0 />
- <cfset local.result.numSortedDesc = compare(listSort(arguments.listData, "numeric", "desc" ), arguments.listData) eq 0 />
- </cfif>
- <cfif local.result.cInsTxtSortedAsc OR local.result.cInsTxtSortedDesc OR local.result.cSensTxtSortedAsc OR local.result.cSensTxtSortedDesc
- OR local.result.numSortedAsc OR local.result.numSortedDesc>
- <cfset local.result.isSorted = "YES" />
- </cfif>
- <cfelseif listLen(arguments.listData) EQ 1>
- <!--- Empty or 1 element, that's in order --->
- <cfif reFind("[^0-9,]", arguments.listData)>
- <cfset local.result.cInsTxtSortedAsc = "YES"/>
- <cfset local.result.cInsTxtSortedDesc = "YES"/>
- <cfset local.result.cSensTxtSortedAsc = "YES"/>
- <cfset local.result.cSensTxtSortedDesc = "YES"/>
- <cfset local.result.numSortedAsc = "NO"/>
- <cfset local.result.numSortedDesc = "NO"/>
- <cfset local.result.isSorted = "YES" />
- <cfelse>
- <cfset local.result.cInsTxtSortedAsc = "NO"/>
- <cfset local.result.cInsTxtSortedDesc = "NO"/>
- <cfset local.result.cSensTxtSortedAsc = "NO"/>
- <cfset local.result.cSensTxtSortedDesc = "NO"/>
- <cfset local.result.numSortedAsc = "YES"/>
- <cfset local.result.numSortedDesc = "YES"/>
- <cfset local.result.isSorted = "YES" />
- </cfif>
- <cfelse>
- <cfset local.result.cInsTxtSortedAsc = "YES"/>
- <cfset local.result.cInsTxtSortedDesc = "YES"/>
- <cfset local.result.cSensTxtSortedAsc = "YES"/>
- <cfset local.result.cSensTxtSortedDesc = "YES"/>
- <cfset local.result.numSortedAsc = "YES"/>
- <cfset local.result.numSortedDesc = "YES"/>
- <cfset local.result.isSorted = "YES" />
- </cfif>
- <cfcatch type="any">
- <cfdump var="#cfcatch#">
- </cfcatch>
- </cftry>
- <cfreturn local.result />
- </cffunction>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement