mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
distinguish between ColdFusion HTML and ColdFusion CFCs
allows for using both ColdFusion Lexers provided by pigments and allows for proper syntax highlighting of cfscript based CFCs Signed-off-by: Sean Coyne <sean@n42designs.com>
This commit is contained in:
239
samples/ColdFusion CFC/exampleScript.cfc
Normal file
239
samples/ColdFusion CFC/exampleScript.cfc
Normal file
@@ -0,0 +1,239 @@
|
||||
/**
|
||||
********************************************************************************
|
||||
ContentBox - A Modular Content Platform
|
||||
Copyright 2012 by Luis Majano and Ortus Solutions, Corp
|
||||
www.gocontentbox.org | www.luismajano.com | www.ortussolutions.com
|
||||
********************************************************************************
|
||||
Apache License, Version 2.0
|
||||
|
||||
Copyright Since [2012] [Luis Majano and Ortus Solutions,Corp]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
********************************************************************************
|
||||
* A generic content service for content objects
|
||||
*/
|
||||
component extends="coldbox.system.orm.hibernate.VirtualEntityService" singleton{
|
||||
|
||||
// DI
|
||||
property name="settingService" inject="id:settingService@cb";
|
||||
property name="cacheBox" inject="cachebox";
|
||||
property name="log" inject="logbox:logger:{this}";
|
||||
property name="customFieldService" inject="customFieldService@cb";
|
||||
property name="categoryService" inject="categoryService@cb";
|
||||
property name="commentService" inject="commentService@cb";
|
||||
property name="contentVersionService" inject="contentVersionService@cb";
|
||||
property name="authorService" inject="authorService@cb";
|
||||
property name="populator" inject="wirebox:populator";
|
||||
property name="systemUtil" inject="SystemUtil@cb";
|
||||
|
||||
/*
|
||||
* Constructor
|
||||
* @entityName.hint The content entity name to bind this service to.
|
||||
*/
|
||||
ContentService function init(entityName="cbContent"){
|
||||
// init it
|
||||
super.init(entityName=arguments.entityName, useQueryCaching=true);
|
||||
|
||||
// Test scope coloring in pygments
|
||||
this.colorTestVar = "Just for testing pygments!";
|
||||
cookie.colorTestVar = "";
|
||||
client.colorTestVar = ""
|
||||
session.colorTestVar = "";
|
||||
application.colorTestVar = "";
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all content caches
|
||||
* @async.hint Run it asynchronously or not, defaults to false
|
||||
*/
|
||||
function clearAllCaches(boolean async=false){
|
||||
var settings = settingService.getAllSettings(asStruct=true);
|
||||
// Get appropriate cache provider
|
||||
var cache = cacheBox.getCache( settings.cb_content_cacheName );
|
||||
cache.clearByKeySnippet(keySnippet="cb-content",async=arguments.async);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all page wrapper caches
|
||||
* @async.hint Run it asynchronously or not, defaults to false
|
||||
*/
|
||||
function clearAllPageWrapperCaches(boolean async=false){
|
||||
var settings = settingService.getAllSettings(asStruct=true);
|
||||
// Get appropriate cache provider
|
||||
var cache = cacheBox.getCache( settings.cb_content_cacheName );
|
||||
cache.clearByKeySnippet(keySnippet="cb-content-pagewrapper",async=arguments.async);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all page wrapper caches
|
||||
* @slug.hint The slug partial to clean on
|
||||
* @async.hint Run it asynchronously or not, defaults to false
|
||||
*/
|
||||
function clearPageWrapperCaches(required any slug, boolean async=false){
|
||||
var settings = settingService.getAllSettings(asStruct=true);
|
||||
// Get appropriate cache provider
|
||||
var cache = cacheBox.getCache( settings.cb_content_cacheName );
|
||||
cache.clearByKeySnippet(keySnippet="cb-content-pagewrapper-#arguments.slug#",async=arguments.async);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear a page wrapper cache
|
||||
* @slug.hint The slug to clean
|
||||
* @async.hint Run it asynchronously or not, defaults to false
|
||||
*/
|
||||
function clearPageWrapper(required any slug, boolean async=false){
|
||||
var settings = settingService.getAllSettings(asStruct=true);
|
||||
// Get appropriate cache provider
|
||||
var cache = cacheBox.getCache( settings.cb_content_cacheName );
|
||||
cache.clear("cb-content-pagewrapper-#arguments.slug#/");
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches published content with cool paramters, remember published content only
|
||||
* @searchTerm.hint The search term to search
|
||||
* @max.hint The maximum number of records to paginate
|
||||
* @offset.hint The offset in the pagination
|
||||
* @asQuery.hint Return as query or array of objects, defaults to array of objects
|
||||
* @sortOrder.hint The sorting of the search results, defaults to publishedDate DESC
|
||||
* @isPublished.hint Search for published, non-published or both content objects [true, false, 'all']
|
||||
* @searchActiveContent.hint Search only content titles or both title and active content. Defaults to both.
|
||||
*/
|
||||
function searchContent(
|
||||
any searchTerm="",
|
||||
numeric max=0,
|
||||
numeric offset=0,
|
||||
boolean asQuery=false,
|
||||
any sortOrder="publishedDate DESC",
|
||||
any isPublished=true,
|
||||
boolean searchActiveContent=true){
|
||||
|
||||
var results = {};
|
||||
var c = newCriteria();
|
||||
|
||||
// only published content
|
||||
if( isBoolean( arguments.isPublished ) ){
|
||||
// Published bit
|
||||
c.isEq( "isPublished", javaCast( "Boolean", arguments.isPublished ) );
|
||||
// Published eq true evaluate other params
|
||||
if( arguments.isPublished ){
|
||||
c.isLt("publishedDate", now() )
|
||||
.$or( c.restrictions.isNull("expireDate"), c.restrictions.isGT("expireDate", now() ) )
|
||||
.isEq("passwordProtection","");
|
||||
}
|
||||
}
|
||||
|
||||
// Search Criteria
|
||||
if( len( arguments.searchTerm ) ){
|
||||
// like disjunctions
|
||||
c.createAlias("activeContent","ac");
|
||||
// Do we search title and active content or just title?
|
||||
if( arguments.searchActiveContent ){
|
||||
c.$or( c.restrictions.like("title","%#arguments.searchTerm#%"),
|
||||
c.restrictions.like("ac.content", "%#arguments.searchTerm#%") );
|
||||
}
|
||||
else{
|
||||
c.like( "title", "%#arguments.searchTerm#%" );
|
||||
}
|
||||
}
|
||||
|
||||
// run criteria query and projections count
|
||||
results.count = c.count( "contentID" );
|
||||
results.content = c.resultTransformer( c.DISTINCT_ROOT_ENTITY )
|
||||
.list(offset=arguments.offset, max=arguments.max, sortOrder=arguments.sortOrder, asQuery=arguments.asQuery);
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
/********************************************* PRIVATE *********************************************/
|
||||
|
||||
|
||||
/**
|
||||
* Update the content hits
|
||||
* @contentID.hint The content id to update
|
||||
*/
|
||||
private function syncUpdateHits(required contentID){
|
||||
var q = new Query(sql="UPDATE cb_content SET hits = hits + 1 WHERE contentID = #arguments.contentID#").execute();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
private function closureTest(){
|
||||
methodCall(
|
||||
param1,
|
||||
function( arg1, required arg2 ){
|
||||
var settings = settingService.getAllSettings(asStruct=true);
|
||||
// Get appropriate cache provider
|
||||
var cache = cacheBox.getCache( settings.cb_content_cacheName );
|
||||
cache.clear("cb-content-pagewrapper-#arguments.slug#/");
|
||||
return this;
|
||||
},
|
||||
param1
|
||||
);
|
||||
}
|
||||
|
||||
private function StructliteralTest(){
|
||||
return {
|
||||
foo = bar,
|
||||
brad = 'Wood',
|
||||
func = function( arg1, required arg2 ){
|
||||
var settings = settingService.getAllSettings(asStruct=true);
|
||||
// Get appropriate cache provider
|
||||
var cache = cacheBox.getCache( settings.cb_content_cacheName );
|
||||
cache.clear("cb-content-pagewrapper-#arguments.slug#/");
|
||||
return this;
|
||||
},
|
||||
array = [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
'test',
|
||||
'testing',
|
||||
'testerton',
|
||||
{
|
||||
foo = true,
|
||||
brad = false,
|
||||
wood = null
|
||||
}
|
||||
],
|
||||
last = "final"
|
||||
};
|
||||
}
|
||||
|
||||
private function arrayliteralTest(){
|
||||
return [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
'test',
|
||||
'testing',
|
||||
'testerton',
|
||||
{
|
||||
foo = true,
|
||||
brad = false,
|
||||
wood = null
|
||||
},
|
||||
'testy-von-testavich'
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
18
samples/ColdFusion CFC/exampleTag.cfc
Normal file
18
samples/ColdFusion CFC/exampleTag.cfc
Normal file
@@ -0,0 +1,18 @@
|
||||
<cfcomponent>
|
||||
|
||||
<cffunction name="init" access="public" returntype="any">
|
||||
<cfargument name="arg1" type="any" required="true">
|
||||
<cfset this.myVariable = arguments.arg1>
|
||||
|
||||
<cfreturn this>
|
||||
</cffunction>
|
||||
|
||||
<cffunction name="testFunc" access="private" returntype="void">
|
||||
<cfargument name="arg1" type="any" required="false">
|
||||
|
||||
<cfif structKeyExists(arguments, "arg1")>
|
||||
<cfset writeoutput("Argument exists")>
|
||||
</cfif>
|
||||
</cffunction>
|
||||
|
||||
</cfcomponent>
|
||||
50
samples/ColdFusion/example.cfm
Normal file
50
samples/ColdFusion/example.cfm
Normal file
@@ -0,0 +1,50 @@
|
||||
<!--- cfcomment --->
|
||||
<!--- nested <!--- cfcomment ---> --->
|
||||
<!--- multi-line
|
||||
nested
|
||||
<!---
|
||||
cfcomment
|
||||
--->
|
||||
--->
|
||||
<!-- html comment -->
|
||||
<html>
|
||||
<head>
|
||||
<title>Date Functions</title>
|
||||
</head>
|
||||
<body>
|
||||
<cfset RightNow = Now()>
|
||||
<cfoutput>
|
||||
#RightNow#<br />
|
||||
#DateFormat(RightNow)#<br />
|
||||
#DateFormat(RightNow,"mm/dd/yy")#<br />
|
||||
#TimeFormat(RightNow)#<br />
|
||||
#TimeFormat(RightNow,"hh:mm tt")#<br />
|
||||
#IsDate(RightNow)#<br />
|
||||
#IsDate("January 31, 2007")#<br />
|
||||
#IsDate("foo")#<br />
|
||||
#DaysInMonth(RightNow)#
|
||||
</cfoutput>
|
||||
<cfset x="x">
|
||||
<cfset y="y">
|
||||
<cfset z="z">
|
||||
<cfoutput group="x">
|
||||
#x#
|
||||
<cfoutput>#y#</cfoutput>
|
||||
#z#
|
||||
</cfoutput>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<cfset person = "Paul">
|
||||
<cfset greeting = "Hello #person#">
|
||||
|
||||
<cfset greeting = "Hello" & " world!">
|
||||
<cfset a = 5>
|
||||
<cfset b = 10>
|
||||
<cfset c = a^b>
|
||||
<cfset c = a MOD b>
|
||||
<cfset c = a / b>
|
||||
<cfset c = a * b>
|
||||
<cfset c = a + b>
|
||||
<cfset c = a - b>
|
||||
<!--- <!-- another <!--- nested --> ---> comment --->
|
||||
Reference in New Issue
Block a user