Think-Lab
tag:think-lab.net,2012:/blog/
Matt Graf's web development blog on ColdFusion, jQuery, AJAX, SQL, and anything web application development.
Mango 1.5
Blog Refreshed Part Two
urn:uuid:9C632A8D-D56B-AA5C-3A7B442AC0C49B3A
2011-01-20T07:01:00Z
2011-01-19T08:01:00Z
<p>
This a shorter post, and maybe more of just a Mango Blog plugin post.
</p>
<p>
So in part one I went of the tweaks that I made to help me for entering and editing blog posts. Now I will show you what I did to fixed the code formatting. Again I created a plugin, the plugin that I created using coldFish(coldfish.riaforge.org) to format the code in my blog entries. Here is my plugin xml.
</p>
Matt Graf
<p>
This a shorter post, and maybe more of just a Mango Blog plugin post.
</p>
<p>
So in part one I went of the tweaks that I made to help me for entering and editing blog posts. Now I will show you what I did to fixed the code formatting. Again I created a plugin, the plugin that I created using coldFish(coldfish.riaforge.org) to format the code in my blog entries. Here is my plugin xml.
</p>
<div class='code'>
<iframe id='print_frame_011D2E659876F10BA3D886560DCF6D0B' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_011D2E659876F10BA3D886560DCF6D0B() {
var temp = document.getElementById('htmlencoded_plain_011D2E659876F10BA3D886560DCF6D0B').style.display;
document.getElementById('htmlencoded_plain_011D2E659876F10BA3D886560DCF6D0B').style.display=document.getElementById('formatted_code_011D2E659876F10BA3D886560DCF6D0B').style.display;
document.getElementById('formatted_code_011D2E659876F10BA3D886560DCF6D0B').style.display=temp;
if (temp=='none') {
document.getElementById('view_011D2E659876F10BA3D886560DCF6D0B').innerHTML='view formatted';
} else {
document.getElementById('view_011D2E659876F10BA3D886560DCF6D0B').innerHTML='view plain';
}
}
function copy_to_clipboard_011D2E659876F10BA3D886560DCF6D0B() {
var code=unescape(document.getElementById('htmlencoded_plain_011D2E659876F10BA3D886560DCF6D0B').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_011D2E659876F10BA3D886560DCF6D0B() {
window.frames['print_frame_011D2E659876F10BA3D886560DCF6D0B'].document.body.innerHTML = document.getElementById('formatted_code_011D2E659876F10BA3D886560DCF6D0B').innerHTML;
window.frames['print_frame_011D2E659876F10BA3D886560DCF6D0B'].focus();
window.frames['print_frame_011D2E659876F10BA3D886560DCF6D0B'].print();
}
function show_about_011D2E659876F10BA3D886560DCF6D0B() {
document.getElementById('about_011D2E659876F10BA3D886560DCF6D0B').style.display='inline';
window.setTimeout('hide_about_011D2E659876F10BA3D886560DCF6D0B();', 4000);
}
function hide_about_011D2E659876F10BA3D886560DCF6D0B() {
document.getElementById('about_011D2E659876F10BA3D886560DCF6D0B').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_011D2E659876F10BA3D886560DCF6D0B()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_011D2E659876F10BA3D886560DCF6D0B'>view plain</a>
<a href='javascript:copy_to_clipboard_011D2E659876F10BA3D886560DCF6D0B()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_011D2E659876F10BA3D886560DCF6D0B'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_011D2E659876F10BA3D886560DCF6D0B').style.display='inline';}</script>
<a href='javascript:print_011D2E659876F10BA3D886560DCF6D0B()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_011D2E659876F10BA3D886560DCF6D0B()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_011D2E659876F10BA3D886560DCF6D0B' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_011D2E659876F10BA3D886560DCF6D0B' style='display:none;color:#000'><?xml version="1.0" encoding="UTF-8"?><br /><plugin id="com.asfusion.mango.plugins.coidFish" name="Cold Fish" version="0.1" provider-name="Think-lab" class="coldfish.Handler"><br /><description><![CDATA[<br />This plugin is used to format code within code tags using coldfish. url - coldfish.riaforge.org<br />]]><br /></description><br /><br /> <requiresVersion match="greaterOrEqual">1.5</requiresVersion><br /> <listens><br /> <event name="postGetContent" type="synch" priority="1" /><br /> </listens><br /></plugin></span>
<span id='formatted_code_011D2E659876F10BA3D886560DCF6D0B' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#000099'><?xml version=<span style='color:#0000CC'>"1.0"</span> encoding=<span style='color:#0000CC'>"UTF-8"</span>?></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span><span style='color:#000099'><plugin id=<span style='color:#0000CC'>"com.asfusion.mango.plugins.coidFish"</span> name=<span style='color:#0000CC'>"Cold Fish"</span> version=<span style='color:#0000CC'>"0.1"</span> provider-name=<span style='color:#0000CC'>"Think-lab"</span> class=<span style='color:#0000CC'>"coldfish.Handler"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span><span style='color:#000099'><description></span><span style='color:#000099'><![CDATA[<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span>This plugin is used to format code within code tags using coldfish. url - coldfish.riaforge.org<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span>]]></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span><span style='color:#000099'></description></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span>  <span style='color:#000099'><requiresVersion match=<span style='color:#0000CC'>"greaterOrEqual"</span>></span>1.5<span style='color:#000099'></requiresVersion></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span>  <span style='color:#000099'><listens></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span>   <span style='color:#000099'><event name=<span style='color:#0000CC'>"postGetContent"</span> type=<span style='color:#0000CC'>"synch"</span> priority=<span style='color:#0000CC'>"1"</span> /></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span>  <span style='color:#000099'></listens></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span><span style='color:#000099'></plugin></span><br /></span></div>
<p>
This plugin listening for the "postGetContent" event.
</p>
<p>
Now time for the handler code. In the init function we are setting "variables.coldfish" equal to the coldFish component.
</p>
<div class='code'>
<iframe id='print_frame_DF08617FB568067718A9CC55B8F619D0' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_DF08617FB568067718A9CC55B8F619D0() {
var temp = document.getElementById('htmlencoded_plain_DF08617FB568067718A9CC55B8F619D0').style.display;
document.getElementById('htmlencoded_plain_DF08617FB568067718A9CC55B8F619D0').style.display=document.getElementById('formatted_code_DF08617FB568067718A9CC55B8F619D0').style.display;
document.getElementById('formatted_code_DF08617FB568067718A9CC55B8F619D0').style.display=temp;
if (temp=='none') {
document.getElementById('view_DF08617FB568067718A9CC55B8F619D0').innerHTML='view formatted';
} else {
document.getElementById('view_DF08617FB568067718A9CC55B8F619D0').innerHTML='view plain';
}
}
function copy_to_clipboard_DF08617FB568067718A9CC55B8F619D0() {
var code=unescape(document.getElementById('htmlencoded_plain_DF08617FB568067718A9CC55B8F619D0').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_DF08617FB568067718A9CC55B8F619D0() {
window.frames['print_frame_DF08617FB568067718A9CC55B8F619D0'].document.body.innerHTML = document.getElementById('formatted_code_DF08617FB568067718A9CC55B8F619D0').innerHTML;
window.frames['print_frame_DF08617FB568067718A9CC55B8F619D0'].focus();
window.frames['print_frame_DF08617FB568067718A9CC55B8F619D0'].print();
}
function show_about_DF08617FB568067718A9CC55B8F619D0() {
document.getElementById('about_DF08617FB568067718A9CC55B8F619D0').style.display='inline';
window.setTimeout('hide_about_DF08617FB568067718A9CC55B8F619D0();', 4000);
}
function hide_about_DF08617FB568067718A9CC55B8F619D0() {
document.getElementById('about_DF08617FB568067718A9CC55B8F619D0').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_DF08617FB568067718A9CC55B8F619D0()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_DF08617FB568067718A9CC55B8F619D0'>view plain</a>
<a href='javascript:copy_to_clipboard_DF08617FB568067718A9CC55B8F619D0()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_DF08617FB568067718A9CC55B8F619D0'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_DF08617FB568067718A9CC55B8F619D0').style.display='inline';}</script>
<a href='javascript:print_DF08617FB568067718A9CC55B8F619D0()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_DF08617FB568067718A9CC55B8F619D0()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_DF08617FB568067718A9CC55B8F619D0' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_DF08617FB568067718A9CC55B8F619D0' style='display:none;color:#000'><cffunction name="init" access="public" output="false" returntype="any"><br /> <br /> <cfargument name="mainManager" type="any" required="true" /><br /> <cfargument name="preferences" type="any" required="true" /><br /> <br /> <cfset setManager(arguments.mainManager) /><br /> <cfset setPreferencesManager(arguments.preferences) /> <br /> <br /> <cfset variables.coldfish = createObject("component","coldfish").init()/><br /> <cfreturn this/><br /> <br /></cffunction></span>
<span id='formatted_code_DF08617FB568067718A9CC55B8F619D0' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cffunction name=<span style='color:#0000CC'>"init"</span> access=<span style='color:#0000CC'>"public"</span> output=<span style='color:#0000CC'>"false"</span> returntype=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"mainManager"</span> type=<span style='color:#0000CC'>"any"</span> required=<span style='color:#0000CC'>"true"</span> /></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"preferences"</span> type=<span style='color:#0000CC'>"any"</span> required=<span style='color:#0000CC'>"true"</span> /></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> <span style='color:#990033'><cfset<span style='color:#000000'> setManager(arguments.mainManager) /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> <span style='color:#990033'><cfset<span style='color:#000000'> setPreferencesManager(arguments.preferences) /</span>></span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> <span style='color:#990033'><cfset<span style='color:#000000'> variables.coldfish = <span style='color:blue'>createObject</span>(<span style='color:#006600'>"component"</span>,<span style='color:#006600'>"coldfish"</span>).init()/</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> <span style='color:#990033'><cfreturn this/></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span><span style='color:#990033'></cffunction></span><br /></span></div>
<p>
In the processEvent function I am using some code from BlogCFC from the blog component renderEntry function, thanks Ray. The only thing that I really want to point out in the function below is how I am overriding the content variable which is where the blog post is stored "arguments.event.accessObject.content". Also in the code below added spaces within the < code > tags for this post only.
</p>
<div class='code'>
<iframe id='print_frame_610B80F36211B15BFA130130E4FD03DF' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_610B80F36211B15BFA130130E4FD03DF() {
var temp = document.getElementById('htmlencoded_plain_610B80F36211B15BFA130130E4FD03DF').style.display;
document.getElementById('htmlencoded_plain_610B80F36211B15BFA130130E4FD03DF').style.display=document.getElementById('formatted_code_610B80F36211B15BFA130130E4FD03DF').style.display;
document.getElementById('formatted_code_610B80F36211B15BFA130130E4FD03DF').style.display=temp;
if (temp=='none') {
document.getElementById('view_610B80F36211B15BFA130130E4FD03DF').innerHTML='view formatted';
} else {
document.getElementById('view_610B80F36211B15BFA130130E4FD03DF').innerHTML='view plain';
}
}
function copy_to_clipboard_610B80F36211B15BFA130130E4FD03DF() {
var code=unescape(document.getElementById('htmlencoded_plain_610B80F36211B15BFA130130E4FD03DF').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_610B80F36211B15BFA130130E4FD03DF() {
window.frames['print_frame_610B80F36211B15BFA130130E4FD03DF'].document.body.innerHTML = document.getElementById('formatted_code_610B80F36211B15BFA130130E4FD03DF').innerHTML;
window.frames['print_frame_610B80F36211B15BFA130130E4FD03DF'].focus();
window.frames['print_frame_610B80F36211B15BFA130130E4FD03DF'].print();
}
function show_about_610B80F36211B15BFA130130E4FD03DF() {
document.getElementById('about_610B80F36211B15BFA130130E4FD03DF').style.display='inline';
window.setTimeout('hide_about_610B80F36211B15BFA130130E4FD03DF();', 4000);
}
function hide_about_610B80F36211B15BFA130130E4FD03DF() {
document.getElementById('about_610B80F36211B15BFA130130E4FD03DF').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_610B80F36211B15BFA130130E4FD03DF()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_610B80F36211B15BFA130130E4FD03DF'>view plain</a>
<a href='javascript:copy_to_clipboard_610B80F36211B15BFA130130E4FD03DF()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_610B80F36211B15BFA130130E4FD03DF'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_610B80F36211B15BFA130130E4FD03DF').style.display='inline';}</script>
<a href='javascript:print_610B80F36211B15BFA130130E4FD03DF()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_610B80F36211B15BFA130130E4FD03DF()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_610B80F36211B15BFA130130E4FD03DF' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_610B80F36211B15BFA130130E4FD03DF' style='display:none;color:#000'><cffunction name="processEvent" hint="Synchronous event handling" access="public" output="false" returntype="any"><br /> <cfargument name="event" type="any" required="true" /><br /><br /> <cfset var eventName = arguments.event.getName() /> <br /> <cfset var data = "" /><br /> <cfset var newBody = "" /><br /> <cfset var tmpContent = "" /><br /> <cfset var newContent = "" /><br /> <cfset var counter = 0 /><br /> <cfset var codeblock = "" /><br /> <cfset var codeportion = "" /><br /> <cfset var result = "" /><br /> <br /> <br /> <cfif eventName EQ "postGetContent" OR eventName EQ "postGetExcerpt"><br /> <cfset data = arguments.event.accessObject /><br /> <cfset tmpContent = data.content /><br /> <br /> <!--- Check for code blocks ---><br /> <cfif findNoCase("start_code",tmpContent) and findNoCase("< / end_code >",tmpContent)><br /> <cfset counter = findNoCase("< start_code >",tmpContent)><br /> <cfloop condition="counter gte 1"><br /> <cfset codeblock = reFindNoCase("(?s)(.*)(start_code)(.*)(</ end_code >)(.*)",tmpContent,1,1)><br /> <cfif arrayLen(codeblock.len) gte 6><br /> <cfset codeportion = mid(tmpContent, codeblock.pos[4], codeblock.len[4])><br /> <cfif len(trim(codeportion))><br /> <cfset result = variables.coldfish.formatString(trim(codeportion))><br /> <cfset result = "&lt; div class='code' &gt;#result#&lt; /div &gt;"><br /> <cfelse><br /> <cfset result = ""><br /> </cfif><br /> <cfset newbody = mid(tmpContent, 1, codeblock.len[2]) & result & mid(tmpContent,codeblock.pos[6],codeblock.len[6])><br /> <br /> <cfset tmpContent = newbody><br /> <cfset counter = findNoCase("start_code",tmpContent,counter)><br /> <cfelse><br /> <!--- bad crap, maybe < start_code > and no ender, or maybe < / end_code >< start_code > ---><br /> <cfset counter = 0><br /> </cfif><br /> </cfloop><br /> <cfset data.content = tmpContent /><br /> <br /> </cfif><br /> </cfif><br /><br /> <cfreturn arguments.event /><br /> <br /> </cffunction></span>
<span id='formatted_code_610B80F36211B15BFA130130E4FD03DF' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cffunction name=<span style='color:#0000CC'>"processEvent"</span> hint=<span style='color:#0000CC'>"Synchronous event handling"</span> access=<span style='color:#0000CC'>"public"</span> output=<span style='color:#0000CC'>"false"</span> returntype=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"event"</span> type=<span style='color:#0000CC'>"any"</span> required=<span style='color:#0000CC'>"true"</span> /></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#990033'><cfset<span style='color:#000000'> var eventName  = arguments.event.getName() /</span>></span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <span style='color:#990033'><cfset<span style='color:#000000'> var data  = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> <span style='color:#990033'><cfset<span style='color:#000000'> var newBody = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> <span style='color:#990033'><cfset<span style='color:#000000'> var tmpContent = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> <span style='color:#990033'><cfset<span style='color:#000000'> var newContent = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> <span style='color:#990033'><cfset<span style='color:#000000'> var counter = 0 /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> <span style='color:#990033'><cfset<span style='color:#000000'> var codeblock = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <span style='color:#990033'><cfset<span style='color:#000000'> var codeportion = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> <span style='color:#990033'><cfset<span style='color:#000000'> var result = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> <span style='color:#990033'><cfif eventName EQ <span style='color:#0000CC'>"postGetContent"</span> OR eventName EQ <span style='color:#0000CC'>"postGetExcerpt"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> <span style='color:#990033'><cfset<span style='color:#000000'> data  = arguments.event.accessObject /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span> <span style='color:#990033'><cfset<span style='color:#000000'> tmpContent  = data.content  /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span> <span style='color:#333;background-color:#FF0'><!--- Check for code blocks ---></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span> <span style='color:#990033'><cfif findNoCase(<span style='color:#0000CC'>"start_code"</span>,tmpContent) and findNoCase(<span style='color:#0000CC'>"< / end_code >"</span>,tmpContent)></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span> <span style='color:#990033'><cfset<span style='color:#000000'> counter = <span style='color:blue'>findNoCase</span>(<span style='color:#006600'>"< start_code </span>></span>"</span>,tmpContent)></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>22</span> <span style='color:#990033'><cfloop condition=<span style='color:#0000CC'>"counter gte 1"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>23</span>                 <span style='color:#990033'><cfset<span style='color:#000000'> codeblock = <span style='color:blue'>reFindNoCase</span>(<span style='color:#006600'>"(?s)(.*)(start_code)(.*)(</ end_code </span>></span>)(.*)"</span>,tmpContent,1,1)></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>24</span> <span style='color:#990033'><cfif arrayLen(codeblock.len) gte 6></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>25</span>                     <span style='color:#990033'><cfset<span style='color:#000000'> codeportion = <span style='color:blue'>mid</span>(tmpContent, codeblock.pos[4], codeblock.len[4])</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>26</span>                     <span style='color:#990033'><cfif len(trim(codeportion))></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>27</span> <span style='color:#990033'><cfset<span style='color:#000000'> result = variables.coldfish.formatString(<span style='color:blue'>trim</span>(codeportion))</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>28</span> <span style='color:#990033'><cfset<span style='color:#000000'> result = <span style='color:#006600'>"&lt; div class='code' &gt;#result#&lt; /div &gt;"</span></span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>29</span> <span style='color:#990033'><cfelse></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>30</span> <span style='color:#990033'><cfset<span style='color:#000000'> result = <span style='color:#006600'>""</span></span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>31</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>32</span> <span style='color:#990033'><cfset<span style='color:#000000'> newbody = <span style='color:blue'>mid</span>(tmpContent, 1, codeblock.len[2]) & result & <span style='color:blue'>mid</span>(tmpContent,codeblock.pos[6],codeblock.len[6])</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>33</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>34</span>                     <span style='color:#990033'><cfset<span style='color:#000000'> tmpContent = newbody</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>35</span> <span style='color:#990033'><cfset<span style='color:#000000'> counter = <span style='color:blue'>findNoCase</span>(<span style='color:#006600'>"start_code"</span>,tmpContent,counter)</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>36</span> <span style='color:#990033'><cfelse></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>37</span> <span style='color:#333;background-color:#FF0'><!--- bad crap, maybe < start_code > and no ender, or maybe < / end_code >< start_code > ---></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>38</span> <span style='color:#990033'><cfset<span style='color:#000000'> counter = 0</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>39</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>40</span> <span style='color:#990033'></cfloop></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>41</span> <span style='color:#990033'><cfset<span style='color:#000000'> data.content = tmpContent /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>42</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>43</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>44</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>45</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>46</span> <span style='color:#990033'><cfreturn arguments.event /></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>47</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>48</span> <span style='color:#990033'></cffunction></span><br /></span></div>
How to get one row in MySQL and MS SQL Server
urn:uuid:9F3ADF49-D56B-AA5C-3B3AE61437A9FE07
2011-01-19T08:01:20Z
2011-01-19T09:01:00Z
Matt Graf
<p>
This is just reference for me, I am always forgetting how get just one row in MySQL.
</p>
<p><strong>Select one row with MySQL:</strong></p>
<p>
<div class='code'>
<iframe id='print_frame_9C0DD2B4523962A749D140690D827816' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_9C0DD2B4523962A749D140690D827816() {
var temp = document.getElementById('htmlencoded_plain_9C0DD2B4523962A749D140690D827816').style.display;
document.getElementById('htmlencoded_plain_9C0DD2B4523962A749D140690D827816').style.display=document.getElementById('formatted_code_9C0DD2B4523962A749D140690D827816').style.display;
document.getElementById('formatted_code_9C0DD2B4523962A749D140690D827816').style.display=temp;
if (temp=='none') {
document.getElementById('view_9C0DD2B4523962A749D140690D827816').innerHTML='view formatted';
} else {
document.getElementById('view_9C0DD2B4523962A749D140690D827816').innerHTML='view plain';
}
}
function copy_to_clipboard_9C0DD2B4523962A749D140690D827816() {
var code=unescape(document.getElementById('htmlencoded_plain_9C0DD2B4523962A749D140690D827816').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_9C0DD2B4523962A749D140690D827816() {
window.frames['print_frame_9C0DD2B4523962A749D140690D827816'].document.body.innerHTML = document.getElementById('formatted_code_9C0DD2B4523962A749D140690D827816').innerHTML;
window.frames['print_frame_9C0DD2B4523962A749D140690D827816'].focus();
window.frames['print_frame_9C0DD2B4523962A749D140690D827816'].print();
}
function show_about_9C0DD2B4523962A749D140690D827816() {
document.getElementById('about_9C0DD2B4523962A749D140690D827816').style.display='inline';
window.setTimeout('hide_about_9C0DD2B4523962A749D140690D827816();', 4000);
}
function hide_about_9C0DD2B4523962A749D140690D827816() {
document.getElementById('about_9C0DD2B4523962A749D140690D827816').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_9C0DD2B4523962A749D140690D827816()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_9C0DD2B4523962A749D140690D827816'>view plain</a>
<a href='javascript:copy_to_clipboard_9C0DD2B4523962A749D140690D827816()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_9C0DD2B4523962A749D140690D827816'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_9C0DD2B4523962A749D140690D827816').style.display='inline';}</script>
<a href='javascript:print_9C0DD2B4523962A749D140690D827816()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_9C0DD2B4523962A749D140690D827816()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_9C0DD2B4523962A749D140690D827816' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_9C0DD2B4523962A749D140690D827816' style='display:none;color:#000'>SELECT column FROM table<br />LIMIT 1</span>
<span id='formatted_code_9C0DD2B4523962A749D140690D827816' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>SELECT column FROM table<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>LIMIT 1<br /></span></div></p>
<p><strong>Select one row with Microsoft SQL Server:</strong></p>
<p>
<div class='code'>
<iframe id='print_frame_493F346279A1437A3F4A9B258065A84A' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_493F346279A1437A3F4A9B258065A84A() {
var temp = document.getElementById('htmlencoded_plain_493F346279A1437A3F4A9B258065A84A').style.display;
document.getElementById('htmlencoded_plain_493F346279A1437A3F4A9B258065A84A').style.display=document.getElementById('formatted_code_493F346279A1437A3F4A9B258065A84A').style.display;
document.getElementById('formatted_code_493F346279A1437A3F4A9B258065A84A').style.display=temp;
if (temp=='none') {
document.getElementById('view_493F346279A1437A3F4A9B258065A84A').innerHTML='view formatted';
} else {
document.getElementById('view_493F346279A1437A3F4A9B258065A84A').innerHTML='view plain';
}
}
function copy_to_clipboard_493F346279A1437A3F4A9B258065A84A() {
var code=unescape(document.getElementById('htmlencoded_plain_493F346279A1437A3F4A9B258065A84A').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_493F346279A1437A3F4A9B258065A84A() {
window.frames['print_frame_493F346279A1437A3F4A9B258065A84A'].document.body.innerHTML = document.getElementById('formatted_code_493F346279A1437A3F4A9B258065A84A').innerHTML;
window.frames['print_frame_493F346279A1437A3F4A9B258065A84A'].focus();
window.frames['print_frame_493F346279A1437A3F4A9B258065A84A'].print();
}
function show_about_493F346279A1437A3F4A9B258065A84A() {
document.getElementById('about_493F346279A1437A3F4A9B258065A84A').style.display='inline';
window.setTimeout('hide_about_493F346279A1437A3F4A9B258065A84A();', 4000);
}
function hide_about_493F346279A1437A3F4A9B258065A84A() {
document.getElementById('about_493F346279A1437A3F4A9B258065A84A').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_493F346279A1437A3F4A9B258065A84A()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_493F346279A1437A3F4A9B258065A84A'>view plain</a>
<a href='javascript:copy_to_clipboard_493F346279A1437A3F4A9B258065A84A()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_493F346279A1437A3F4A9B258065A84A'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_493F346279A1437A3F4A9B258065A84A').style.display='inline';}</script>
<a href='javascript:print_493F346279A1437A3F4A9B258065A84A()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_493F346279A1437A3F4A9B258065A84A()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_493F346279A1437A3F4A9B258065A84A' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_493F346279A1437A3F4A9B258065A84A' style='display:none;color:#000'>SELECT TOP 1 column FROM table</span>
<span id='formatted_code_493F346279A1437A3F4A9B258065A84A' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>SELECT TOP 1 column FROM table<br /></span></div></p>
Blog Refreshed Part One
urn:uuid:99B6F35F-D56B-AA5C-37806451E23C46DC
2011-01-19T07:01:00Z
2011-01-19T08:01:00Z
<p>Well I have refreshed the theme on my blog. I wanted to switch to blogCFC because the tinyMCE was messing up my posts when I had code in a post. So I attempted to install blogCFC on the server where my site is hosted and I just could not get it to work. The problem that I had was with the SQL server scripts. I am on an older version on SQL server and it looks like the scripts were exported/written for SQL Server 2008, I did not want to change the scripts because if there was an update later for blogCFC, most likely I would not remember that I modified the SQL script. So I decided that I would figure out how to make Mango Blog work better for me starting with the tinyMCE and then on to the actual formatting of the rendered code.
</p>
Matt Graf
<p>Well I have refreshed the theme on my blog. I wanted to switch to blogCFC because the tinyMCE was messing up my posts when I had code in a post. So I attempted to install blogCFC on the server where my site is hosted and I just could not get it to work. The problem that I had was with the SQL server scripts. I am on an older version on SQL server and it looks like the scripts were exported/written for SQL Server 2008, I did not want to change the scripts because if there was an update later for blogCFC, most likely I would not remember that I modified the SQL script. So I decided that I would figure out how to make Mango Blog work better for me starting with the tinyMCE and then on to the actual formatting of the rendered code.
</p>
<br />
<p>
So how did I do this? Well in Mango Blog they have this really cool feature called plugins that listen for events. I decided I would write a simple plugin that removes the tinyMCE if the event sees a URL variable called “noEditor” and the events that I am listening on are ( "beforeAdminPostContentEnd", "beforeAdminHeaderEnd" ). The first thing that you need to do is create a plugin.xml file, here is what mine looks like.
</p>
<div class='code'>
<iframe id='print_frame_8D2AB156286C10E01D3617C52FF5C054' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_8D2AB156286C10E01D3617C52FF5C054() {
var temp = document.getElementById('htmlencoded_plain_8D2AB156286C10E01D3617C52FF5C054').style.display;
document.getElementById('htmlencoded_plain_8D2AB156286C10E01D3617C52FF5C054').style.display=document.getElementById('formatted_code_8D2AB156286C10E01D3617C52FF5C054').style.display;
document.getElementById('formatted_code_8D2AB156286C10E01D3617C52FF5C054').style.display=temp;
if (temp=='none') {
document.getElementById('view_8D2AB156286C10E01D3617C52FF5C054').innerHTML='view formatted';
} else {
document.getElementById('view_8D2AB156286C10E01D3617C52FF5C054').innerHTML='view plain';
}
}
function copy_to_clipboard_8D2AB156286C10E01D3617C52FF5C054() {
var code=unescape(document.getElementById('htmlencoded_plain_8D2AB156286C10E01D3617C52FF5C054').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_8D2AB156286C10E01D3617C52FF5C054() {
window.frames['print_frame_8D2AB156286C10E01D3617C52FF5C054'].document.body.innerHTML = document.getElementById('formatted_code_8D2AB156286C10E01D3617C52FF5C054').innerHTML;
window.frames['print_frame_8D2AB156286C10E01D3617C52FF5C054'].focus();
window.frames['print_frame_8D2AB156286C10E01D3617C52FF5C054'].print();
}
function show_about_8D2AB156286C10E01D3617C52FF5C054() {
document.getElementById('about_8D2AB156286C10E01D3617C52FF5C054').style.display='inline';
window.setTimeout('hide_about_8D2AB156286C10E01D3617C52FF5C054();', 4000);
}
function hide_about_8D2AB156286C10E01D3617C52FF5C054() {
document.getElementById('about_8D2AB156286C10E01D3617C52FF5C054').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_8D2AB156286C10E01D3617C52FF5C054()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_8D2AB156286C10E01D3617C52FF5C054'>view plain</a>
<a href='javascript:copy_to_clipboard_8D2AB156286C10E01D3617C52FF5C054()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_8D2AB156286C10E01D3617C52FF5C054'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_8D2AB156286C10E01D3617C52FF5C054').style.display='inline';}</script>
<a href='javascript:print_8D2AB156286C10E01D3617C52FF5C054()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_8D2AB156286C10E01D3617C52FF5C054()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_8D2AB156286C10E01D3617C52FF5C054' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_8D2AB156286C10E01D3617C52FF5C054' style='display:none;color:#000'><?xml version="1.0" encoding="UTF-8"?><br /><plugin id="com.asfusion.mango.plugins.thinklab" name="thinklab" version="0.1" provider-name="thinklab" class="thinklab.Handler"><br /><description><![CDATA[<br /> This plugin is fixes some of the admin UI bugs for me. <br /> Bug 1 in Google Chrome the left fieldset which, is the blog post content is to big and gets pushed to the bottom of the page.<br /><br /> Bug 2 I wanted to be able to turn off the tinyMCE with a URL variable. <br /><br />]]><br /></description><br /><br /> <requiresVersion match="greaterOrEqual">1.5</requiresVersion><br /> <listens><br /> <event name="beforeAdminPostContentEnd" type="synch" priority="1" /><br /> </listens><br /></plugin></span>
<span id='formatted_code_8D2AB156286C10E01D3617C52FF5C054' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#000099'><?xml version=<span style='color:#0000CC'>"1.0"</span> encoding=<span style='color:#0000CC'>"UTF-8"</span>?></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span><span style='color:#000099'><plugin id=<span style='color:#0000CC'>"com.asfusion.mango.plugins.thinklab"</span> name=<span style='color:#0000CC'>"thinklab"</span> version=<span style='color:#0000CC'>"0.1"</span> provider-name=<span style='color:#0000CC'>"thinklab"</span> class=<span style='color:#0000CC'>"thinklab.Handler"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span><span style='color:#000099'><description></span><span style='color:#000099'><![CDATA[<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> This plugin is fixes some of the admin UI bugs for me. <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> Bug 1 in Google Chrome the left fieldset which, is the blog post content is to big and gets pushed to the bottom of the page.<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> Bug 2 I wanted to be able to turn off the tinyMCE with a URL variable. <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span>]]></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span><span style='color:#000099'></description></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span>  <span style='color:#000099'><requiresVersion match=<span style='color:#0000CC'>"greaterOrEqual"</span>></span>1.5<span style='color:#000099'></requiresVersion></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span>  <span style='color:#000099'><listens></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span>   <span style='color:#000099'><event name=<span style='color:#0000CC'>"beforeAdminPostContentEnd"</span> type=<span style='color:#0000CC'>"synch"</span> priority=<span style='color:#0000CC'>"1"</span> /></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span>  <span style='color:#000099'></listens></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span><span style='color:#000099'></plugin></span><br /></span></div>
<p>
The next step is to create a handler.cfc file this is where you add you CFML. I am not going to go into what all the functions do because you can find the Mango Blog documentation http://www.mangoblog.org/docs/documentation/extending-mango/creating-a-plugin. The function that I am using is the function that is for "Synchronous event handling" processEvent. Here is my function.
</p>
<div class='code'>
<iframe id='print_frame_E8B911F7D0FDA62A96546EE5AB67947E' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_E8B911F7D0FDA62A96546EE5AB67947E() {
var temp = document.getElementById('htmlencoded_plain_E8B911F7D0FDA62A96546EE5AB67947E').style.display;
document.getElementById('htmlencoded_plain_E8B911F7D0FDA62A96546EE5AB67947E').style.display=document.getElementById('formatted_code_E8B911F7D0FDA62A96546EE5AB67947E').style.display;
document.getElementById('formatted_code_E8B911F7D0FDA62A96546EE5AB67947E').style.display=temp;
if (temp=='none') {
document.getElementById('view_E8B911F7D0FDA62A96546EE5AB67947E').innerHTML='view formatted';
} else {
document.getElementById('view_E8B911F7D0FDA62A96546EE5AB67947E').innerHTML='view plain';
}
}
function copy_to_clipboard_E8B911F7D0FDA62A96546EE5AB67947E() {
var code=unescape(document.getElementById('htmlencoded_plain_E8B911F7D0FDA62A96546EE5AB67947E').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_E8B911F7D0FDA62A96546EE5AB67947E() {
window.frames['print_frame_E8B911F7D0FDA62A96546EE5AB67947E'].document.body.innerHTML = document.getElementById('formatted_code_E8B911F7D0FDA62A96546EE5AB67947E').innerHTML;
window.frames['print_frame_E8B911F7D0FDA62A96546EE5AB67947E'].focus();
window.frames['print_frame_E8B911F7D0FDA62A96546EE5AB67947E'].print();
}
function show_about_E8B911F7D0FDA62A96546EE5AB67947E() {
document.getElementById('about_E8B911F7D0FDA62A96546EE5AB67947E').style.display='inline';
window.setTimeout('hide_about_E8B911F7D0FDA62A96546EE5AB67947E();', 4000);
}
function hide_about_E8B911F7D0FDA62A96546EE5AB67947E() {
document.getElementById('about_E8B911F7D0FDA62A96546EE5AB67947E').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_E8B911F7D0FDA62A96546EE5AB67947E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_E8B911F7D0FDA62A96546EE5AB67947E'>view plain</a>
<a href='javascript:copy_to_clipboard_E8B911F7D0FDA62A96546EE5AB67947E()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_E8B911F7D0FDA62A96546EE5AB67947E'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_E8B911F7D0FDA62A96546EE5AB67947E').style.display='inline';}</script>
<a href='javascript:print_E8B911F7D0FDA62A96546EE5AB67947E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_E8B911F7D0FDA62A96546EE5AB67947E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_E8B911F7D0FDA62A96546EE5AB67947E' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_E8B911F7D0FDA62A96546EE5AB67947E' style='display:none;color:#000'><cffunction name="processEvent" hint="Synchronous event handling" access="public" output="false" returntype="any"><br /> <cfargument name="event" type="any" required="true" /><br /><br /> <cfset var eventName = arguments.event.getName() /><br /> <cfset var externaldata = arguments.event.getrequestData().externaldata /><br /> <cfset var _scriptHead = "" /><br /> <cfset var data = arguments.event.getdata() /><br /> <br /> <br /> <cfif eventName EQ "beforeAdminPostContentEnd"><br /> <br /> <cfsavecontent variable="_scriptHead"><br /> <cfoutput><br /> <cfif isStruct( externaldata ) and structKeyExists( externaldata, 'noEditor')><br /> <script type="text/javascript" language="JavaScript"><br /> $(function() <br /> { <br /> $("textarea##contentField").removeClass('htmlEditor'); <br /> });<br /> </script><br /> </cfif><br /> <style type="text/css"><br /> .widget{<br /> width:75%;<br /> }<br /> ##contentField{<br /> width:80%;<br /> }<br /> </style><br /> </cfoutput><br /> </cfsavecontent><br /> <cfhtmlhead text="#_scriptHead#"><br /> <br /> <cfelseif eventName EQ "beforeAdminHeaderEnd"><br /> <br /> <cfif isStruct( externaldata ) AND structKeyExists( externaldata, 'raw') AND isArray( externaldata.raw ) ><br /> <cfset arr_index = (externaldata.raw.indexOf('posts.cfm')) + 1 /><br /> <br /> <cfif val( arr_index )><br /> <cfsavecontent variable="_scriptHead"><br /> <cfoutput><br /> <br /> <script type="text/javascript" language="JavaScript"><br /> $(function() <br /> { <br /> <br /> $('tr td.buttonColumn a.editButton').each(function(index) {<br /> if( $(this).text().toLowerCase() == 'edit')<br /> {<br /> var new_button = $(this).clone();<br /> new_button.attr('href', new_button.attr('href') + '&noEditor=true' ).text('Edit No Editor');<br /> $(this).parent().append( new_button );<br /> }<br /> <br /> }); <br /> });<br /> </script><br /> <br /> </cfoutput><br /> </cfsavecontent><br /> <cfhtmlhead text="#_scriptHead#"><br /> </cfif><br /> <br /> </cfif><br /> <br /> </cfif> <br /> <br /> <cfreturn arguments.event /> <br /> </cffunction></span>
<span id='formatted_code_E8B911F7D0FDA62A96546EE5AB67947E' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cffunction name=<span style='color:#0000CC'>"processEvent"</span> hint=<span style='color:#0000CC'>"Synchronous event handling"</span> access=<span style='color:#0000CC'>"public"</span> output=<span style='color:#0000CC'>"false"</span> returntype=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"event"</span> type=<span style='color:#0000CC'>"any"</span> required=<span style='color:#0000CC'>"true"</span> /></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#990033'><cfset<span style='color:#000000'> var eventName  = arguments.event.getName() /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <span style='color:#990033'><cfset<span style='color:#000000'> var externaldata = arguments.event.getrequestData().externaldata /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> <span style='color:#990033'><cfset<span style='color:#000000'> var _scriptHead  = <span style='color:#006600'>""</span> /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> <span style='color:#990033'><cfset<span style='color:#000000'> var data  = arguments.event.getdata() /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> <span style='color:#990033'><cfif eventName EQ <span style='color:#0000CC'>"beforeAdminPostContentEnd"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> <span style='color:#990033'><cfsavecontent variable=<span style='color:#0000CC'>"_scriptHead"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> <span style='color:#990033'><cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <span style='color:#990033'><cfif isStruct( externaldata ) and structKeyExists( externaldata, 'noEditor')></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> <span style='color:#000099'><script type=<span style='color:#0000CC'>"text/javascript"</span> language=<span style='color:#0000CC'>"JavaScript"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> $(function() <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span> <span style='color:#000099'>{</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span> $("textarea##contentField").removeClass('htmlEditor'); <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span> <span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span> <span style='color:#000099'></script></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>22</span> <span style='color:#990099'><style type=<span style='color:#0000CC'>"text/css"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>23</span> .widget<span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>24</span> width:75%;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>25</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>26</span> ##contentField<span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>27</span> width:80%;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>28</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>29</span> <span style='color:#990099'></style></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>30</span> <span style='color:#990033'></cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>31</span> <span style='color:#990033'></cfsavecontent></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>32</span> <span style='color:#990033'><cfhtmlhead text=<span style='color:#0000CC'>"#_scriptHead#"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>33</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>34</span> <span style='color:#990033'><cfelseif eventName EQ <span style='color:#0000CC'>"beforeAdminHeaderEnd"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>35</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>36</span> <span style='color:#990033'><cfif isStruct( externaldata ) AND structKeyExists( externaldata, 'raw') AND isArray( externaldata.raw ) ></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>37</span> <span style='color:#990033'><cfset<span style='color:#000000'> arr_index = (externaldata.raw.indexOf('posts.cfm')) + 1 /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>38</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>39</span> <span style='color:#990033'><cfif val( arr_index )></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>40</span> <span style='color:#990033'><cfsavecontent variable=<span style='color:#0000CC'>"_scriptHead"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>41</span> <span style='color:#990033'><cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>42</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>43</span> <span style='color:#000099'><script type=<span style='color:#0000CC'>"text/javascript"</span> language=<span style='color:#0000CC'>"JavaScript"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>44</span> $(function() <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>45</span> <span style='color:#000099'>{</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>46</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>47</span> $('tr td.buttonColumn a.editButton').each(function(index) <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>48</span>     if( $(this).text().toLowerCase() == 'edit')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>49</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>50</span> var new_button = $(this).clone();<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>51</span> new_button.attr('href', new_button.attr('href') + '&noEditor=true' ).text('Edit No Editor');<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>52</span> $(this).parent().append( new_button );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>53</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>54</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>55</span>   <span style='color:#000099'>}</span>); <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>56</span> <span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>57</span> <span style='color:#000099'></script></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>58</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>59</span> <span style='color:#990033'></cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>60</span> <span style='color:#990033'></cfsavecontent></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>61</span> <span style='color:#990033'><cfhtmlhead text=<span style='color:#0000CC'>"#_scriptHead#"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>62</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>63</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>64</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>65</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>66</span> <span style='color:#990033'></cfif></span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>67</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>68</span> <span style='color:#990033'><cfreturn arguments.event /></span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>69</span> <span style='color:#990033'></cffunction></span><br /></span></div>
<p>
Ok lets break down the code above. The first thing that I am doing is setting my variables.
</p>
<div class='code'>
<iframe id='print_frame_9B52F5260A338F9976C591BEF3EE0EE1' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_9B52F5260A338F9976C591BEF3EE0EE1() {
var temp = document.getElementById('htmlencoded_plain_9B52F5260A338F9976C591BEF3EE0EE1').style.display;
document.getElementById('htmlencoded_plain_9B52F5260A338F9976C591BEF3EE0EE1').style.display=document.getElementById('formatted_code_9B52F5260A338F9976C591BEF3EE0EE1').style.display;
document.getElementById('formatted_code_9B52F5260A338F9976C591BEF3EE0EE1').style.display=temp;
if (temp=='none') {
document.getElementById('view_9B52F5260A338F9976C591BEF3EE0EE1').innerHTML='view formatted';
} else {
document.getElementById('view_9B52F5260A338F9976C591BEF3EE0EE1').innerHTML='view plain';
}
}
function copy_to_clipboard_9B52F5260A338F9976C591BEF3EE0EE1() {
var code=unescape(document.getElementById('htmlencoded_plain_9B52F5260A338F9976C591BEF3EE0EE1').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_9B52F5260A338F9976C591BEF3EE0EE1() {
window.frames['print_frame_9B52F5260A338F9976C591BEF3EE0EE1'].document.body.innerHTML = document.getElementById('formatted_code_9B52F5260A338F9976C591BEF3EE0EE1').innerHTML;
window.frames['print_frame_9B52F5260A338F9976C591BEF3EE0EE1'].focus();
window.frames['print_frame_9B52F5260A338F9976C591BEF3EE0EE1'].print();
}
function show_about_9B52F5260A338F9976C591BEF3EE0EE1() {
document.getElementById('about_9B52F5260A338F9976C591BEF3EE0EE1').style.display='inline';
window.setTimeout('hide_about_9B52F5260A338F9976C591BEF3EE0EE1();', 4000);
}
function hide_about_9B52F5260A338F9976C591BEF3EE0EE1() {
document.getElementById('about_9B52F5260A338F9976C591BEF3EE0EE1').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_9B52F5260A338F9976C591BEF3EE0EE1()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_9B52F5260A338F9976C591BEF3EE0EE1'>view plain</a>
<a href='javascript:copy_to_clipboard_9B52F5260A338F9976C591BEF3EE0EE1()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_9B52F5260A338F9976C591BEF3EE0EE1'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_9B52F5260A338F9976C591BEF3EE0EE1').style.display='inline';}</script>
<a href='javascript:print_9B52F5260A338F9976C591BEF3EE0EE1()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_9B52F5260A338F9976C591BEF3EE0EE1()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_9B52F5260A338F9976C591BEF3EE0EE1' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_9B52F5260A338F9976C591BEF3EE0EE1' style='display:none;color:#000'><cfset var eventName = arguments.event.getName() /><br /> <cfset var externaldata = arguments.event.getrequestData().externaldata /><br /> <cfset var _scriptHead = "" /></span>
<span id='formatted_code_9B52F5260A338F9976C591BEF3EE0EE1' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfset<span style='color:#000000'> var eventName  = arguments.event.getName() /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cfset<span style='color:#000000'> var externaldata = arguments.event.getrequestData().externaldata /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <span style='color:#990033'><cfset<span style='color:#000000'> var _scriptHead  = <span style='color:#006600'>""</span> /</span>></span><br /></span></div>
<p>
The first variable ("eventName") is the name of the event being executed, the second variable ("externaldata") is for all of the external data like form and url variables, and the last variable will be used for storing the output for the html head.
</p>
<p>
Next is my if statement which really only needs to be in there if you're listening for multiple events, in this case I am listening for two events ( "beforeAdminPostContentEnd", "beforeAdminHeaderEnd" ).
</p>
<div class='code'>
<iframe id='print_frame_618982EC23E4BA39F25A7D86A89F99A5' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_618982EC23E4BA39F25A7D86A89F99A5() {
var temp = document.getElementById('htmlencoded_plain_618982EC23E4BA39F25A7D86A89F99A5').style.display;
document.getElementById('htmlencoded_plain_618982EC23E4BA39F25A7D86A89F99A5').style.display=document.getElementById('formatted_code_618982EC23E4BA39F25A7D86A89F99A5').style.display;
document.getElementById('formatted_code_618982EC23E4BA39F25A7D86A89F99A5').style.display=temp;
if (temp=='none') {
document.getElementById('view_618982EC23E4BA39F25A7D86A89F99A5').innerHTML='view formatted';
} else {
document.getElementById('view_618982EC23E4BA39F25A7D86A89F99A5').innerHTML='view plain';
}
}
function copy_to_clipboard_618982EC23E4BA39F25A7D86A89F99A5() {
var code=unescape(document.getElementById('htmlencoded_plain_618982EC23E4BA39F25A7D86A89F99A5').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_618982EC23E4BA39F25A7D86A89F99A5() {
window.frames['print_frame_618982EC23E4BA39F25A7D86A89F99A5'].document.body.innerHTML = document.getElementById('formatted_code_618982EC23E4BA39F25A7D86A89F99A5').innerHTML;
window.frames['print_frame_618982EC23E4BA39F25A7D86A89F99A5'].focus();
window.frames['print_frame_618982EC23E4BA39F25A7D86A89F99A5'].print();
}
function show_about_618982EC23E4BA39F25A7D86A89F99A5() {
document.getElementById('about_618982EC23E4BA39F25A7D86A89F99A5').style.display='inline';
window.setTimeout('hide_about_618982EC23E4BA39F25A7D86A89F99A5();', 4000);
}
function hide_about_618982EC23E4BA39F25A7D86A89F99A5() {
document.getElementById('about_618982EC23E4BA39F25A7D86A89F99A5').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_618982EC23E4BA39F25A7D86A89F99A5()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_618982EC23E4BA39F25A7D86A89F99A5'>view plain</a>
<a href='javascript:copy_to_clipboard_618982EC23E4BA39F25A7D86A89F99A5()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_618982EC23E4BA39F25A7D86A89F99A5'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_618982EC23E4BA39F25A7D86A89F99A5').style.display='inline';}</script>
<a href='javascript:print_618982EC23E4BA39F25A7D86A89F99A5()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_618982EC23E4BA39F25A7D86A89F99A5()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_618982EC23E4BA39F25A7D86A89F99A5' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_618982EC23E4BA39F25A7D86A89F99A5' style='display:none;color:#000'><cfsavecontent variable="_scriptHead"><br /> <cfoutput><br /> <cfif isStruct( externaldata ) and structKeyExists( externaldata, 'noEditor')><br /> <script type="text/javascript" language="JavaScript"><br /> $(function() <br /> { <br /> $("textarea##contentField").removeClass('htmlEditor'); <br /> });<br /> </script><br /> </cfif><br /> <style type="text/css"><br /> .widget{<br /> width:75%;<br /> }<br /> ##contentField{<br /> width:80%;<br /> }<br /> </style><br /> </cfoutput><br /></cfsavecontent><br /><cfhtmlhead text="#_scriptHead#"></span>
<span id='formatted_code_618982EC23E4BA39F25A7D86A89F99A5' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfsavecontent variable=<span style='color:#0000CC'>"_scriptHead"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <span style='color:#990033'><cfif isStruct( externaldata ) and structKeyExists( externaldata, 'noEditor')></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#000099'><script type=<span style='color:#0000CC'>"text/javascript"</span> language=<span style='color:#0000CC'>"JavaScript"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> $(function() <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> <span style='color:#000099'>{</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> $("textarea##contentField").removeClass('htmlEditor'); <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> <span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> <span style='color:#000099'></script></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <span style='color:#990099'><style type=<span style='color:#0000CC'>"text/css"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> .widget<span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> width:75%;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> ##contentField<span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> width:80%;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span> <span style='color:#990099'></style></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span> <span style='color:#990033'></cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span><span style='color:#990033'></cfsavecontent></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span><span style='color:#990033'><cfhtmlhead text=<span style='color:#0000CC'>"#_scriptHead#"</span>></span><br /></span></div>
<p>
In the code above I am listening for the event "beforeAdminPostContentEnd" and then I overide the admin css and I added so jQuery to remove the "htmlEditor" class form the textarea with the id "contentField", if I find the struct key "noEditor". The next part I am taking the script and style output and putting it in the html head.
</p>
<br />
<div class='code'>
<iframe id='print_frame_B831A7683FA5F46B448F2131B714F8FB' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_B831A7683FA5F46B448F2131B714F8FB() {
var temp = document.getElementById('htmlencoded_plain_B831A7683FA5F46B448F2131B714F8FB').style.display;
document.getElementById('htmlencoded_plain_B831A7683FA5F46B448F2131B714F8FB').style.display=document.getElementById('formatted_code_B831A7683FA5F46B448F2131B714F8FB').style.display;
document.getElementById('formatted_code_B831A7683FA5F46B448F2131B714F8FB').style.display=temp;
if (temp=='none') {
document.getElementById('view_B831A7683FA5F46B448F2131B714F8FB').innerHTML='view formatted';
} else {
document.getElementById('view_B831A7683FA5F46B448F2131B714F8FB').innerHTML='view plain';
}
}
function copy_to_clipboard_B831A7683FA5F46B448F2131B714F8FB() {
var code=unescape(document.getElementById('htmlencoded_plain_B831A7683FA5F46B448F2131B714F8FB').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_B831A7683FA5F46B448F2131B714F8FB() {
window.frames['print_frame_B831A7683FA5F46B448F2131B714F8FB'].document.body.innerHTML = document.getElementById('formatted_code_B831A7683FA5F46B448F2131B714F8FB').innerHTML;
window.frames['print_frame_B831A7683FA5F46B448F2131B714F8FB'].focus();
window.frames['print_frame_B831A7683FA5F46B448F2131B714F8FB'].print();
}
function show_about_B831A7683FA5F46B448F2131B714F8FB() {
document.getElementById('about_B831A7683FA5F46B448F2131B714F8FB').style.display='inline';
window.setTimeout('hide_about_B831A7683FA5F46B448F2131B714F8FB();', 4000);
}
function hide_about_B831A7683FA5F46B448F2131B714F8FB() {
document.getElementById('about_B831A7683FA5F46B448F2131B714F8FB').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_B831A7683FA5F46B448F2131B714F8FB()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_B831A7683FA5F46B448F2131B714F8FB'>view plain</a>
<a href='javascript:copy_to_clipboard_B831A7683FA5F46B448F2131B714F8FB()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_B831A7683FA5F46B448F2131B714F8FB'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_B831A7683FA5F46B448F2131B714F8FB').style.display='inline';}</script>
<a href='javascript:print_B831A7683FA5F46B448F2131B714F8FB()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_B831A7683FA5F46B448F2131B714F8FB()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_B831A7683FA5F46B448F2131B714F8FB' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_B831A7683FA5F46B448F2131B714F8FB' style='display:none;color:#000'><cfif isStruct( externaldata ) AND structKeyExists( externaldata, 'raw') AND isArray( externaldata.raw ) ><br /> <cfset arr_index = (externaldata.raw.indexOf('posts.cfm')) + 1 /><br /> <br /> <cfif val( arr_index )><br /> <cfsavecontent variable="_scriptHead"><br /> <cfoutput><br /> <br /> <script type="text/javascript" language="JavaScript"><br /> $(function() <br /> { <br /> <br /> $('tr td.buttonColumn a.editButton').each(function(index) {<br /> if( $(this).text().toLowerCase() == 'edit')<br /> {<br /> var new_button = $(this).clone();<br /> new_button.attr('href', new_button.attr('href') + '&noEditor=true' ).text('Edit No Editor');<br /> $(this).parent().append( new_button );<br /> }<br /> <br /> });<br /> $('p.buttonBar a.editButton').each(function(index) {<br /> if( $(this).text().toLowerCase() == 'create new post')<br /> {<br /> var new_button = $(this).clone();<br /> new_button.attr('href', new_button.attr('href') + '&noEditor=true' ).text('Create New Post No Editor');<br /> $(this).parent().append( new_button );<br /> }<br /> });<br /> });<br /> </script><br /> <br /> </cfoutput><br /> </cfsavecontent><br /> <cfhtmlhead text="#_scriptHead#"><br /> </cfif><br /> <br /></cfif></span>
<span id='formatted_code_B831A7683FA5F46B448F2131B714F8FB' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfif isStruct( externaldata ) AND structKeyExists( externaldata, 'raw') AND isArray( externaldata.raw ) ></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cfset<span style='color:#000000'> arr_index = (externaldata.raw.indexOf('posts.cfm')) + 1 /</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#990033'><cfif val( arr_index )></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <span style='color:#990033'><cfsavecontent variable=<span style='color:#0000CC'>"_scriptHead"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> <span style='color:#990033'><cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> <span style='color:#000099'><script type=<span style='color:#0000CC'>"text/javascript"</span> language=<span style='color:#0000CC'>"JavaScript"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> $(function() <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> <span style='color:#000099'>{</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> $('tr td.buttonColumn a.editButton').each(function(index) <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span>     if( $(this).text().toLowerCase() == 'edit')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> var new_button = $(this).clone();<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> new_button.attr('href', new_button.attr('href') + '&noEditor=true' ).text('Edit No Editor');<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span> $(this).parent().append( new_button );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span>   <span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span>   $('p.buttonBar a.editButton').each(function(index) <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>22</span> if( $(this).text().toLowerCase() == 'create new post')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>23</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>24</span> var new_button = $(this).clone();<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>25</span> new_button.attr('href', new_button.attr('href') + '&noEditor=true' ).text('Create New Post No Editor');<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>26</span> $(this).parent().append( new_button );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>27</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>28</span> <span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>29</span> <span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>30</span> <span style='color:#000099'></script></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>31</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>32</span> <span style='color:#990033'></cfoutput></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>33</span> <span style='color:#990033'></cfsavecontent></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>34</span> <span style='color:#990033'><cfhtmlhead text=<span style='color:#0000CC'>"#_scriptHead#"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>35</span> <span style='color:#990033'></cfif></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>36</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>37</span><span style='color:#990033'></cfif></span><br /></span></div>
<p>
Next in the elseif statement I am listening for the event "beforeAdminHeaderEnd". Here we're going to look through the attribute raw element which is an array and stores the name of the file name, the file name that we're looking for is posts.cfm. Once I find the file name I add some more jQuery that will look through the DOM for "tr td.buttonColumn a.editButton" and "p.buttonBar a.editButton" then I add two new buttons, one that will allow me to edit a post without the editor and one that will allow me to create a new post without an editor.
</p>
<p>
The only problem that I have found with all of this, is that once I save my blog post the page redirects back to the post.cfm file but no "noEditor" url var so I still need to work on that. If you want the plugin here is the <a href="http://think-lab.net/blog/assets/content/thinklab.zip">download link</a>.
</p>
SacCFUG Meeting: Tuesday Jan 11th
urn:uuid:716510C1-D56B-AA5C-3CF9E30F0FFF56BC
2011-01-10T11:01:14Z
2011-01-10T11:01:00Z
Matt Graf
<p><strong><a href="http://www.saccfug.com/">
Sacramento ColdFusion User Group</a></strong><br />
Next SacCFUG Meeting: <strong>Tuesday Jan 11th</strong><br />
Topic: Building Mobile Applications with jQuery<br />
Speaker: <strong><a href="ttp://www.designovermatter.com">Sidney Maestre</a></strong><br />
When: Tuesday Jan 11th @ 6:30pm <br />
Where: Clear Capital - <a href="http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=1410+Rocky+Ridge+Road+-+Suite+180,+Roseville&sll=37.0625,-95.677068&sspn=64.113178,126.914062&ie=UTF8&hq=&hnear=1410+Rocky+Ridge+Dr+%23180,+Roseville,+Placer,+California+95661&t=h&z=17&iwloc=A">1410 Rocky Ridge Road - Suite 180, Roseville</a><br />
Sponsors: Clear Capital</p>
<p> </p>
<p><strong>Building Mobile Applications with jQuery</strong></p>
<p> </p>
<p>Learn how to use HTML, CSS, and jQuery to build mobile applications you can deliver across multiple devices. In this lab, we'll cover jQuery basics and incorporate the <a href="http://www.jqtouch.com/">jQTouch</a> plug-in to manage navigation, touch events, animation, and skinning. Techniques for client-side data storage and data caching will also be covered.</p>
<p> </p>
<p><strong>Skill Level:</strong> Intermediate Knowledge of HTML, CSS, and JavaScript</p>
<p> </p>
<p>Bring your laptop with any HTML editor and Safari installed if you wish to work through the workshop.</p>
<p> </p>
<p>See you there.</p>
Internet ID for all?
urn:uuid:70AD211B-D56B-AA5C-3F485A5F858EB071
2011-01-10T08:01:43Z
2011-01-16T01:01:00Z
Matt Graf
<p><a href="http://www.engadget.com/2011/01/09/obama-administration-moves-forward-with-unique-internet-id-for-a/">Obama administration moves forward with unique internet ID for all Americans, Commerce Department to head system up</a> </p>
<div class="note">
<p>
President Obama has signaled that he will give the United States Commerce Department the authority over a proposed national cybersecurity measure that would involve giving each American a unique online identity. Other candidates mentioned previously to head up the new system have included the NSA and the Department of Homeland Security, but the announcement that the Commerce Department will take the job should please groups that have raised concerns over security agencies doing double duty in police and intelligence work. So anyway, what about this unique ID we'll all be getting? Well, though details are still pretty scant, U.S. Commerce Secretary Gary Locke, speaking at an event at the Stanford Institute, stressed that the new system would not be akin to a national ID card, or a government controlled system, but that it would enhance security and reduce the need for people to memorize dozens of passwords online. Sorry, Locke, sounds like a national ID system to us. Anyway, the Obama administration is currently drafting what it's dubbed the National Strategy for Trusted Identities in Cyberspace, which is expected at the Department of Commerce in a few months. We'll keep you posted if anything terrifying or cool happens.
</p>
</div>
<p>So what does this mean? Are we going to have one Internet ID and password that is stored with the Government? Would you trust the Government with your ID and password? We all know that they spy on us already </p>
jQuery jNotify
urn:uuid:6857008F-D56B-AA5C-36ED735BFB446CEC
2011-01-09T10:01:00Z
2011-01-16T06:01:00Z
<p><a href="http://www.myjqueryplugins.com/jNotify">jNotify</a> is a jQuery plugin to send notifications to your users with a single line code.</p>
<div class="note"><p>
jNotify can display information boxes in just one line of code.
Three kind of boxes are allowed : information, success and failure.
The whole box is entirely skinnable with css. For example, you could use it for a mail being successfully sent or a validation error of a form.</p></div>
<p>This a great easy to use plugin to notify your users about events within your app. For instance, I used this plugin to my users know if an AJAX request had an error or if it was successful.</p>
Matt Graf
<p><a href="http://www.myjqueryplugins.com/jNotify">jNotify</a> is a jQuery plugin to send notifications to your users with a single line code.</p>
<div class="note">
<p>
jNotify can display information boxes in just one line of code.
Three kind of boxes are allowed : information, success and failure.
The whole box is entirely skinnable with css. For example, you could use it for a mail being successfully sent or a validation error of a form.
</p>
</div>
<p>This a great easy to use plugin to notify your users about events within your app. For instance, I used this plugin to my users know if an AJAX request had an error or if it was successful.</p>
<p> </p>
<p>Here is an example of creating an error and success message. </p>
<p>
<div class='code'>
<iframe id='print_frame_B4CC14E243A8E89A09B73CCB6879208A' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_B4CC14E243A8E89A09B73CCB6879208A() {
var temp = document.getElementById('htmlencoded_plain_B4CC14E243A8E89A09B73CCB6879208A').style.display;
document.getElementById('htmlencoded_plain_B4CC14E243A8E89A09B73CCB6879208A').style.display=document.getElementById('formatted_code_B4CC14E243A8E89A09B73CCB6879208A').style.display;
document.getElementById('formatted_code_B4CC14E243A8E89A09B73CCB6879208A').style.display=temp;
if (temp=='none') {
document.getElementById('view_B4CC14E243A8E89A09B73CCB6879208A').innerHTML='view formatted';
} else {
document.getElementById('view_B4CC14E243A8E89A09B73CCB6879208A').innerHTML='view plain';
}
}
function copy_to_clipboard_B4CC14E243A8E89A09B73CCB6879208A() {
var code=unescape(document.getElementById('htmlencoded_plain_B4CC14E243A8E89A09B73CCB6879208A').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_B4CC14E243A8E89A09B73CCB6879208A() {
window.frames['print_frame_B4CC14E243A8E89A09B73CCB6879208A'].document.body.innerHTML = document.getElementById('formatted_code_B4CC14E243A8E89A09B73CCB6879208A').innerHTML;
window.frames['print_frame_B4CC14E243A8E89A09B73CCB6879208A'].focus();
window.frames['print_frame_B4CC14E243A8E89A09B73CCB6879208A'].print();
}
function show_about_B4CC14E243A8E89A09B73CCB6879208A() {
document.getElementById('about_B4CC14E243A8E89A09B73CCB6879208A').style.display='inline';
window.setTimeout('hide_about_B4CC14E243A8E89A09B73CCB6879208A();', 4000);
}
function hide_about_B4CC14E243A8E89A09B73CCB6879208A() {
document.getElementById('about_B4CC14E243A8E89A09B73CCB6879208A').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_B4CC14E243A8E89A09B73CCB6879208A()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_B4CC14E243A8E89A09B73CCB6879208A'>view plain</a>
<a href='javascript:copy_to_clipboard_B4CC14E243A8E89A09B73CCB6879208A()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_B4CC14E243A8E89A09B73CCB6879208A'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_B4CC14E243A8E89A09B73CCB6879208A').style.display='inline';}</script>
<a href='javascript:print_B4CC14E243A8E89A09B73CCB6879208A()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_B4CC14E243A8E89A09B73CCB6879208A()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_B4CC14E243A8E89A09B73CCB6879208A' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_B4CC14E243A8E89A09B73CCB6879208A' style='display:none;color:#000'>$(function()<br /> {<br /> <br /> $('#show_error').click(<br /> function(){<br /> jError('I am sorry, something did not go right!',{HorizontalPosition : 'right', VerticalPosition : 'top'});<br /> }<br /> );<br /> <br /> <br /> $('#show_success').click(<br /> function(){<br /> jSuccess('Success user has been save!',{HorizontalPosition : 'right', VerticalPosition : 'top'});<br /> }<br /> );<br /> }<br /> );</span>
<span id='formatted_code_B4CC14E243A8E89A09B73CCB6879208A' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>$(function()<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> $('#show_error').click(<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> function()<span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> jError('I am sorry, something did not go right!',<span style='color:#000099'>{</span>HorizontalPosition : 'right', VerticalPosition : 'top'<span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span>         $('#show_success').click(<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> function()<span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> jSuccess('Success user has been save!',<span style='color:#000099'>{</span>HorizontalPosition : 'right', VerticalPosition : 'top'<span style='color:#000099'>}</span>);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span> );<br /></span></div></p>
<p><a href="http://demo/jnotify/">Demo</a></p>
<p>As you can see it is quite simple to use.</p>
Seven Languages in Seven Weeks: IO Day 1 and 2
urn:uuid:673145EB-D56B-AA5C-378941F4926E2827
2011-01-08T11:01:21Z
2011-01-08T11:01:00Z
Matt Graf
<p>Well I finished day one and two of IO and so far I am not too fond of the language. Finding any information on this language is quite hard. Actually most of the information that I have found has been from <a href="http://www.bennadel.com" target="_self">www.bennadel.com</a>. I am not going to post my homework for this language for this day since most of my information has been from Ben's site.</p>
Crack Mac Apps – TUTORIAL
urn:uuid:63B2F8D1-D56B-AA5C-3387E3C733C6A4AA
2011-01-07T07:01:48Z
2011-01-07T07:01:00Z
Matt Graf
<p>The Mac App store had only been opened for 24 hours and Cracks have started. Take a look at this <a href="http://appinsect.com/2011/01/crack-mac-apps-tutorial">tutorial</a>.</p>
<p> </p>
Fresh Invoices
urn:uuid:59223283-D56B-AA5C-3BF870FDAF67B232
2011-01-05T06:01:44Z
2011-01-05T06:01:00Z
Matt Graf
<p>I have been using FreshBooks for over a year now, and it’s definitely the best online solution that I have found. Some of the issues that FreshBooks has solved for me are tracking expenses, like mileage office supplies and you can also setup recurring expenses. In the free version can setup three clients and send unlimited invoices via email they will send your invoices via snail mail but you will have to by FreshBook stamps. You can send your client an estimate and then turn that estimate into an invoice. If you are interested click the banner below.
</p>
<p><a href="https://thinklab.freshbooks.com/refer/www" style="background-color: transparent;"><img src="http://www.freshbooks.com/images/banners/fb200x125-loving.png" width="200" height="125" border="0" alt="FreshBooks" /></a></p>
Seven Languages in Seven Weeks: Ruby Day 3
urn:uuid:541F0049-D56B-AA5C-36DCF724A141CFE9
2011-01-05T08:01:00Z
2011-01-16T06:01:00Z
<p>The third and final day of Ruby. This was full of fun, we learned about the power of "missing_method", and how to use it to create your own (DSL). We also learn how create and use modules, modules are pretty cool I liked how you can create a module and mix it in a class. Now on to the homework, todays homework was quite a challenge but also fun. </p>
Matt Graf
<p>The third and final day of Ruby. This was full of fun, we learned about the power of "missing_method", and how to use it to create your own (DSL). We also learn how create and use modules, modules are pretty cool I liked how you can create a module and mix it in a class. Now on to the homework, todays homework was quite a challenge but also fun. </p>
<h4>HW Day 3:</h4>
<p> Modify the CSV application to support an each method to return a CsvRow object. Use method_missing on the CsvRow to return the value for the column for a given heading.<br />
Here is the original class
</p>
<p> </p>
<p><div class='code'>
<iframe id='print_frame_60C67780B93EF8A58C236C896F7CC683' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_60C67780B93EF8A58C236C896F7CC683() {
var temp = document.getElementById('htmlencoded_plain_60C67780B93EF8A58C236C896F7CC683').style.display;
document.getElementById('htmlencoded_plain_60C67780B93EF8A58C236C896F7CC683').style.display=document.getElementById('formatted_code_60C67780B93EF8A58C236C896F7CC683').style.display;
document.getElementById('formatted_code_60C67780B93EF8A58C236C896F7CC683').style.display=temp;
if (temp=='none') {
document.getElementById('view_60C67780B93EF8A58C236C896F7CC683').innerHTML='view formatted';
} else {
document.getElementById('view_60C67780B93EF8A58C236C896F7CC683').innerHTML='view plain';
}
}
function copy_to_clipboard_60C67780B93EF8A58C236C896F7CC683() {
var code=unescape(document.getElementById('htmlencoded_plain_60C67780B93EF8A58C236C896F7CC683').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_60C67780B93EF8A58C236C896F7CC683() {
window.frames['print_frame_60C67780B93EF8A58C236C896F7CC683'].document.body.innerHTML = document.getElementById('formatted_code_60C67780B93EF8A58C236C896F7CC683').innerHTML;
window.frames['print_frame_60C67780B93EF8A58C236C896F7CC683'].focus();
window.frames['print_frame_60C67780B93EF8A58C236C896F7CC683'].print();
}
function show_about_60C67780B93EF8A58C236C896F7CC683() {
document.getElementById('about_60C67780B93EF8A58C236C896F7CC683').style.display='inline';
window.setTimeout('hide_about_60C67780B93EF8A58C236C896F7CC683();', 4000);
}
function hide_about_60C67780B93EF8A58C236C896F7CC683() {
document.getElementById('about_60C67780B93EF8A58C236C896F7CC683').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_60C67780B93EF8A58C236C896F7CC683()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_60C67780B93EF8A58C236C896F7CC683'>view plain</a>
<a href='javascript:copy_to_clipboard_60C67780B93EF8A58C236C896F7CC683()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_60C67780B93EF8A58C236C896F7CC683'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_60C67780B93EF8A58C236C896F7CC683').style.display='inline';}</script>
<a href='javascript:print_60C67780B93EF8A58C236C896F7CC683()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_60C67780B93EF8A58C236C896F7CC683()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_60C67780B93EF8A58C236C896F7CC683' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_60C67780B93EF8A58C236C896F7CC683' style='display:none;color:#000'>class ActsAsCsv<br /> <br /> def self.acts_as_csv<br /> <br /> define_method 'read' do<br /> file = File.new(self.class.to_s.downcase + '.txt')<br /> @headers = file.gets.chomp.split(', ')<br /> <br /> file.each do |row|<br /> @result << row.chomp.split(', ')<br /> end<br /> <br /> end<br /> <br /> define_method "headers" do<br /> @headers<br /> end<br /> <br /> define_method "csv_contents" do<br /> @result<br /> end<br /> <br /> define_method "initialize" do<br /> @result = []<br /> read<br /> end<br /> <br /> end<br /> <br />end<br />class RubyCsv < ActsAsCsv<br />end</span>
<span id='formatted_code_60C67780B93EF8A58C236C896F7CC683' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>class ActsAsCsv<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>  <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span>  def self.acts_as_csv<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span>    define_method 'read' do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span>      file = File.new(self.class.to_s.downcase + '.txt')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span>      @headers = file.gets.chomp.split(', ')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span>            <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span>      file.each do |row|<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span>        @result <span style='color:#000099'><<span style='color:#000099'>< row.chomp.split(', ')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span>      end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span>      <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span>    define_method <span style='color:#0000CC'>"headers"</span> do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span>      @headers<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span>    define_method <span style='color:#0000CC'>"csv_contents"</span> do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span>      @result<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>22</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>23</span>    define_method <span style='color:#0000CC'>"initialize"</span> do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>24</span>      @result = []<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>25</span>      read<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>26</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>27</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>28</span>  end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>29</span>     <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>30</span>end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>31</span>class RubyCsv <span style='color:#000099'>< ActsAsCsv<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>32</span>end<br /></span></span></span></span></div>
</p>
<p>
OK here is what I cam up with.
</p>
<p>
<div class='code'>
<iframe id='print_frame_B53080AE98C0C7538379A96A3D22B93D' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_B53080AE98C0C7538379A96A3D22B93D() {
var temp = document.getElementById('htmlencoded_plain_B53080AE98C0C7538379A96A3D22B93D').style.display;
document.getElementById('htmlencoded_plain_B53080AE98C0C7538379A96A3D22B93D').style.display=document.getElementById('formatted_code_B53080AE98C0C7538379A96A3D22B93D').style.display;
document.getElementById('formatted_code_B53080AE98C0C7538379A96A3D22B93D').style.display=temp;
if (temp=='none') {
document.getElementById('view_B53080AE98C0C7538379A96A3D22B93D').innerHTML='view formatted';
} else {
document.getElementById('view_B53080AE98C0C7538379A96A3D22B93D').innerHTML='view plain';
}
}
function copy_to_clipboard_B53080AE98C0C7538379A96A3D22B93D() {
var code=unescape(document.getElementById('htmlencoded_plain_B53080AE98C0C7538379A96A3D22B93D').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_B53080AE98C0C7538379A96A3D22B93D() {
window.frames['print_frame_B53080AE98C0C7538379A96A3D22B93D'].document.body.innerHTML = document.getElementById('formatted_code_B53080AE98C0C7538379A96A3D22B93D').innerHTML;
window.frames['print_frame_B53080AE98C0C7538379A96A3D22B93D'].focus();
window.frames['print_frame_B53080AE98C0C7538379A96A3D22B93D'].print();
}
function show_about_B53080AE98C0C7538379A96A3D22B93D() {
document.getElementById('about_B53080AE98C0C7538379A96A3D22B93D').style.display='inline';
window.setTimeout('hide_about_B53080AE98C0C7538379A96A3D22B93D();', 4000);
}
function hide_about_B53080AE98C0C7538379A96A3D22B93D() {
document.getElementById('about_B53080AE98C0C7538379A96A3D22B93D').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_B53080AE98C0C7538379A96A3D22B93D()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_B53080AE98C0C7538379A96A3D22B93D'>view plain</a>
<a href='javascript:copy_to_clipboard_B53080AE98C0C7538379A96A3D22B93D()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_B53080AE98C0C7538379A96A3D22B93D'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_B53080AE98C0C7538379A96A3D22B93D').style.display='inline';}</script>
<a href='javascript:print_B53080AE98C0C7538379A96A3D22B93D()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_B53080AE98C0C7538379A96A3D22B93D()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_B53080AE98C0C7538379A96A3D22B93D' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_B53080AE98C0C7538379A96A3D22B93D' style='display:none;color:#000'>#This is my Utilites class <br />class Utilites<br /> #Here we are just getting the index of <br /> #specific element in an Array<br /> def getArrayIndexByElement ( arr, elm ) <br /> <br /> #I am using the .to_a just to <br /> #ensure that the arr var is an Array<br /> #and I am doing the same on elm var<br /> #just making sure it's a string<br /> return arr.to_a.index( elm.to_s )<br /> end<br /> <br /> def getArrayElementByIndex ( arr, idx ) <br /> <br /> #I am using the .to_a just to <br /> #ensure that the arr var is an Array<br /> #and I am doing the same on idx var<br /> #just making sure it's a integer<br /> return arr.to_a[ idx.to_i]<br /> end<br /> <br />end<br />#create a new class that acts like a row<br />class ActsAsRow<br /> <br /> def initialize ( rowdata, headers )<br /> @Utilites = Utilites.new <br /> #set class variables<br /> #I am using the .to_a to make sure <br /> #the vars are Array's<br /> @rowdata=rowdata.to_a<br /> @headers=headers.to_a <br /> end<br /> <br /> def method_missing name, *args<br /> <br /> #First find the index of the header<br /> idx = @Utilites.getArrayIndexByElement( @headers.to_a, name.to_s.downcase )<br /> #Next get the element in the row <br /> #data using the idx var<br /> str = @Utilites.getArrayElementByIndex( @rowdata.to_a, idx.to_i )<br /> if idx != nil<br /> return str.to_s<br /> else<br /> return "Method Not Found!"<br /> end<br /> <br /> end<br />end<br />class ActsAsCsv<br /> <br /> def self.acts_as_csv<br /> <br /> define_method 'read' do<br /> file = File.new(self.class.to_s.downcase + '.txt')<br /> <br /> #create the header array<br /> @headers = []<br /> <br /> #loop through the first line in the file <br /> #and make them the headers<br /> file.gets.chomp.split(', ').each do |t_f|<br /> <br /> #add to the headers Array<br /> @headers.push( t_f.to_s.downcase )<br /> end<br /> <br /> <br /> file.each do |row|<br /> @result << row.chomp.split(', ')<br /> end<br /> <br /> end<br /> <br /> define_method "headers" do<br /> @headers<br /> end<br /> <br /> define_method "csv_contents" do<br /> @result<br /> end<br /> <br /> define_method "initialize" do<br /> @result = []<br /> read<br /> end<br /> <br /> end<br /> <br /> def each(&block)<br /> <br /> #loop through all of the rows<br /> @result.each do |rowdata|<br /> block.call(<br /> #create a new row<br /> row = ActsAsRow.new( rowdata ,self.headers )<br /> );<br /> end<br /> end<br /> <br />end<br />class RubyCsv < ActsAsCsv<br /> acts_as_csv<br />end<br />m = RubyCsv.new<br />m.each {|row| puts row.one}<br />Output</span>
<span id='formatted_code_B53080AE98C0C7538379A96A3D22B93D' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>#This is my Utilites class <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>class Utilites<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span>  #Here we are just getting the index of <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span>  #specific element in an Array<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span>  def getArrayIndexByElement ( arr, elm ) <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span>    #I am using the .to_a just to <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span>    #ensure that the arr var is an Array<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span>    #and I am doing the same on elm var<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span>    #just making sure it's a string<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span>    return arr.to_a.index( elm.to_s )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span>  end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span>  <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span>  def getArrayElementByIndex ( arr, idx ) <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span>      <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span>      #I am using the .to_a just to <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span>      #ensure that the arr var is an Array<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span>      #and I am doing the same on idx var<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span>      #just making sure it's a integer<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span>      return arr.to_a[ idx.to_i]<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span>  end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>22</span>  <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>23</span>end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>24</span>#create a new class that acts like a row<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>25</span>class ActsAsRow<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>26</span>  <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>27</span>  def initialize ( rowdata, headers )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>28</span>    @Utilites = Utilites.new <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>29</span>    #set class variables<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>30</span>    #I am using the .to_a to make sure <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>31</span>    #the vars are Array's<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>32</span>    @rowdata=rowdata.to_a<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>33</span>    @headers=headers.to_a     <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>34</span>   end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>35</span>  <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>36</span> def method_missing name, *args<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>37</span>   <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>38</span>   #First find the index of the header<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>39</span>   idx = @Utilites.getArrayIndexByElement( @headers.to_a, name.to_s.downcase )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>40</span>   #Next get the element in the row <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>41</span>   #data using the idx var<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>42</span>   str = @Utilites.getArrayElementByIndex( @rowdata.to_a, idx.to_i )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>43</span>    if idx != nil<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>44</span>      return str.to_s<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>45</span>    else<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>46</span>      return "Method Not Found!"<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>47</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>48</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>49</span> end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>50</span>end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>51</span>class ActsAsCsv<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>52</span>  <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>53</span>  def self.acts_as_csv<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>54</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>55</span>    define_method 'read' do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>56</span>      file = File.new(self.class.to_s.downcase + '.txt')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>57</span>      <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>58</span>      #create the header array<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>59</span>      @headers = []<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>60</span>      <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>61</span>      #loop through the first line in the file <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>62</span>      #and make them the headers<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>63</span>      file.gets.chomp.split(', ').each do |t_f|<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>64</span>        <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>65</span>        #add to the headers Array<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>66</span>        @headers.push( t_f.to_s.downcase )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>67</span>      end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>68</span>      <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>69</span>      <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>70</span>      file.each do |row|<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>71</span>        @result <span style='color:#000099'><<span style='color:#000099'>< row.chomp.split(', ')<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>72</span>      end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>73</span>      <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>74</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>75</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>76</span>    define_method <span style='color:#0000CC'>"headers"</span> do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>77</span>      @headers<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>78</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>79</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>80</span>    define_method <span style='color:#0000CC'>"csv_contents"</span> do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>81</span>      @result<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>82</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>83</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>84</span>    define_method <span style='color:#0000CC'>"initialize"</span> do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>85</span>      @result = []<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>86</span>      read<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>87</span>    end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>88</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>89</span>  end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>90</span>  <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>91</span>  def each(&block)<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>92</span>    <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>93</span>    #loop through all of the rows<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>94</span>    @result.each do |rowdata|<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>95</span>     block.call(<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>96</span>       #create a new row<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>97</span>       row = ActsAsRow.new( rowdata ,self.headers )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>98</span>     );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>99</span>   end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>100</span>  end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>101</span>   <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>102</span>end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>103</span>class RubyCsv <span style='color:#000099'>< ActsAsCsv<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>104</span>  acts_as_csv<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>105</span>end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>106</span>m = RubyCsv.new<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>107</span>m.each <span style='color:#000099'>{</span>|row| puts row.one<span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>108</span>Output<br /></span></span></span></span></div>
</p>
<p> To sum it all up I would have to say I like Ruby and I might just write a small Ruby app and Maybe check out Ruby on Rails. Well "Hi ho, Io" print its off to learn Io.</p>
Moving back to BlogCFC
urn:uuid:56E7448E-D56B-AA5C-3B2B549EEA0E89D0
2011-01-05T07:01:07Z
2011-01-05T07:01:00Z
Matt Graf
<p>After painfully trying to use Mangoblog I have decided that I am going back to blogCFC.</p>
My First attempted at the "The Adapter Pattern/Wrapper Pattern"
urn:uuid:2EA43993-D56B-AA5C-3678F501B402BC1F
2011-01-03T08:01:00Z
2011-01-04T01:01:00Z
<p> </p>
<p>A friend of mine turned me on to a new pattern that I think I will be using more in the future "The Adapter Pattern/Wrapper Pattern".</p>
<p><strong>Intent</strong></p>
<ul>
<li>Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.</li>
<li>Wrap an existing class with a new interface.</li>
<li>Impedance match an old component to a new system</li>
</ul>
<p>--Source <a href="http://sourcemaking.com/design_patterns/adapter">http://sourcemaking.com/design_patterns/adapter</a></p>
<p> </p>
Matt Graf
<p>A friend of mine turned me on to a new pattern that I think I will be using more in the future "The Adapter Pattern/Wrapper Pattern".
</p>
<p><strong>Intent</strong>
</p>
<ul>
<li>Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.</li>
<li>Wrap an existing class with a new interface.</li>
<li>Impedance match an old component to a new system</li>
</ul>
<p>--Source <a href="http://sourcemaking.com/design_patterns/adapter">http://sourcemaking.com/design_patterns/adapter</a></p>
<p>So to play around with this concept, I had just shared with him payment gateway service. The function I was working on was a function called getGateway(), and it looked like this</p>
<p>
<div class='code'>
<iframe id='print_frame_F5254B5E6A3386F03AFB75733F94B998' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_F5254B5E6A3386F03AFB75733F94B998() {
var temp = document.getElementById('htmlencoded_plain_F5254B5E6A3386F03AFB75733F94B998').style.display;
document.getElementById('htmlencoded_plain_F5254B5E6A3386F03AFB75733F94B998').style.display=document.getElementById('formatted_code_F5254B5E6A3386F03AFB75733F94B998').style.display;
document.getElementById('formatted_code_F5254B5E6A3386F03AFB75733F94B998').style.display=temp;
if (temp=='none') {
document.getElementById('view_F5254B5E6A3386F03AFB75733F94B998').innerHTML='view formatted';
} else {
document.getElementById('view_F5254B5E6A3386F03AFB75733F94B998').innerHTML='view plain';
}
}
function copy_to_clipboard_F5254B5E6A3386F03AFB75733F94B998() {
var code=unescape(document.getElementById('htmlencoded_plain_F5254B5E6A3386F03AFB75733F94B998').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_F5254B5E6A3386F03AFB75733F94B998() {
window.frames['print_frame_F5254B5E6A3386F03AFB75733F94B998'].document.body.innerHTML = document.getElementById('formatted_code_F5254B5E6A3386F03AFB75733F94B998').innerHTML;
window.frames['print_frame_F5254B5E6A3386F03AFB75733F94B998'].focus();
window.frames['print_frame_F5254B5E6A3386F03AFB75733F94B998'].print();
}
function show_about_F5254B5E6A3386F03AFB75733F94B998() {
document.getElementById('about_F5254B5E6A3386F03AFB75733F94B998').style.display='inline';
window.setTimeout('hide_about_F5254B5E6A3386F03AFB75733F94B998();', 4000);
}
function hide_about_F5254B5E6A3386F03AFB75733F94B998() {
document.getElementById('about_F5254B5E6A3386F03AFB75733F94B998').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_F5254B5E6A3386F03AFB75733F94B998()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_F5254B5E6A3386F03AFB75733F94B998'>view plain</a>
<a href='javascript:copy_to_clipboard_F5254B5E6A3386F03AFB75733F94B998()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_F5254B5E6A3386F03AFB75733F94B998'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_F5254B5E6A3386F03AFB75733F94B998').style.display='inline';}</script>
<a href='javascript:print_F5254B5E6A3386F03AFB75733F94B998()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_F5254B5E6A3386F03AFB75733F94B998()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_F5254B5E6A3386F03AFB75733F94B998' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_F5254B5E6A3386F03AFB75733F94B998' style='display:none;color:#000'><cfargument name="MerchantProps" required="true" type="struct" ><br /> <cfscript><br /> var gw = {};<br /> <br /> switch ( arguments.MerchantProps.vendor )<br /> {<br /> case 'itransact':<br /> {<br /> gw.path = "itransact.itransact_cc";<br /> gw.MerchantAccount = arguments.MerchantProps.MerchantAccount;<br /> gw.Username = arguments.MerchantProps.Username;<br /> gw.Password = arguments.MerchantProps.Password;<br /> break;<br /> }<br /> <br /> case 'authorize':<br /> {<br /> gw.path = "authorizenet.authorizenet"; <br /> gw.MerchantAccount = trim( arguments.MerchantProps.MerchantAccount );<br /> gw.Username = trim( arguments.MerchantProps.Username);<br /> break;<br /> }<br /> <br /> case 'payflowpro':<br /> {<br /> gw.path = "payflowpro.payflowpro";<br /> gw.GatewayID = 1;//?????Not sure what this is for..Or if needed.<br /> gw.partner = arguments.MerchantProps.partner;<br /> gw.vendor = arguments.MerchantProps.payflowproVendor;<br /> gw.username = arguments.MerchantProps.Username;<br /> <br /> <br /> gw.password = arguments.MerchantProps.Password;<br /> <br /> break;<br /> }<br /> }<br /> <br /> gw.TestMode = arguments.MerchantProps.isInTestMode;<br /> // create gw and get reference <br /> getCFPayment().init(gw);<br /> <br /> gw = getCFPayment().getGateway();<br /> <br /> <br /> return gw;<br /> </cfscript></span>
<span id='formatted_code_F5254B5E6A3386F03AFB75733F94B998' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"MerchantProps"</span> required=<span style='color:#0000CC'>"true"</span> type=<span style='color:#0000CC'>"struct"</span> ></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cfscript></span><span style='color:#000000'><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> var gw = <span style='color:#000099'>{</span><span style='color:#000099'>}</span>;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <span style='color:blue'>switch</span> ( arguments.MerchantProps.vendor )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> <span style='color:blue'>case</span> 'itransact':<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> gw.path  = <span style='color:#006600'>"itransact.itransact_cc"</span>;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> gw.MerchantAccount  = arguments.MerchantProps.MerchantAccount;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> gw.Username  = arguments.MerchantProps.Username;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> gw.Password  = arguments.MerchantProps.Password;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> break;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> <span style='color:blue'>case</span> 'authorize':<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span> gw.path  = <span style='color:#006600'>"authorizenet.authorizenet"</span>; <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span> gw.MerchantAccount  = <span style='color:blue'>trim</span>( arguments.MerchantProps.MerchantAccount );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span> gw.Username  = <span style='color:blue'>trim</span>( arguments.MerchantProps.Username);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span> break;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>22</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>23</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>24</span> <span style='color:blue'>case</span> 'payflowpro':<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>25</span> <span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>26</span> gw.path  = <span style='color:#006600'>"payflowpro.payflowpro"</span>;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>27</span> gw.GatewayID = 1;<span style='color:#AAA'>//?????Not sure what this is for..Or if needed.<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>28</span></span> gw.partner  = arguments.MerchantProps.partner;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>29</span> gw.vendor  = arguments.MerchantProps.payflowproVendor;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>30</span> gw.username  = arguments.MerchantProps.Username;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>31</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>32</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>33</span> gw.password  = arguments.MerchantProps.Password;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>34</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>35</span> break;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>36</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>37</span> <span style='color:#000099'>}</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>38</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>39</span> gw.TestMode  = arguments.MerchantProps.isInTestMode;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>40</span> <span style='color:#AAA'>// create gw and get reference <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>41</span></span> getCFPayment().init(gw);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>42</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>43</span> gw = getCFPayment().getGateway();<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>44</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>45</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>46</span> <span style='color:blue'>return</span> gw;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>47</span> </span><span style='color:#990033'></cfscript></span><br /></span></div>
</p>
<p>He asked if I had heard of the adapter pattern. When I told him no, he went into the technical details. We decided to dive into it and build a couple adapter classes, to trim down the function above. The first thing we did was create a base Adapter
<div class='code'>
<iframe id='print_frame_D5B61CFC7134A6EAACF1A187AAF989BD' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_D5B61CFC7134A6EAACF1A187AAF989BD() {
var temp = document.getElementById('htmlencoded_plain_D5B61CFC7134A6EAACF1A187AAF989BD').style.display;
document.getElementById('htmlencoded_plain_D5B61CFC7134A6EAACF1A187AAF989BD').style.display=document.getElementById('formatted_code_D5B61CFC7134A6EAACF1A187AAF989BD').style.display;
document.getElementById('formatted_code_D5B61CFC7134A6EAACF1A187AAF989BD').style.display=temp;
if (temp=='none') {
document.getElementById('view_D5B61CFC7134A6EAACF1A187AAF989BD').innerHTML='view formatted';
} else {
document.getElementById('view_D5B61CFC7134A6EAACF1A187AAF989BD').innerHTML='view plain';
}
}
function copy_to_clipboard_D5B61CFC7134A6EAACF1A187AAF989BD() {
var code=unescape(document.getElementById('htmlencoded_plain_D5B61CFC7134A6EAACF1A187AAF989BD').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_D5B61CFC7134A6EAACF1A187AAF989BD() {
window.frames['print_frame_D5B61CFC7134A6EAACF1A187AAF989BD'].document.body.innerHTML = document.getElementById('formatted_code_D5B61CFC7134A6EAACF1A187AAF989BD').innerHTML;
window.frames['print_frame_D5B61CFC7134A6EAACF1A187AAF989BD'].focus();
window.frames['print_frame_D5B61CFC7134A6EAACF1A187AAF989BD'].print();
}
function show_about_D5B61CFC7134A6EAACF1A187AAF989BD() {
document.getElementById('about_D5B61CFC7134A6EAACF1A187AAF989BD').style.display='inline';
window.setTimeout('hide_about_D5B61CFC7134A6EAACF1A187AAF989BD();', 4000);
}
function hide_about_D5B61CFC7134A6EAACF1A187AAF989BD() {
document.getElementById('about_D5B61CFC7134A6EAACF1A187AAF989BD').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_D5B61CFC7134A6EAACF1A187AAF989BD()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_D5B61CFC7134A6EAACF1A187AAF989BD'>view plain</a>
<a href='javascript:copy_to_clipboard_D5B61CFC7134A6EAACF1A187AAF989BD()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_D5B61CFC7134A6EAACF1A187AAF989BD'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_D5B61CFC7134A6EAACF1A187AAF989BD').style.display='inline';}</script>
<a href='javascript:print_D5B61CFC7134A6EAACF1A187AAF989BD()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_D5B61CFC7134A6EAACF1A187AAF989BD()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_D5B61CFC7134A6EAACF1A187AAF989BD' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_D5B61CFC7134A6EAACF1A187AAF989BD' style='display:none;color:#000'><cfcomponent displayname="Base Adapter" extends="lib.com.class.Class"><br /> <cffunction name="process" output="false" returntype="Any"><br /> <br /> <cfthrow detail="This is an abstract method. It must be overwritten."/><br /> </cffunction><br /> <br /></cfcomponent></span>
<span id='formatted_code_D5B61CFC7134A6EAACF1A187AAF989BD' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfcomponent displayname=<span style='color:#0000CC'>"Base Adapter"</span> extends=<span style='color:#0000CC'>"lib.com.class.Class"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cffunction name=<span style='color:#0000CC'>"process"</span> output=<span style='color:#0000CC'>"false"</span> returntype=<span style='color:#0000CC'>"Any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#990033'><cfthrow detail=<span style='color:#0000CC'>"This is an abstract method. It must be overwritten."</span>/></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <span style='color:#990033'></cffunction></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span><span style='color:#990033'></cfcomponent></span><br /></span></div> </p>
<p>
Don't worry about what the base adapter extends "lib.com.class.Class" that is just a base class that I like all of my classes to extend.You will notice that the Base Adapter has a function called process, that function is not meant to be called directly but implemented.
Next we created a Base Payment Adapter </p>
<p>
<div class='code'>
<iframe id='print_frame_6A03B49C06B5760D1474AD4F29854E25' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_6A03B49C06B5760D1474AD4F29854E25() {
var temp = document.getElementById('htmlencoded_plain_6A03B49C06B5760D1474AD4F29854E25').style.display;
document.getElementById('htmlencoded_plain_6A03B49C06B5760D1474AD4F29854E25').style.display=document.getElementById('formatted_code_6A03B49C06B5760D1474AD4F29854E25').style.display;
document.getElementById('formatted_code_6A03B49C06B5760D1474AD4F29854E25').style.display=temp;
if (temp=='none') {
document.getElementById('view_6A03B49C06B5760D1474AD4F29854E25').innerHTML='view formatted';
} else {
document.getElementById('view_6A03B49C06B5760D1474AD4F29854E25').innerHTML='view plain';
}
}
function copy_to_clipboard_6A03B49C06B5760D1474AD4F29854E25() {
var code=unescape(document.getElementById('htmlencoded_plain_6A03B49C06B5760D1474AD4F29854E25').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_6A03B49C06B5760D1474AD4F29854E25() {
window.frames['print_frame_6A03B49C06B5760D1474AD4F29854E25'].document.body.innerHTML = document.getElementById('formatted_code_6A03B49C06B5760D1474AD4F29854E25').innerHTML;
window.frames['print_frame_6A03B49C06B5760D1474AD4F29854E25'].focus();
window.frames['print_frame_6A03B49C06B5760D1474AD4F29854E25'].print();
}
function show_about_6A03B49C06B5760D1474AD4F29854E25() {
document.getElementById('about_6A03B49C06B5760D1474AD4F29854E25').style.display='inline';
window.setTimeout('hide_about_6A03B49C06B5760D1474AD4F29854E25();', 4000);
}
function hide_about_6A03B49C06B5760D1474AD4F29854E25() {
document.getElementById('about_6A03B49C06B5760D1474AD4F29854E25').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_6A03B49C06B5760D1474AD4F29854E25()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_6A03B49C06B5760D1474AD4F29854E25'>view plain</a>
<a href='javascript:copy_to_clipboard_6A03B49C06B5760D1474AD4F29854E25()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_6A03B49C06B5760D1474AD4F29854E25'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_6A03B49C06B5760D1474AD4F29854E25').style.display='inline';}</script>
<a href='javascript:print_6A03B49C06B5760D1474AD4F29854E25()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_6A03B49C06B5760D1474AD4F29854E25()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_6A03B49C06B5760D1474AD4F29854E25' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_6A03B49C06B5760D1474AD4F29854E25' style='display:none;color:#000'><cfcomponent displayname="Payment Adapter" extends="lib.com.class.adapter.Apdapter"><br /></cfcomponent></span>
<span id='formatted_code_6A03B49C06B5760D1474AD4F29854E25' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfcomponent displayname=<span style='color:#0000CC'>"Payment Adapter"</span> extends=<span style='color:#0000CC'>"lib.com.class.adapter.Apdapter"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span><span style='color:#990033'></cfcomponent></span><br /></span></div> </p>
<p>
This class extends the Base Adapter but doesn't do anything, that does not mean that it can't do anything, at this time it just doesn't. We then created a PayflowPro Adapter</p>
<p>
<div class='code'>
<iframe id='print_frame_88C53621FF81FAB8DB7189F5AF3EE84E' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_88C53621FF81FAB8DB7189F5AF3EE84E() {
var temp = document.getElementById('htmlencoded_plain_88C53621FF81FAB8DB7189F5AF3EE84E').style.display;
document.getElementById('htmlencoded_plain_88C53621FF81FAB8DB7189F5AF3EE84E').style.display=document.getElementById('formatted_code_88C53621FF81FAB8DB7189F5AF3EE84E').style.display;
document.getElementById('formatted_code_88C53621FF81FAB8DB7189F5AF3EE84E').style.display=temp;
if (temp=='none') {
document.getElementById('view_88C53621FF81FAB8DB7189F5AF3EE84E').innerHTML='view formatted';
} else {
document.getElementById('view_88C53621FF81FAB8DB7189F5AF3EE84E').innerHTML='view plain';
}
}
function copy_to_clipboard_88C53621FF81FAB8DB7189F5AF3EE84E() {
var code=unescape(document.getElementById('htmlencoded_plain_88C53621FF81FAB8DB7189F5AF3EE84E').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_88C53621FF81FAB8DB7189F5AF3EE84E() {
window.frames['print_frame_88C53621FF81FAB8DB7189F5AF3EE84E'].document.body.innerHTML = document.getElementById('formatted_code_88C53621FF81FAB8DB7189F5AF3EE84E').innerHTML;
window.frames['print_frame_88C53621FF81FAB8DB7189F5AF3EE84E'].focus();
window.frames['print_frame_88C53621FF81FAB8DB7189F5AF3EE84E'].print();
}
function show_about_88C53621FF81FAB8DB7189F5AF3EE84E() {
document.getElementById('about_88C53621FF81FAB8DB7189F5AF3EE84E').style.display='inline';
window.setTimeout('hide_about_88C53621FF81FAB8DB7189F5AF3EE84E();', 4000);
}
function hide_about_88C53621FF81FAB8DB7189F5AF3EE84E() {
document.getElementById('about_88C53621FF81FAB8DB7189F5AF3EE84E').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_88C53621FF81FAB8DB7189F5AF3EE84E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_88C53621FF81FAB8DB7189F5AF3EE84E'>view plain</a>
<a href='javascript:copy_to_clipboard_88C53621FF81FAB8DB7189F5AF3EE84E()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_88C53621FF81FAB8DB7189F5AF3EE84E'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_88C53621FF81FAB8DB7189F5AF3EE84E').style.display='inline';}</script>
<a href='javascript:print_88C53621FF81FAB8DB7189F5AF3EE84E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_88C53621FF81FAB8DB7189F5AF3EE84E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_88C53621FF81FAB8DB7189F5AF3EE84E' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_88C53621FF81FAB8DB7189F5AF3EE84E' style='display:none;color:#000'><cfcomponent displayname="PayFlowpro Adapter" extends="lib.com.class.adapter.payment.payment"><br /> <cffunction name="process" returntype="void" output="false"><br /> <cfargument name="data" required="true" type="any"><br /> <cfargument name="MerchantProps" required="true" type="any"><br /> <cfscript><br /> argumnets.data.path = "payflowpro.payflowpro";<br /> argumnets.data.GatewayID = 1;//?????Not sure what this is for..Or if needed.<br /> argumnets.data.partner = arguments.MerchantProps.partner;<br /> argumnets.data.vendor = arguments.MerchantProps.payflowproVendor;<br /> argumnets.data.username = arguments.MerchantProps.Username; <br /> argumnets.data.password = arguments.MerchantProps.Password;<br /> </cfscript> <br /> </cffunction><br /> <br /></cfcomponent></span>
<span id='formatted_code_88C53621FF81FAB8DB7189F5AF3EE84E' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfcomponent displayname=<span style='color:#0000CC'>"PayFlowpro Adapter"</span> extends=<span style='color:#0000CC'>"lib.com.class.adapter.payment.payment"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cffunction name=<span style='color:#0000CC'>"process"</span> returntype=<span style='color:#0000CC'>"void"</span> output=<span style='color:#0000CC'>"false"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"data"</span>  required=<span style='color:#0000CC'>"true"</span> type=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"MerchantProps"</span>  required=<span style='color:#0000CC'>"true"</span> type=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <span style='color:#990033'><cfscript></span><span style='color:#000000'><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> argumnets.data.path  = <span style='color:#006600'>"payflowpro.payflowpro"</span>;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> argumnets.data.GatewayID = 1;<span style='color:#AAA'>//?????Not sure what this is for..Or if needed.<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span></span> argumnets.data.partner  = arguments.MerchantProps.partner;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> argumnets.data.vendor  = arguments.MerchantProps.payflowproVendor;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> argumnets.data.username  = arguments.MerchantProps.Username; <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> argumnets.data.password  = arguments.MerchantProps.Password;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> </span><span style='color:#990033'></cfscript></span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> <span style='color:#990033'></cffunction></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span><span style='color:#990033'></cfcomponent></span><br /></span></div> </p>
<p>
You will notice that it does exactly what the case statement does in the function above. That's correct. And you might think, man this is a lot code for nothing. What if you didn't use that the adapter here and you left the case statement alone. You would probably be okay if all of the clients in your application used PayFlowPro the same way. If you had a client that needed to add xyz to the PayFlowPro process, you might do something like this.
</p>
<p><div class='code'>
<iframe id='print_frame_19399687666CA832CA215AAD0277C0CE' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_19399687666CA832CA215AAD0277C0CE() {
var temp = document.getElementById('htmlencoded_plain_19399687666CA832CA215AAD0277C0CE').style.display;
document.getElementById('htmlencoded_plain_19399687666CA832CA215AAD0277C0CE').style.display=document.getElementById('formatted_code_19399687666CA832CA215AAD0277C0CE').style.display;
document.getElementById('formatted_code_19399687666CA832CA215AAD0277C0CE').style.display=temp;
if (temp=='none') {
document.getElementById('view_19399687666CA832CA215AAD0277C0CE').innerHTML='view formatted';
} else {
document.getElementById('view_19399687666CA832CA215AAD0277C0CE').innerHTML='view plain';
}
}
function copy_to_clipboard_19399687666CA832CA215AAD0277C0CE() {
var code=unescape(document.getElementById('htmlencoded_plain_19399687666CA832CA215AAD0277C0CE').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_19399687666CA832CA215AAD0277C0CE() {
window.frames['print_frame_19399687666CA832CA215AAD0277C0CE'].document.body.innerHTML = document.getElementById('formatted_code_19399687666CA832CA215AAD0277C0CE').innerHTML;
window.frames['print_frame_19399687666CA832CA215AAD0277C0CE'].focus();
window.frames['print_frame_19399687666CA832CA215AAD0277C0CE'].print();
}
function show_about_19399687666CA832CA215AAD0277C0CE() {
document.getElementById('about_19399687666CA832CA215AAD0277C0CE').style.display='inline';
window.setTimeout('hide_about_19399687666CA832CA215AAD0277C0CE();', 4000);
}
function hide_about_19399687666CA832CA215AAD0277C0CE() {
document.getElementById('about_19399687666CA832CA215AAD0277C0CE').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_19399687666CA832CA215AAD0277C0CE()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_19399687666CA832CA215AAD0277C0CE'>view plain</a>
<a href='javascript:copy_to_clipboard_19399687666CA832CA215AAD0277C0CE()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_19399687666CA832CA215AAD0277C0CE'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_19399687666CA832CA215AAD0277C0CE').style.display='inline';}</script>
<a href='javascript:print_19399687666CA832CA215AAD0277C0CE()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_19399687666CA832CA215AAD0277C0CE()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_19399687666CA832CA215AAD0277C0CE' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_19399687666CA832CA215AAD0277C0CE' style='display:none;color:#000'>case 'payflowpro_xyz':<br />{<br /> gw.path = "payflowpro.payflowpro";<br /> gw.GatewayID = 1;//?????Not sure what this is for..Or if needed.<br /> gw.partner = arguments.MerchantProps.partner;<br /> gw.vendor = arguments.MerchantProps.payflowproVendor;<br /> gw.username = arguments.MerchantProps.Username;<br /> gw.xyz = "this is for my new client";<br /> <br /> gw.password = arguments.MerchantProps.Password;<br /> <br /> break;<br />}</span>
<span id='formatted_code_19399687666CA832CA215AAD0277C0CE' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>case 'payflowpro_xyz':<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span><span style='color:#000099'>{</span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> gw.path  = "payflowpro.payflowpro";<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> gw.GatewayID = 1;//?????Not sure what this is for..Or if needed.<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> gw.partner  = arguments.MerchantProps.partner;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> gw.vendor  = arguments.MerchantProps.payflowproVendor;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> gw.username  = arguments.MerchantProps.Username;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> gw.xyz = "this is for my new client";<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> gw.password  = arguments.MerchantProps.Password;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> break;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span><span style='color:#000099'>}</span><br /></span></div> </p>
<p>
That works! But now you have this long switch statement which personally I find it hard to sift through when debugging code. With the way that I have implemented the Adapter Pattern, you would do it something like this.
<div class='code'>
<iframe id='print_frame_B7B6F1DF5F76BA69ECA451CB6DC3A58E' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_B7B6F1DF5F76BA69ECA451CB6DC3A58E() {
var temp = document.getElementById('htmlencoded_plain_B7B6F1DF5F76BA69ECA451CB6DC3A58E').style.display;
document.getElementById('htmlencoded_plain_B7B6F1DF5F76BA69ECA451CB6DC3A58E').style.display=document.getElementById('formatted_code_B7B6F1DF5F76BA69ECA451CB6DC3A58E').style.display;
document.getElementById('formatted_code_B7B6F1DF5F76BA69ECA451CB6DC3A58E').style.display=temp;
if (temp=='none') {
document.getElementById('view_B7B6F1DF5F76BA69ECA451CB6DC3A58E').innerHTML='view formatted';
} else {
document.getElementById('view_B7B6F1DF5F76BA69ECA451CB6DC3A58E').innerHTML='view plain';
}
}
function copy_to_clipboard_B7B6F1DF5F76BA69ECA451CB6DC3A58E() {
var code=unescape(document.getElementById('htmlencoded_plain_B7B6F1DF5F76BA69ECA451CB6DC3A58E').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_B7B6F1DF5F76BA69ECA451CB6DC3A58E() {
window.frames['print_frame_B7B6F1DF5F76BA69ECA451CB6DC3A58E'].document.body.innerHTML = document.getElementById('formatted_code_B7B6F1DF5F76BA69ECA451CB6DC3A58E').innerHTML;
window.frames['print_frame_B7B6F1DF5F76BA69ECA451CB6DC3A58E'].focus();
window.frames['print_frame_B7B6F1DF5F76BA69ECA451CB6DC3A58E'].print();
}
function show_about_B7B6F1DF5F76BA69ECA451CB6DC3A58E() {
document.getElementById('about_B7B6F1DF5F76BA69ECA451CB6DC3A58E').style.display='inline';
window.setTimeout('hide_about_B7B6F1DF5F76BA69ECA451CB6DC3A58E();', 4000);
}
function hide_about_B7B6F1DF5F76BA69ECA451CB6DC3A58E() {
document.getElementById('about_B7B6F1DF5F76BA69ECA451CB6DC3A58E').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_B7B6F1DF5F76BA69ECA451CB6DC3A58E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_B7B6F1DF5F76BA69ECA451CB6DC3A58E'>view plain</a>
<a href='javascript:copy_to_clipboard_B7B6F1DF5F76BA69ECA451CB6DC3A58E()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_B7B6F1DF5F76BA69ECA451CB6DC3A58E'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_B7B6F1DF5F76BA69ECA451CB6DC3A58E').style.display='inline';}</script>
<a href='javascript:print_B7B6F1DF5F76BA69ECA451CB6DC3A58E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_B7B6F1DF5F76BA69ECA451CB6DC3A58E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_B7B6F1DF5F76BA69ECA451CB6DC3A58E' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_B7B6F1DF5F76BA69ECA451CB6DC3A58E' style='display:none;color:#000'><cfcomponent displayname="PayFlowpro Adapter" extends="lib.com.class.adapter.payment.payment"><br /> <cffunction name="process" returntype="void" output="false"><br /> <cfargument name="data" required="true" type="any"><br /> <cfargument name="MerchantProps" required="true" type="any"><br /> <cfscript><br /> argumnets.data.path = "payflowpro.payflowpro";<br /> argumnets.data.GatewayID = 1;//?????Not sure what this is for..Or if needed.<br /> argumnets.data.partner = arguments.MerchantProps.partner;<br /> argumnets.data.vendor = arguments.MerchantProps.payflowproVendor;<br /> argumnets.data.username = arguments.MerchantProps.Username; <br /> argumnets.data.password = arguments.MerchantProps.Password;<br /> argumnets.data.xyz = "this is for my new client";<br /> </cfscript> <br /> </cffunction><br /> <br /></cfcomponent></span>
<span id='formatted_code_B7B6F1DF5F76BA69ECA451CB6DC3A58E' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cfcomponent displayname=<span style='color:#0000CC'>"PayFlowpro Adapter"</span> extends=<span style='color:#0000CC'>"lib.com.class.adapter.payment.payment"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cffunction name=<span style='color:#0000CC'>"process"</span> returntype=<span style='color:#0000CC'>"void"</span> output=<span style='color:#0000CC'>"false"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"data"</span>  required=<span style='color:#0000CC'>"true"</span> type=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"MerchantProps"</span>  required=<span style='color:#0000CC'>"true"</span> type=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <span style='color:#990033'><cfscript></span><span style='color:#000000'><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> argumnets.data.path  = <span style='color:#006600'>"payflowpro.payflowpro"</span>;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> argumnets.data.GatewayID = 1;<span style='color:#AAA'>//?????Not sure what this is for..Or if needed.<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span></span> argumnets.data.partner  = arguments.MerchantProps.partner;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> argumnets.data.vendor  = arguments.MerchantProps.payflowproVendor;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span> argumnets.data.username  = arguments.MerchantProps.Username; <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> argumnets.data.password  = arguments.MerchantProps.Password;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> argumnets.data.xyz = <span style='color:#006600'>"this is for my new client"</span>;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> </span><span style='color:#990033'></cfscript></span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <span style='color:#990033'></cffunction></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span><span style='color:#990033'></cfcomponent></span><br /></span></div> </p>
<p>
Now to show you the new an improved getGateway() function</p>
<p>
<div class='code'>
<iframe id='print_frame_419FE7878DD2D74265F9A59B8F3172EF' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_419FE7878DD2D74265F9A59B8F3172EF() {
var temp = document.getElementById('htmlencoded_plain_419FE7878DD2D74265F9A59B8F3172EF').style.display;
document.getElementById('htmlencoded_plain_419FE7878DD2D74265F9A59B8F3172EF').style.display=document.getElementById('formatted_code_419FE7878DD2D74265F9A59B8F3172EF').style.display;
document.getElementById('formatted_code_419FE7878DD2D74265F9A59B8F3172EF').style.display=temp;
if (temp=='none') {
document.getElementById('view_419FE7878DD2D74265F9A59B8F3172EF').innerHTML='view formatted';
} else {
document.getElementById('view_419FE7878DD2D74265F9A59B8F3172EF').innerHTML='view plain';
}
}
function copy_to_clipboard_419FE7878DD2D74265F9A59B8F3172EF() {
var code=unescape(document.getElementById('htmlencoded_plain_419FE7878DD2D74265F9A59B8F3172EF').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_419FE7878DD2D74265F9A59B8F3172EF() {
window.frames['print_frame_419FE7878DD2D74265F9A59B8F3172EF'].document.body.innerHTML = document.getElementById('formatted_code_419FE7878DD2D74265F9A59B8F3172EF').innerHTML;
window.frames['print_frame_419FE7878DD2D74265F9A59B8F3172EF'].focus();
window.frames['print_frame_419FE7878DD2D74265F9A59B8F3172EF'].print();
}
function show_about_419FE7878DD2D74265F9A59B8F3172EF() {
document.getElementById('about_419FE7878DD2D74265F9A59B8F3172EF').style.display='inline';
window.setTimeout('hide_about_419FE7878DD2D74265F9A59B8F3172EF();', 4000);
}
function hide_about_419FE7878DD2D74265F9A59B8F3172EF() {
document.getElementById('about_419FE7878DD2D74265F9A59B8F3172EF').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_419FE7878DD2D74265F9A59B8F3172EF()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_419FE7878DD2D74265F9A59B8F3172EF'>view plain</a>
<a href='javascript:copy_to_clipboard_419FE7878DD2D74265F9A59B8F3172EF()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_419FE7878DD2D74265F9A59B8F3172EF'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_419FE7878DD2D74265F9A59B8F3172EF').style.display='inline';}</script>
<a href='javascript:print_419FE7878DD2D74265F9A59B8F3172EF()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_419FE7878DD2D74265F9A59B8F3172EF()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_419FE7878DD2D74265F9A59B8F3172EF' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_419FE7878DD2D74265F9A59B8F3172EF' style='display:none;color:#000'><cffunction name="getGateway" access="private" output="false" returntype="any"><br /> <cfargument name="MerchantProps" required="true" type="struct" ><br /> <cfscript><br /> var gateway_props = {};<br /> <br /> getAdapter( 'payment.' &amp; arguments.MerchantProps.vendor ).process( gateway_props, MerchantProps );<br /> <br /> gateway_props.TestMode = arguments.MerchantProps.isInTestMode;<br /> // create gateway_props and get reference <br /> getCFPayment().init( gateway_props );<br /> <br /> gateway_props = getCFPayment().getGateway();<br /> <br /> return gateway_props;<br /> </cfscript><br /> </cffunction></span>
<span id='formatted_code_419FE7878DD2D74265F9A59B8F3172EF' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span><span style='color:#990033'><cffunction name=<span style='color:#0000CC'>"getGateway"</span> access=<span style='color:#0000CC'>"private"</span> output=<span style='color:#0000CC'>"false"</span> returntype=<span style='color:#0000CC'>"any"</span>></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span> <span style='color:#990033'><cfargument name=<span style='color:#0000CC'>"MerchantProps"</span> required=<span style='color:#0000CC'>"true"</span> type=<span style='color:#0000CC'>"struct"</span> ></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> <span style='color:#990033'><cfscript></span><span style='color:#000000'><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> var gateway_props = <span style='color:#000099'>{</span><span style='color:#000099'>}</span>;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span> getAdapter( 'payment.' &amp; arguments.MerchantProps.vendor ).process( gateway_props, MerchantProps );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span> gateway_props.TestMode  = arguments.MerchantProps.isInTestMode;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span> <span style='color:#AAA'>// create gateway_props and get reference <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span></span> getCFPayment().init( gateway_props );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> gateway_props = getCFPayment().getGateway();<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> <span style='color:blue'>return</span> gateway_props;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> </span><span style='color:#990033'></cfscript></span><br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> <span style='color:#990033'></cffunction></span><br /></span></div></p>
Seven Languages in Seven Weeks: Ruby Day 2
urn:uuid:2DBE0CE4-D56B-AA5C-3AE5A58D31A894A3
2010-12-28T10:12:00Z
2010-12-28T10:12:00Z
<p>
Day two was little faster pace and we saw Ruby's magic and sugar according to to the author. We dove into working with structures, arrays and built a simple class. So far Ruby seems pretty easy and a little fun and its very easy to find help via google.
</p>
Matt Graf
<p>
Day two was little faster pace and we saw Ruby's magic and sugar according to to the author. We dove into working with structures, arrays and built a simple class. So far Ruby seems pretty easy and a little fun and its very easy to find help via google.
</p>
<h3>HW1 Day 2:</h3>
<p>
Print the contents of an array of sixteen numbers, four number at a time, using just each. Now, do the with each_slice in in Enumerable. The first part of this homework was a little bit challenging to do but the second part of the homework just seemed like I was cheating it was so easy.
</p>
<h3>Part 1</h3>
<p>
<textarea class="brush: rails"> #Print the contents of an array of sixteen numbers,
#four number at a time, using just each. Now, do
#the with each_slice in in Enumerable.
puts "Using the each method"
#Create our array
arrNumber = (1..16).to_a
#Create a stack
variable_stack = []
#Loop through the array
arrNumber.each do |current_number|
#Add the current number to our variable stack
variable_stack.push( current_number )
#If the stack count is divisible by 4
#The ruby mod operator %
if variable_stack.count() % 4 == 0
#Here I decided to out the stack using the method
#Just for fun :)
puts variable_stack[ variable_stack.count()-4, variable_stack.count() ].join(', ')
end
end
</textarea></p>
<p style="font-style: italic;">
<strong>Output</strong><br />
Using the each method<br />
1, 2, 3, 4<br />
5, 6, 7, 8<br />
9, 10, 11, 12<br />
13, 14, 15, 16</p>
<h3>
Part 2:
</h3>
<p>
<textarea class="brush: rails">puts "Using the each_slice method."
puts "This seems like cheating"
#Now for the each_slice method
(1..16).each_slice( 4 ) {|a| p a}
</textarea>
</p>
<p style="font-style: italic;">
<strong>Output</strong><br />
Using the each_slice method. This seems like cheating<br />
1, 2, 3, 4<br />
5, 6, 7, 8<br />
9, 10, 11, 12<br />
13, 14, 15, 16</p>
<h3>HW2 Day 2:</h3>
<p>
The Tree class was interesting, but it did not allow you to specify a new tree with a clean interface. Let the initializer accept a nested structure with hashes and arrays. You should be able to specify a tree like this: { "grandpa" => { "dad" => { "child1" => {}, "child2" => {} }, "uncle" => { "child3" => {}, "child4" => {} } } }.
</p>
<p>
<textarea class="brush: rails">#The Tree class was interesting, but it did not allow you to specify a new tree with a clean interface.
#Let the initializer accept a nested structure with hashes and arrays.
#You should be able to specify a tree like this:
#{ "grandpa" => { "dad" => { "child1" => {}, "child2" => {} }, "uncle" => { "child3" => {}, "child4" => {} } } }.
class Tree
attr_accessor :childNodes, :node_name
def initialize( treeData )
#Define our class properties
@childNodes = []
@node_name = 'root'
#Alright I know this is not pretty but it seems to work
case treeData
when Hash
#If the treedata coming through is a hash
#loop through the hash
treeData.each do |key,val|
#set the node_name
@node_name = key
#Now we need to check the type of the val
case val
when Hash
#if the val is a hash we are going to
#loop through the keys
val.each do |sub_key, sub_val|
#create a new hash
new_hash={sub_key => sub_val}
#push to the @childNodes array
@childNodes.push( Tree.new( new_hash ) );
end
when Array
#if val is an array loop through the elements
val.each do |key,val|
#check to see if our key is a simple value
if key.size() != 1
if val != nil
#if val is not nil or null add the val to the array
@childNodes.push( Tree.new( val ) );
else
#if val is nil or null add the key to the array
@childNodes.push( Tree.new( key ) );
end
else
#if the key is not simple loop through it
key.each do |sub_key, sub_val|
#create a new hash and push is to our children array
new_hash={sub_key => sub_val}
@childNodes.push( Tree.new( new_hash ) );
end
end
end
else
#if val is simple then set the node_name to val
@node_name = val
end
end
when Array
#if val is an array loop through the elements
treeData.each do |key,val|
if key.size() != 1
if val != nil
@childNodes.push( Tree.new( val ) );
else
Tree.new( key )
end
else
key.each do |sub_key, sub_val|
new_hash={sub_key => sub_val}
@childNodes.push( Tree.new( new_hash ) );
end
end
end
else
@node_name = treeData
end
end
#this function works kind of like a debug
#it will dump all of the node data
def dump_nodes()
p @childNodes
end
#I visit the entire tree of nodes
def visit_all(&block)
visit &block
@childNodes.each {|c| c.visit_all &block}
end
#I visit just this node
def visit(&block)
block.call self
end
end
</textarea></p>
<p>
Building this class was really tricky because I needed to allow for nested hash and nested arrays. I know this isn't the cleanest class but it works. So lets try it.
</p>
<p>
First we will try the hash that the home provided.<br />
{ "grandpa" => { "dad" => { "child1" => {}, "child2" => {} }, "uncle" => { "child3" => {}, "child4" => {} } } }
</p>
<p>
<textarea class="brush: rails">#create the hash
family_hash = { "grandpa" => { "dad" => { "child1" => {}, "child2" => {} }, "uncle" => { "child3" => {}, "child4" => {} } } }
#create a new tree
ruby_tree = Tree.new( family_hash )
#Vist the top node
puts "Visiting a node"
puts
ruby_tree.visit {|node| puts node.node_name }
#Vist the entire tree
puts
puts "Visiting entire tree"
puts
ruby_tree.visit_all {|node| puts node.node_name}
</textarea></p>
<p class="code_output">
<strong>Output</strong>
Visiting a node<br /><br />
grandpa<br /><br />
Visiting entire tree<br /><br />
grandpa<br />
uncle<br />
child3<br />
child4<br />
dad<br />
child1<br />
child2</p>
<p>
In this example we are going to add couple of arrays as keys in the hash under grandpa called Aunts and an array of puppies under sub child 11.<br />
{"grandpa"=>{'dad'=>{'child 1' => {'sub child 11' => {"puppies"=>["rover","pluto"]}},'child 2' =>{}},'uncle'=>{'child 3' =>{},'child 4' =>{}},'Aunts'=>[{'Aunt 1'=>{'child 5'=>{}}},'Aunt 2']}}
</p>
<p>
<textarea class="brush: rails">#create the hash with nested arrays
family_hash = {"grandpa"=>{'dad'=>{'child 1' => {'sub child 11' => {"puppies"=>["rover","pluto"]}},'child 2' =>{}},'uncle'=>{'child 3' =>{},'child 4' =>{}},'Aunts'=>[{'Aunt 1'=>{'child 5'=>{}}},'Aunt 2']}}
#create a new tree
ruby_tree = Tree.new( family_hash )
#Vist the top node
puts "Visiting a node"
puts
ruby_tree.visit {|node| puts node.node_name }
#Vist the entire tree
puts
puts "Visiting entire tree"
puts
ruby_tree.visit_all {|node| puts node.node_name}
</textarea></p>
<p class="code_output">
Visiting a node<br /><br />
grandpa<br /><br />
Visiting entire tree<br /><br />
grandpa<br />
uncle<br />
child 4<br />
child 3<br />
Aunts<br />
Aunt 1<br />
child 5<br />
Aunt 2<br />
dad<br />
child 1<br />
sub child 11<br />
puppies<br />
rover<br />
pluto<br />
child 2</p>
<p>
Last example we are going to take the hash above and make it an array.<br />
["grandpa"=>{'dad'=>{'child 1' => {'sub child 11' => {"puppies"=>["rover","pluto"]}},'child 2' =>{}},'uncle'=>{'child 3' =>{},'child 4' =>{}},'Aunts'=>[{'Aunt 1'=>{'child 5'=>{}}},'Aunt 2']}]
</p>
<p>
<textarea class="brush: rails">#create an array with nested hashs with nested arrays
family_array = ["grandpa"=>{'dad'=>{'child 1' => {'sub child 11' => {"puppies"=>["rover","pluto"]}},'child 2' =>{}},'uncle'=>{'child 3' =>{},'child 4' =>{}},'Aunts'=>[{'Aunt 1'=>{'child 5'=>{}}},'Aunt 2']}]
#create a new tree
ruby_tree = Tree.new( family_array )
#Vist the top node
puts "Visiting a node"
puts
ruby_tree.visit {|node| puts node.node_name }
#Vist the entire tree
puts
puts "Visiting entire tree"
puts
ruby_tree.visit_all {|node| puts node.node_name}
</textarea></p>
<p>
Notice that when we sent in the array that the top node is root.
</p>
<p class="code_output">
Visiting a node<br /><br />
root<br /><br />
Visiting entire tree<br /><br />
root<br />
grandpa<br />
uncle<br />
child 4<br />
child 3<br />
Aunts<br />
Aunt 1<br />
child 5<br />
Aunt 2<br />
dad<br />
child 1<br />
sub child 11<br />
puppies<br />
rover<br />
pluto<br />
child 2</p>
<p> </p>
<h3 style="font-size: 1.17em;">HW3 Day 2:</h3>
<p> </p>
<p>Write a simple grep that will print the lines of a file having any occurrences of a phrase anywhere in that line. You will need to do a simple regular expression match and read lines from a file. (This is surprisingly simple in Ruby.) If you want, include line numbers. </p>
<p>For my text file I create a file of this article http://sports.espn.go.com/nfl/news/story?id=5960674, Where Pennsylvania Governor: Postponement proves U.S. a 'nation of wusses' - from ESPN.com</p>
<p>
<textarea class="brush: rails">counter = 1
file = File.new("readfile.txt", "r")
while (line = file.gets)
found_it = ( line ).grep /wusses/i
if found_it.length>0
puts "#{counter}: #{found_it}"
end
counter = counter + 1
end
file.close
</textarea></p>
<p> </p>
<p class="code_output">
<strong>Output</strong><br />
8: We've become a nation of wusses. The Chinese are kicking our butt in everything. If this was in China do you think the Chinese would have called off the game?
<br /><br />
17: "We've become a nation of wusses. The Chinese are kicking our butt in everything," he added. "If this was in China do you think the Chinese would have called off the game? People would have been marching down to the stadium, they would have walked and they would have been doing calculus on the way down."
<br /><br />
33: "What do you think [Hall of Fame coach Vince] Lombardi would say?" Rendell asked Monday. "He would say that we've become a nation of wusses."</p>
<p> </p>
<p>Well Day 2 is done only 1 more day. And some far I really like Ruby.</p>
Seven Languages in Seven Weeks: Ruby Day 1
urn:uuid:28E0376B-D56B-AA5C-3482CB5C9254C654
2010-12-27T09:12:12Z
2010-12-28T10:12:00Z
Matt Graf
<p> </p>
<p>For Christmas 2010 my wife bought me Seven Languages in Seven Weeks which I ask for after seeing it on Ben Nadel's blog. </p>
<p>I Finished Day 1 of Ruby, so far its a very easy read. I learned how to output strings, a couple of different loops (while and until), Decisions (if and unless) and a little more. One of the things that I like about Ruby is the way it reads. </p>
<p><strong>Example 1:</strong></p>
<p> </p>
<p><div class='code'>
<iframe id='print_frame_1B1881EAC1656A19B1A771FC2E68BF7F' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_1B1881EAC1656A19B1A771FC2E68BF7F() {
var temp = document.getElementById('htmlencoded_plain_1B1881EAC1656A19B1A771FC2E68BF7F').style.display;
document.getElementById('htmlencoded_plain_1B1881EAC1656A19B1A771FC2E68BF7F').style.display=document.getElementById('formatted_code_1B1881EAC1656A19B1A771FC2E68BF7F').style.display;
document.getElementById('formatted_code_1B1881EAC1656A19B1A771FC2E68BF7F').style.display=temp;
if (temp=='none') {
document.getElementById('view_1B1881EAC1656A19B1A771FC2E68BF7F').innerHTML='view formatted';
} else {
document.getElementById('view_1B1881EAC1656A19B1A771FC2E68BF7F').innerHTML='view plain';
}
}
function copy_to_clipboard_1B1881EAC1656A19B1A771FC2E68BF7F() {
var code=unescape(document.getElementById('htmlencoded_plain_1B1881EAC1656A19B1A771FC2E68BF7F').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_1B1881EAC1656A19B1A771FC2E68BF7F() {
window.frames['print_frame_1B1881EAC1656A19B1A771FC2E68BF7F'].document.body.innerHTML = document.getElementById('formatted_code_1B1881EAC1656A19B1A771FC2E68BF7F').innerHTML;
window.frames['print_frame_1B1881EAC1656A19B1A771FC2E68BF7F'].focus();
window.frames['print_frame_1B1881EAC1656A19B1A771FC2E68BF7F'].print();
}
function show_about_1B1881EAC1656A19B1A771FC2E68BF7F() {
document.getElementById('about_1B1881EAC1656A19B1A771FC2E68BF7F').style.display='inline';
window.setTimeout('hide_about_1B1881EAC1656A19B1A771FC2E68BF7F();', 4000);
}
function hide_about_1B1881EAC1656A19B1A771FC2E68BF7F() {
document.getElementById('about_1B1881EAC1656A19B1A771FC2E68BF7F').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_1B1881EAC1656A19B1A771FC2E68BF7F()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_1B1881EAC1656A19B1A771FC2E68BF7F'>view plain</a>
<a href='javascript:copy_to_clipboard_1B1881EAC1656A19B1A771FC2E68BF7F()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_1B1881EAC1656A19B1A771FC2E68BF7F'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_1B1881EAC1656A19B1A771FC2E68BF7F').style.display='inline';}</script>
<a href='javascript:print_1B1881EAC1656A19B1A771FC2E68BF7F()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_1B1881EAC1656A19B1A771FC2E68BF7F()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_1B1881EAC1656A19B1A771FC2E68BF7F' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_1B1881EAC1656A19B1A771FC2E68BF7F' style='display:none;color:#000'>x = 4<br />unless x == 4<br /> puts("This appears to be true");<br />else<br /> puts("This appears to be false");<br />end</span>
<span id='formatted_code_1B1881EAC1656A19B1A771FC2E68BF7F' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>x = 4<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>unless x == 4<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span> puts("This appears to be true");<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span>else<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> puts("This appears to be false");<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span>end<br /></span></div></p>
<p>Day 1 HW</p>
<p>Print the string "Hello, World."</p>
<p>
<div class='code'>
<iframe id='print_frame_691C24C8548A4A71805BB48CE8BB613E' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_691C24C8548A4A71805BB48CE8BB613E() {
var temp = document.getElementById('htmlencoded_plain_691C24C8548A4A71805BB48CE8BB613E').style.display;
document.getElementById('htmlencoded_plain_691C24C8548A4A71805BB48CE8BB613E').style.display=document.getElementById('formatted_code_691C24C8548A4A71805BB48CE8BB613E').style.display;
document.getElementById('formatted_code_691C24C8548A4A71805BB48CE8BB613E').style.display=temp;
if (temp=='none') {
document.getElementById('view_691C24C8548A4A71805BB48CE8BB613E').innerHTML='view formatted';
} else {
document.getElementById('view_691C24C8548A4A71805BB48CE8BB613E').innerHTML='view plain';
}
}
function copy_to_clipboard_691C24C8548A4A71805BB48CE8BB613E() {
var code=unescape(document.getElementById('htmlencoded_plain_691C24C8548A4A71805BB48CE8BB613E').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_691C24C8548A4A71805BB48CE8BB613E() {
window.frames['print_frame_691C24C8548A4A71805BB48CE8BB613E'].document.body.innerHTML = document.getElementById('formatted_code_691C24C8548A4A71805BB48CE8BB613E').innerHTML;
window.frames['print_frame_691C24C8548A4A71805BB48CE8BB613E'].focus();
window.frames['print_frame_691C24C8548A4A71805BB48CE8BB613E'].print();
}
function show_about_691C24C8548A4A71805BB48CE8BB613E() {
document.getElementById('about_691C24C8548A4A71805BB48CE8BB613E').style.display='inline';
window.setTimeout('hide_about_691C24C8548A4A71805BB48CE8BB613E();', 4000);
}
function hide_about_691C24C8548A4A71805BB48CE8BB613E() {
document.getElementById('about_691C24C8548A4A71805BB48CE8BB613E').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_691C24C8548A4A71805BB48CE8BB613E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_691C24C8548A4A71805BB48CE8BB613E'>view plain</a>
<a href='javascript:copy_to_clipboard_691C24C8548A4A71805BB48CE8BB613E()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_691C24C8548A4A71805BB48CE8BB613E'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_691C24C8548A4A71805BB48CE8BB613E').style.display='inline';}</script>
<a href='javascript:print_691C24C8548A4A71805BB48CE8BB613E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_691C24C8548A4A71805BB48CE8BB613E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_691C24C8548A4A71805BB48CE8BB613E' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_691C24C8548A4A71805BB48CE8BB613E' style='display:none;color:#000'>#Print the string "Hello, World."<br />print "Hello, World."</span>
<span id='formatted_code_691C24C8548A4A71805BB48CE8BB613E' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>#Print the string "Hello, World."<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>print "Hello, World."<br /></span></div></p>
<p>For the string "Hello, Ruby." find the index of the word "Ruby."</p>
<p>
<div class='code'>
<iframe id='print_frame_E643F3F60931CAD1CD987769067C4D0E' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_E643F3F60931CAD1CD987769067C4D0E() {
var temp = document.getElementById('htmlencoded_plain_E643F3F60931CAD1CD987769067C4D0E').style.display;
document.getElementById('htmlencoded_plain_E643F3F60931CAD1CD987769067C4D0E').style.display=document.getElementById('formatted_code_E643F3F60931CAD1CD987769067C4D0E').style.display;
document.getElementById('formatted_code_E643F3F60931CAD1CD987769067C4D0E').style.display=temp;
if (temp=='none') {
document.getElementById('view_E643F3F60931CAD1CD987769067C4D0E').innerHTML='view formatted';
} else {
document.getElementById('view_E643F3F60931CAD1CD987769067C4D0E').innerHTML='view plain';
}
}
function copy_to_clipboard_E643F3F60931CAD1CD987769067C4D0E() {
var code=unescape(document.getElementById('htmlencoded_plain_E643F3F60931CAD1CD987769067C4D0E').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_E643F3F60931CAD1CD987769067C4D0E() {
window.frames['print_frame_E643F3F60931CAD1CD987769067C4D0E'].document.body.innerHTML = document.getElementById('formatted_code_E643F3F60931CAD1CD987769067C4D0E').innerHTML;
window.frames['print_frame_E643F3F60931CAD1CD987769067C4D0E'].focus();
window.frames['print_frame_E643F3F60931CAD1CD987769067C4D0E'].print();
}
function show_about_E643F3F60931CAD1CD987769067C4D0E() {
document.getElementById('about_E643F3F60931CAD1CD987769067C4D0E').style.display='inline';
window.setTimeout('hide_about_E643F3F60931CAD1CD987769067C4D0E();', 4000);
}
function hide_about_E643F3F60931CAD1CD987769067C4D0E() {
document.getElementById('about_E643F3F60931CAD1CD987769067C4D0E').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_E643F3F60931CAD1CD987769067C4D0E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_E643F3F60931CAD1CD987769067C4D0E'>view plain</a>
<a href='javascript:copy_to_clipboard_E643F3F60931CAD1CD987769067C4D0E()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_E643F3F60931CAD1CD987769067C4D0E'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_E643F3F60931CAD1CD987769067C4D0E').style.display='inline';}</script>
<a href='javascript:print_E643F3F60931CAD1CD987769067C4D0E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_E643F3F60931CAD1CD987769067C4D0E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_E643F3F60931CAD1CD987769067C4D0E' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_E643F3F60931CAD1CD987769067C4D0E' style='display:none;color:#000'>#For the string "Hello, Ruby." find the index of the word "Ruby."<br />phrase = "Hello, Ruby."<br />puts phrase.index("Ruby.")</span>
<span id='formatted_code_E643F3F60931CAD1CD987769067C4D0E' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>#For the string "Hello, Ruby." find the index of the word "Ruby."<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>phrase = "Hello, Ruby."<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span>puts phrase.index("Ruby.")<br /></span></div></p>
<p>Print your name ten time</p>
<p>
<div class='code'>
<iframe id='print_frame_50AFA77FDB68B5A34DFC0EF6F519EBBA' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_50AFA77FDB68B5A34DFC0EF6F519EBBA() {
var temp = document.getElementById('htmlencoded_plain_50AFA77FDB68B5A34DFC0EF6F519EBBA').style.display;
document.getElementById('htmlencoded_plain_50AFA77FDB68B5A34DFC0EF6F519EBBA').style.display=document.getElementById('formatted_code_50AFA77FDB68B5A34DFC0EF6F519EBBA').style.display;
document.getElementById('formatted_code_50AFA77FDB68B5A34DFC0EF6F519EBBA').style.display=temp;
if (temp=='none') {
document.getElementById('view_50AFA77FDB68B5A34DFC0EF6F519EBBA').innerHTML='view formatted';
} else {
document.getElementById('view_50AFA77FDB68B5A34DFC0EF6F519EBBA').innerHTML='view plain';
}
}
function copy_to_clipboard_50AFA77FDB68B5A34DFC0EF6F519EBBA() {
var code=unescape(document.getElementById('htmlencoded_plain_50AFA77FDB68B5A34DFC0EF6F519EBBA').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_50AFA77FDB68B5A34DFC0EF6F519EBBA() {
window.frames['print_frame_50AFA77FDB68B5A34DFC0EF6F519EBBA'].document.body.innerHTML = document.getElementById('formatted_code_50AFA77FDB68B5A34DFC0EF6F519EBBA').innerHTML;
window.frames['print_frame_50AFA77FDB68B5A34DFC0EF6F519EBBA'].focus();
window.frames['print_frame_50AFA77FDB68B5A34DFC0EF6F519EBBA'].print();
}
function show_about_50AFA77FDB68B5A34DFC0EF6F519EBBA() {
document.getElementById('about_50AFA77FDB68B5A34DFC0EF6F519EBBA').style.display='inline';
window.setTimeout('hide_about_50AFA77FDB68B5A34DFC0EF6F519EBBA();', 4000);
}
function hide_about_50AFA77FDB68B5A34DFC0EF6F519EBBA() {
document.getElementById('about_50AFA77FDB68B5A34DFC0EF6F519EBBA').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_50AFA77FDB68B5A34DFC0EF6F519EBBA()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_50AFA77FDB68B5A34DFC0EF6F519EBBA'>view plain</a>
<a href='javascript:copy_to_clipboard_50AFA77FDB68B5A34DFC0EF6F519EBBA()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_50AFA77FDB68B5A34DFC0EF6F519EBBA'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_50AFA77FDB68B5A34DFC0EF6F519EBBA').style.display='inline';}</script>
<a href='javascript:print_50AFA77FDB68B5A34DFC0EF6F519EBBA()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_50AFA77FDB68B5A34DFC0EF6F519EBBA()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_50AFA77FDB68B5A34DFC0EF6F519EBBA' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_50AFA77FDB68B5A34DFC0EF6F519EBBA' style='display:none;color:#000'>#Print your name ten time<br />i = 0<br />while i &lt;= 10<br /> puts "Matt Graf" <br /> i +=1<br />end</span>
<span id='formatted_code_50AFA77FDB68B5A34DFC0EF6F519EBBA' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>#Print your name ten time<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>i = 0<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span>while i &lt;= 10<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span> puts "Matt Graf" <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span> i +=1<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span>end<br /></span></div></p>
<p>Print the string "This is sentence number 1," where the number 1 changes from 1 to 10</p>
<p>
<div class='code'>
<iframe id='print_frame_F5A55E797FC62C62D56E13C79F3AE13E' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_F5A55E797FC62C62D56E13C79F3AE13E() {
var temp = document.getElementById('htmlencoded_plain_F5A55E797FC62C62D56E13C79F3AE13E').style.display;
document.getElementById('htmlencoded_plain_F5A55E797FC62C62D56E13C79F3AE13E').style.display=document.getElementById('formatted_code_F5A55E797FC62C62D56E13C79F3AE13E').style.display;
document.getElementById('formatted_code_F5A55E797FC62C62D56E13C79F3AE13E').style.display=temp;
if (temp=='none') {
document.getElementById('view_F5A55E797FC62C62D56E13C79F3AE13E').innerHTML='view formatted';
} else {
document.getElementById('view_F5A55E797FC62C62D56E13C79F3AE13E').innerHTML='view plain';
}
}
function copy_to_clipboard_F5A55E797FC62C62D56E13C79F3AE13E() {
var code=unescape(document.getElementById('htmlencoded_plain_F5A55E797FC62C62D56E13C79F3AE13E').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_F5A55E797FC62C62D56E13C79F3AE13E() {
window.frames['print_frame_F5A55E797FC62C62D56E13C79F3AE13E'].document.body.innerHTML = document.getElementById('formatted_code_F5A55E797FC62C62D56E13C79F3AE13E').innerHTML;
window.frames['print_frame_F5A55E797FC62C62D56E13C79F3AE13E'].focus();
window.frames['print_frame_F5A55E797FC62C62D56E13C79F3AE13E'].print();
}
function show_about_F5A55E797FC62C62D56E13C79F3AE13E() {
document.getElementById('about_F5A55E797FC62C62D56E13C79F3AE13E').style.display='inline';
window.setTimeout('hide_about_F5A55E797FC62C62D56E13C79F3AE13E();', 4000);
}
function hide_about_F5A55E797FC62C62D56E13C79F3AE13E() {
document.getElementById('about_F5A55E797FC62C62D56E13C79F3AE13E').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_F5A55E797FC62C62D56E13C79F3AE13E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_F5A55E797FC62C62D56E13C79F3AE13E'>view plain</a>
<a href='javascript:copy_to_clipboard_F5A55E797FC62C62D56E13C79F3AE13E()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_F5A55E797FC62C62D56E13C79F3AE13E'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_F5A55E797FC62C62D56E13C79F3AE13E').style.display='inline';}</script>
<a href='javascript:print_F5A55E797FC62C62D56E13C79F3AE13E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_F5A55E797FC62C62D56E13C79F3AE13E()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_F5A55E797FC62C62D56E13C79F3AE13E' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_F5A55E797FC62C62D56E13C79F3AE13E' style='display:none;color:#000'>#Print the string "This is sentence number 1," where the number 1 <br />#changes from 1 to 10<br />i=1;<br />until i &gt; 10 do<br /> puts ("This is Sentence number #{i},")<br /> (i+=1);<br />end</span>
<span id='formatted_code_F5A55E797FC62C62D56E13C79F3AE13E' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>#Print the string "This is sentence number 1," where the number 1 <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>#changes from 1 to 10<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span>i=1;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span>until i &gt; 10  do<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span>   puts ("This is Sentence number #<span style='color:#000099'>{</span>i<span style='color:#000099'>}</span>,")<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span>   (i+=1);<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span>end<br /></span></div></p>
<p>Run a Ruby program from a file.</p>
<p>
<div class='code'>
<iframe id='print_frame_F9E3360332767ABDC4A3B2A1D6169477' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_F9E3360332767ABDC4A3B2A1D6169477() {
var temp = document.getElementById('htmlencoded_plain_F9E3360332767ABDC4A3B2A1D6169477').style.display;
document.getElementById('htmlencoded_plain_F9E3360332767ABDC4A3B2A1D6169477').style.display=document.getElementById('formatted_code_F9E3360332767ABDC4A3B2A1D6169477').style.display;
document.getElementById('formatted_code_F9E3360332767ABDC4A3B2A1D6169477').style.display=temp;
if (temp=='none') {
document.getElementById('view_F9E3360332767ABDC4A3B2A1D6169477').innerHTML='view formatted';
} else {
document.getElementById('view_F9E3360332767ABDC4A3B2A1D6169477').innerHTML='view plain';
}
}
function copy_to_clipboard_F9E3360332767ABDC4A3B2A1D6169477() {
var code=unescape(document.getElementById('htmlencoded_plain_F9E3360332767ABDC4A3B2A1D6169477').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_F9E3360332767ABDC4A3B2A1D6169477() {
window.frames['print_frame_F9E3360332767ABDC4A3B2A1D6169477'].document.body.innerHTML = document.getElementById('formatted_code_F9E3360332767ABDC4A3B2A1D6169477').innerHTML;
window.frames['print_frame_F9E3360332767ABDC4A3B2A1D6169477'].focus();
window.frames['print_frame_F9E3360332767ABDC4A3B2A1D6169477'].print();
}
function show_about_F9E3360332767ABDC4A3B2A1D6169477() {
document.getElementById('about_F9E3360332767ABDC4A3B2A1D6169477').style.display='inline';
window.setTimeout('hide_about_F9E3360332767ABDC4A3B2A1D6169477();', 4000);
}
function hide_about_F9E3360332767ABDC4A3B2A1D6169477() {
document.getElementById('about_F9E3360332767ABDC4A3B2A1D6169477').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_F9E3360332767ABDC4A3B2A1D6169477()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_F9E3360332767ABDC4A3B2A1D6169477'>view plain</a>
<a href='javascript:copy_to_clipboard_F9E3360332767ABDC4A3B2A1D6169477()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_F9E3360332767ABDC4A3B2A1D6169477'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_F9E3360332767ABDC4A3B2A1D6169477').style.display='inline';}</script>
<a href='javascript:print_F9E3360332767ABDC4A3B2A1D6169477()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_F9E3360332767ABDC4A3B2A1D6169477()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_F9E3360332767ABDC4A3B2A1D6169477' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_F9E3360332767ABDC4A3B2A1D6169477' style='display:none;color:#000'>#Run a Ruby program from a file.<br />ruby /users/foobar/rubydemo/foo.rb</span>
<span id='formatted_code_F9E3360332767ABDC4A3B2A1D6169477' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>#Run a Ruby program from a file.<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>ruby /users/foobar/rubydemo/foo.rb<br /></span></div></p>
<p>Bonus problem: If you're feeling the need for a little more, write a program that picks a random number. Let a player guess the number, telling the player whether the guess is too lower or too high.</p>
<p>
<div class='code'>
<iframe id='print_frame_C8472C964AFA9A12F525F5BBBE3F4991' style='display:inline;height:0px;width:0px;' frameborder='0'></iframe>
<script type='text/javascript'>
function toggle_view_C8472C964AFA9A12F525F5BBBE3F4991() {
var temp = document.getElementById('htmlencoded_plain_C8472C964AFA9A12F525F5BBBE3F4991').style.display;
document.getElementById('htmlencoded_plain_C8472C964AFA9A12F525F5BBBE3F4991').style.display=document.getElementById('formatted_code_C8472C964AFA9A12F525F5BBBE3F4991').style.display;
document.getElementById('formatted_code_C8472C964AFA9A12F525F5BBBE3F4991').style.display=temp;
if (temp=='none') {
document.getElementById('view_C8472C964AFA9A12F525F5BBBE3F4991').innerHTML='view formatted';
} else {
document.getElementById('view_C8472C964AFA9A12F525F5BBBE3F4991').innerHTML='view plain';
}
}
function copy_to_clipboard_C8472C964AFA9A12F525F5BBBE3F4991() {
var code=unescape(document.getElementById('htmlencoded_plain_C8472C964AFA9A12F525F5BBBE3F4991').innerHTML).replace(/</g, '\x3C').replace(/>/g, '\x3E').replace(/&/g, '\x26').replace(/\x3Cbr\x3E/gi, '\r\n').replace(new RegExp(' ', 'gi'), '\t');
window.clipboardData.setData('text',code);
}
function print_C8472C964AFA9A12F525F5BBBE3F4991() {
window.frames['print_frame_C8472C964AFA9A12F525F5BBBE3F4991'].document.body.innerHTML = document.getElementById('formatted_code_C8472C964AFA9A12F525F5BBBE3F4991').innerHTML;
window.frames['print_frame_C8472C964AFA9A12F525F5BBBE3F4991'].focus();
window.frames['print_frame_C8472C964AFA9A12F525F5BBBE3F4991'].print();
}
function show_about_C8472C964AFA9A12F525F5BBBE3F4991() {
document.getElementById('about_C8472C964AFA9A12F525F5BBBE3F4991').style.display='inline';
window.setTimeout('hide_about_C8472C964AFA9A12F525F5BBBE3F4991();', 4000);
}
function hide_about_C8472C964AFA9A12F525F5BBBE3F4991() {
document.getElementById('about_C8472C964AFA9A12F525F5BBBE3F4991').style.display='none';
}
</script>
<div style='width:99%;color:#FFF;background-color:#ccc;text-decoration:none;border: 1px solid #99a;vertical-align: middle;'>
<span style='margin:0 0 0 2em'/>
<a href='javascript:toggle_view_C8472C964AFA9A12F525F5BBBE3F4991()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_C8472C964AFA9A12F525F5BBBE3F4991'>view plain</a>
<a href='javascript:copy_to_clipboard_C8472C964AFA9A12F525F5BBBE3F4991()' style='display:none;color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;' id='view_copy_to_clipboard_link_C8472C964AFA9A12F525F5BBBE3F4991'>copy to clipboard</a>
<script type='text/javascript'>if(window.clipboardData) { document.getElementById('view_copy_to_clipboard_link_C8472C964AFA9A12F525F5BBBE3F4991').style.display='inline';}</script>
<a href='javascript:print_C8472C964AFA9A12F525F5BBBE3F4991()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>print</a>
<a href='javascript:show_about_C8472C964AFA9A12F525F5BBBE3F4991()' style='color:#FFF;text-decoration:none;margin:0 1.5em 0 .5em;'>about</a>
</div>
<span id='about_C8472C964AFA9A12F525F5BBBE3F4991' style='display:none;color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'> </span> ColdFISH is developed by Jason Delmore. Source code and license information available at <a href='http://coldfish.riaforge.org/'>coldfish.riaforge.org</a><br/></span>
<span id='htmlencoded_plain_C8472C964AFA9A12F525F5BBBE3F4991' style='display:none;color:#000'>#Bonus problem: If you're feeling the need for a little more, <br />#write a program that picks a random number. Let a player <br />#guess the number, telling the player whether the guess is too <br />#lower or too high.<br />#lets go head and build a randRange function because we can<br />def rand_range(min,max)<br /> min + rand( max - min )<br />end<br /># define a function, for the heck of it<br />def guess_number_game<br /> <br /> #create a random number<br /> start_num =9;<br /> end_num=10;<br /> random_number = rand_range( start_num, end_num );<br /> <br /> #create a variable to track how attempts it take <br /> #the user to guess the number <br /> user_attempt = 0;<br /> <br /> <br /> #prompt the user to guess a number between 1 and 10<br /> puts("Guess a Number? Between #{start_num} and #{end_num}. ");<br /> puts("Guess: ");<br /> <br /> #use the begin while loop<br /> begin <br /> <br /> #Get the users input and make it an integer<br /> user_guess = gets.chomp.to_i;<br /> <br /> #Here I am using one of the ways to <br /> #make a decision with an if<br /> puts "Guess higher: " if user_guess &lt; random_number<br /> <br /> #Here I wanted to use another decisions method unless<br /> puts "Guess lower: " unless user_guess &lt;= random_number<br /> <br /> #Track the users attempts<br /> user_attempt += 1;<br /> <br /> #Loop while the user's guess does not match <br /> #the random number<br /> end while( user_guess != random_number )<br /> <br /> #Output a message along with the user's attempts<br /> puts("Guessed it on #{user_attempt} try's");<br /> <br />end<br />#call the number game<br />guess_number_game</span>
<span id='formatted_code_C8472C964AFA9A12F525F5BBBE3F4991' style='color:#000'><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>1</span>#Bonus problem: If you're feeling the need for a little more, <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>2</span>#write a program that picks a random number. Let a player <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>3</span>#guess the number, telling the player whether the guess is too <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>4</span>#lower or too high.<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>5</span>#lets go head and build a randRange function because we can<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>6</span>def rand_range(min,max)<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>7</span>  min + rand( max - min )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>8</span>end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>9</span># define a function, for the heck of it<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>10</span>def guess_number_game<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>11</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>12</span> #create a random number<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>13</span> start_num =9;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>14</span> end_num=10;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>15</span> random_number = rand_range( start_num, end_num );<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>16</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>17</span> #create a variable to track how attempts it take <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>18</span> #the user to guess the number <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>19</span> user_attempt = 0;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>20</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>21</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>22</span> #prompt the user to guess a number between 1 and 10<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>23</span> puts("Guess a Number? Between #<span style='color:#000099'>{</span>start_num<span style='color:#000099'>}</span> and #<span style='color:#000099'>{</span>end_num<span style='color:#000099'>}</span>. ");<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>24</span> puts("Guess: ");<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>25</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>26</span> #use the begin while loop<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>27</span> begin <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>28</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>29</span> #Get the users input and make it an integer<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>30</span> user_guess = gets.chomp.to_i;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>31</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>32</span> #Here I am using one of the ways to <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>33</span> #make a decision with an if<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>34</span> puts "Guess higher: "  if user_guess &lt; random_number<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>35</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>36</span> #Here I wanted to use another decisions method unless<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>37</span> puts "Guess lower: "  unless user_guess &lt;= random_number<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>38</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>39</span> #Track the users attempts<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>40</span> user_attempt += 1;<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>41</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>42</span> #Loop while the user's guess does not match <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>43</span> #the random number<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>44</span> end while( user_guess != random_number )<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>45</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>46</span> #Output a message along with the user's attempts<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>47</span> puts("Guessed it on #<span style='color:#000099'>{</span>user_attempt<span style='color:#000099'>}</span> try's");<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>48</span> <br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>49</span>end<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>50</span>#call the number game<br /><span style='display:block;float:left;clear:left;width:2em;color:#999;background-color:#fffff6;text-align:right;border-width:0 1px 0 1px;border-color:#faf0e6;border-style:solid;margin:0 .5em 0 0;padding:0 .2em 0 0;'>51</span>guess_number_game<br /></span></div></p>
<p>I have 2 more days to go on Ruby.</p>
CFBuilder Tip Whitespcae characters
urn:uuid:D6BCE8CF-D56B-AA5C-3E9F0A3EF015E0B2
2010-10-22T06:10:15Z
2010-10-22T06:10:00Z
Matt Graf
<p>So today I was chugging alone and all of a su dden I had all of these Whitespace characters in my CFBuilder.</p>
<p><img src="/blog/assets/content/Screen shot 2010-10-22 at 6.31.23 PM.png" alt="" width="314" height="250" /></p>
<p> I could not for the life of my figure out how to remove them well thanks to <a href="http://www.google.com">Google</a> and <a href="http://www.coldfusionjedi.com/index.cfm/2010/4/30/Eclipse-Tip--Whitespace-characters-visible-when-they-are-turned-off">Raymond Camden</a> I was able to fix it. To fix it you simple use these key commands "<strong>ctrl</strong>" + "<strong>.</strong>" or if you are a Mac user "<strong>Command</strong>" + "<strong>.</strong>".</p>
<p><img src="/blog/assets/content/no-whitespace-characters.png" alt="" width="336" height="254" /></p>