ColdFusion 9 CFScript Comments Handle Name-Spaces... And Just About Anything

Posted January 26, 2010 at 8:45 AM by Ben Nadel

Tags: ColdFusion

The other night, I was lying in bed thinking about ColdFusion 9 (hot visual!) when I wondered if ColdFusion 9's new CFScript-based JavaDoc-style commenting would accommodate name-spaced attributes. These have been supported by the CFComponent and CFFunction tags for a long time, but I wasn't sure if the JavaDoc-style commenting would be able to parse the ":" used in the attribute name. As it turns out, ColdFusion 9 will handle name-spaces properly.... and just about any other type of attribute you throw at it.

  • <cfscript>
  •  
  • /**
  • * @access public
  • * @returnType any
  • * @output false
  • *
  • * @kinky:functionType TestFunction
  • * @123 456
  • * @ ????
  • * @> Something
  • * @# Awesome
  • **/
  • function doSomething(){
  • return( "Hello" );
  • }
  •  
  • </cfscript>
  •  
  • <!--- Output the function meta data. --->
  • <cfdump
  • var="#getMetaData( doSomething )#"
  • label="doSomething Meta Data"
  • />

As you can see above, not only am I trying a name-spaced attribute, I'm trying attributes that either don't make sense (no name - "@") or wouldn't even compile in the tag-based equivalent. And, when we run the code, we get the following output:

 
 
 
 
 
 
ColdFusion 9's CFScript-Based JavaDoc-Style Commenting Supports Name Spaces... And Just About Anything Else. 
 
 
 

I don't have much to say about this - it was just something I wanted to check.




Reader Comments

Jan 26, 2010 at 8:57 AM // reply »
45 Comments

It was that very concept that started me down the path of http://hyrule.riaforge.org. Little did I realize that you grab that info in previous versions, but as they say better late than never :)


Jan 26, 2010 at 9:07 AM // reply »
10,640 Comments

@Dan,

Being able to use custom attributes is definitely very cool. I was just surprised that it allowed me to do things like set the attribute "123". Although, I guess they aren't *really* attributes at that point - they're just pieces of meta-data.


Jan 26, 2010 at 9:41 AM // reply »
29 Comments

These all work in annotation-sytle attributes, but some don't work in script-only inline attributes. For example,

/**
* @mxunit:expectedException "myException"
*/
function anMXUnitTest() {}

works, but

function anMXUnitTest() mxunit:expectedException="myException" {}

does not work (throws an error).

Just an FYI.


Jan 26, 2010 at 9:43 AM // reply »
45 Comments

Good to know Bob, thanks!


Jan 26, 2010 at 9:45 AM // reply »
10,640 Comments

@Bob,

Good to know. On a side/related note, I happen to dislike the way inline attributes look post-signature... just seems awkward. I've started to actually like the way the JavaDocs style stuff works - it keeps the function itself simple.


Jan 26, 2010 at 9:52 AM // reply »
45 Comments

I could not agree more Ben, I think that syntax is really fugly ;)


Jan 26, 2010 at 9:54 AM // reply »
10,640 Comments

@Dan,

Right? Before the function, ok (public, return type); but after the method parameters / before the opening bracket... junky!


Jan 26, 2010 at 10:00 AM // reply »
29 Comments

@Ben and Dan,

We'll just have to agree to disagree about that one, boys ;-)

I understand that they might not look appealing, but I personally abhor the idea of putting code that affects execution into what appears to be a comment. Perhaps I'll come around one day.


Jan 26, 2010 at 10:02 AM // reply »
45 Comments

When you can show me that the execution is causing performance issues I will listen :) HA..


Jan 26, 2010 at 10:06 AM // reply »
10,640 Comments

@Bob, @Dan,

We're a good crowd here:

Dan loves JavaDocs.

Bob says JavaDocs are crazy.

Ben says, it's all moot since TAGS are where it's at :)


Jan 26, 2010 at 10:09 AM // reply »
45 Comments

I am going to buy the following domain and point it to your website Ben. HA ;)

http://www.tagsareforui.com


Jan 26, 2010 at 10:18 AM // reply »
10,640 Comments

@Dan,

Ha ha ha, awesome :) Tags FTW!


Jan 26, 2010 at 7:07 PM // reply »
2 Comments

I was thinking maybe if we could use it just like javadoc someone would even build a plugin for Eclipse called CFDoc. That would be rad.


Jan 29, 2010 at 4:59 PM // reply »
9 Comments

I agree with Bob. I don't like the idea to mixing code with comment! Just doesn't seem right. Also, I'm scared that a noob may look at it as comment and remove it :)...



Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
InVision App - Prototyping Made Beautiful With Prototyping Tools Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
Feb 12, 2012 at 3:37 AM
Learning ColdFusion 8: CFImage Part III - Watermarks And Transparency
Hi Ben, Just to ask currently it is placed bottom right corner, if i need to replace the same rendered image on the bottom left side or in the bottom center, how that can be calculated. bottom ce ... read »
Feb 11, 2012 at 9:29 PM
Use jQuery's SlideDown() With Fixed-Width Elements To Prevent Jumping
I can't say how glad I am that I found your post. Thank you very much. ... read »
Feb 10, 2012 at 7:21 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
Update! Instead of $(eval(options.insertAfter)).after(data['insertData']); I now use: var ajaxNode = document.createElement('span'); var parent = $(eval(options.insertAfter))[0].parentNode; ... read »
Feb 10, 2012 at 6:18 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
encountered this same, what I consider, jQuery bug last week. I'm building a site in which I load some content via AJAX. This content contains Linkedin share button placeholders which Linkedin API ne ... read »
Feb 10, 2012 at 11:30 AM
Cross-Origin Resource Sharing (CORS) AJAX Requests Between jQuery And Node.js
After you understand the concepts here, this is an awesome cheatsheet for enabling CORS in just about anything http://enable-cors.org/ ... read »
JM
Feb 10, 2012 at 9:10 AM
My Safari Browser SQLite Database Hello World Example
@Amy, Here is a very good tutorial on how to use JOIN: http://www.sqltutorial.org/sqljoin-innerjoin.aspx ... read »
Feb 10, 2012 at 4:42 AM
Building A Twitter-Inspired RESTful API Architecture In ColdFusion
This is great, very useful Ben. I spotted a small typo in the api.cgm listing: <cfthrow type="Unauthroized" /> Cheers Stefan ... read »
Feb 9, 2012 at 10:35 PM
CFDirectory Filtering Uses Pipe Character For Multiple Filters (Thanks Steve Withington)
I was wondering if there would be a filter you could apply so that you got everything but what you included in the filter. As in show me all docs that are not a .pdf. ... read »