<search function="ror">
  <name>Ruby on Rails Search</name>
  <category>Computers<category>Programming</category></category>
  <contributor>Brent Beardsley</contributor>
  <link>http://www.rubyonrails.com/</link>
  <description>
  Search Ruby on Rails
  <div class="helpboxDescLabels">Switches:</div>
  <table class="helpboxDescTable">
   <tr><td>/api</td><td> - </td><td>Search the rails api</td></tr>
   <tr><td>/archive</td><td> - </td><td>Search the Ruby Application Archive (RAA)</td></tr>
   <tr><td>/blog</td><td> - </td><td>Search the rails blog</td></tr>
   <tr><td>/capistrano</td><td> - </td><td>Goto Capistrano at capify.org</td></tr>
   <tr><td>/core</td><td> - </td><td>Search the ruby core for class documentation</td></tr>
   <tr><td>/documentation</td><td> - </td><td>Goto the main rails documentation page</td></tr>
   <tr><td>/forge</td><td> - </td><td>Search RubyForge.org for projects</td></tr>
   <tr><td>/forum</td><td> - </td><td>Search ruby-forum.com for message threads</td></tr>
   <tr><td>/garden</td><td> - </td><td>Search rubygarden.org</td></tr>
   <tr><td>/irc</td><td> - </td><td>Search the rubyonrails channel logs</td></tr>
   <tr><td>/jobs</td><td> - </td><td>Search jobs.rubynow.com</td></tr>
   <tr><td>/news</td><td> - </td><td>Goto rubyweeklynews.org</td></tr>
   <tr><td>/ocs</td><td> - </td><td>Goto OCS ruby forums</td></tr>
   <tr><td>/pastie</td><td> - </td><td>Search pastie.caboo.se</td></tr>
   <tr><td>/planet</td><td> - </td><td>Goto PlanetRubyOnRails.org</td></tr>
   <tr><td>/plugins</td><td> - </td><td>Search agilewebdevelopment.com plugins</td></tr>
   <tr><td>/prototype</td><td> - </td><td>Search Prototype api/goto prototypejs.org</td></tr>
   <tr><td>/refactormycode</td><td> - </td><td>Search refactormycode</td></tr>
   <tr><td>/ruby</td><td> - </td><td>Goto ruby-lang.org</td></tr>
   <tr><td>/scriptaculous</td><td> - </td><td>Search Scriptaculous api/goto script.aculo.us</td></tr>
   <tr><td>/source</td><td> - </td><td>Goto ruby on rails download page</td></tr>
   <tr><td>/stdlib</td><td> - </td><td>Search the ruby stdlib for class documentation</td></tr>
   <tr><td>/ticket</td><td> - </td><td>Goto ruby on rails ticket (patch)</td></tr>
   <tr><td>/weenie</td><td> - </td><td>Search rails weenie</td></tr>
   <tr><td>/wiki</td><td> - </td><td>Search the wiki for rails topics</td></tr>
  </table>
  <div class="helpboxDescLabels">Examples:</div>
  <table class="helpboxDescTable">
     <tr><td>ror /api</td></tr>
  </table>
  </description>

  <script><![CDATA[
    function ror(q)
    {
      if( nullArgs("ror", q) )
        return;

	  var use_edge_rails = (typeof ror_edgedocs != "undefined") ? ror_edgedocs : false;
	  var url = false;
      var args = parseArgs(q, "api,archive,blog,capistrano,core,documentation,forum,forge,garden,irc,jobs,news,ocs,pastie,plugins,planet,prototype,refactormycode,ruby,scriptaculous,stdlib,ticket,vlad,wiki,weenie,snippets,source");
      if ( args.switches.length > 0 ) {
        switch( args.switches[0].name ) {
		  case "api": 
			if (args.q != '') {
			  if (use_edge_rails) {
				url = 'http://www.google.com/search?hl=en&q=' + escape(args.q) + '+site%3Aedgedocs.planetargon.org&btnI=I%27m+Feeling+Lucky';			   
			  } else {
				url = 'http://www.google.com/search?hl=en&q=' + escape(args.q) + '+site%3Aapi.rubyonrails.com&btnI=I%27m+Feeling+Lucky';
			  }
			} else {
	  		  url = use_edge_rails ? 'http://edgedocs.planetargon.org/' : 'http://api.rubyonrails.com/';
			}
			break;
		  case 'archive':
		    if (args.q != '') {
				url = 'http://raa.ruby-lang.org/search.rhtml?search=' + escape(args.q);
		    } else {
				url = 'http://raa.ruby-lang.org/';
			}
		    break;
		  case "blog": 
			if (args.q != '') {
				url = 'http://weblog.rubyonrails.com/live/search?q=' + escape(args.q) + '&_=';
			} else {
				url = "http://weblog.rubyonrails.com/";
			}
			break;
	      case "capistrano": 
		    if (args.q == 'wiki') {
			  url = "http://capify.stikipad.com/";
		    } else {
		      url = "http://www.capify.org/";
			}
			break;
		  case "core": 
			if (args.q != '') {
			    query = escape(args.q);
				known_modules_regexp = /^(abbrev|base64|benchmark|comparable|drb|enumerable|fileutils|find|forwardable|gc|generators|irb|kernel|math|net|objectspace|openuri|precision|process|rdoc|rexml|rinda|rss|singleforwardable|singleton|test::unit|timeout|uri|webrick|wsdl|xml|xsd|yaml)$/i
				if (query.match(known_modules_regexp)) {
				  query = "module+" + query;
				}
                url = "http://www.google.com/search?hl=en&q=allintitle%3A+" + query + "+site%3Aruby-doc.org%2Fcore%2Fclasses&btnI=I%27m+Feeling+Lucky";
			} else {
				url = "http://www.ruby-doc.org/core/";
			}
			break;
		  case "documentation": url = "http://documentation.rubyonrails.com/"; break;
		  case 'forge':
			if (args.q != '') {
			    url = 'http://rubyforge.org/search/?type_of_search=soft&words=' + escape(args.q) + '&Search=Search';
			} else {
				url = 'http://rubyforge.org/';
			}
		    break;
		  case "forum": 
			if (args.q != '') {
				url = 'http://www.ruby-forum.com/forum/search?query=' + escape(args.q) + '&forums%5B%5D=3&forums%5B%5D=4';
			} else {
				url = "http://www.ruby-forum.com/";
			}
			break;
		  case 'garden':
			if (args.q != '') {
				url = 'http://www.rubygarden.org/?terms=' + escape(args.q) + '&handler=searching';
 			} else {
				url = 'http://www.rubygarden.org/';
			}
			break;
		  case 'irc':
			if (args.q != '') {
				url = 'http://www.loglibrary.com/search/?search%5BAdvanced%5D=' + escape(args.q) + '&search%5BTitle%5D=%23rubyonrails&search%5BRange%5D=&search%5BDate%5D=&search%5BSortByDate%5D=0';
			} else {
				url = 'http://www.loglibrary.com/show_page/latest/62';
			}
		    break;
		  case 'jobs':
		    if (args.q != '') {
				url = 'http://jobs.rubynow.com/jobs/search_results?job%5Bterms%5D=' + escape(args.q) + '&commit=Search';
		    } else {
				url = 'http://jobs.rubynow.com/';
			}
			break;
		  case 'news': url = 'http://rubyweeklynews.org/'; break;
		  case 'ocs': url = 'http://www.ocsforums.com/forumdisplay.php?f=1'; break;
		  case 'pastie':
		    if (args.q != '') {
                if (args.q.match(/^author\//)) {
				  /* technoweenie, topfunky, madrobby, drnic, ezmobius, nzkoz, bitsweat, caged, Dreamer3 */
                  url = 'http://pastie.caboo.se/' + args.q;
                } else {
                  url = 'http://pastie.caboo.se/search/?q=' + escape(args.q);
                }
		    } else {
				url = 'http://pastie.caboo.se/';
			}
		    break;
		  case 'plugins':
		    if (args.q != '') {
				url = 'http://www.agilewebdevelopment.com/plugins/search?search=' + escape(args.q);
		    }
			else {
			    url = 'http://www.agilewebdevelopment.com/plugins';
			}
			break;
		  case 'planet': url = 'http://www.planetrubyonrails.org/'; break;
		  case 'prototype':
		    if (args.q != '') {
				url = 'http://prototypejs.org/api/' + escape(args.q.toLowerCase());
		    } else {
				url = 'http://www.prototypejs.org';
			}
		    break;
		  case 'refactormycode': url = 'http://www.refactormycode.com/codes/recent/ruby'; break;
		  case 'ruby': url = 'http://www.ruby-lang.org/en/'; break;
		  case 'scriptaculous':
		    if (args.q != '') {
                url = 'http://wiki.script.aculo.us/scriptaculous/search/?page[name]=' + escape(args.q);
		    } else {
				url = 'http://script.aculo.us';
			}
		    break;
		  case 'snippets': url = 'http://snippets.dzone.com/tag/ruby'; break;
		  case "source": url = "http://dev.rubyonrails.org/"; break;
		  case "stdlib": 
			if (args.q != '') {
				url = 'http://www.google.com/search?hl=en&q=allinurl:+rdoc+classes+' + escape(args.q) + '+site%3Aruby-doc.org%2Fstdlib%2F&btnI=I%27m+Feeling+Lucky';
			} else {
				url = "http://www.ruby-doc.org/stdlib/";
			}
			break;
		  case 'ticket':
		    if (args.q != '') {
			  url = 'http://dev.rubyonrails.org/ticket/' + escape(args.q);
		    } else {
			  url = 'http://dev.rubyonrails.org/report/3';   
			}
		    break;
		  case 'vlad': url = 'http://rubyhitsquad.com/Vlad_the_Deployer.html'; break;
		  case 'weenie': 
			if (args.q != '') {
				url = 'http://rails.techno-weenie.net/search?q=' + escape(args.q) + '&commit=Go';
			} else {
				url = 'http://rails.techno-weenie.net/';
			}
			break;
		  case "wiki":
			if (args.q != '') {
				url = 'http://www.google.com/search?q=' + escape(args.q) + '&Submit=Search+with+Google&domains=wiki.rubyonrails.com&sitesearch=wiki.rubyonrails.com';
			} else {
				url = "http://wiki.rubyonrails.com/rails/";
			}
			break;
		}
	  }
	  openSearchWindow(url);
    }
  ]]></script>

  <copyright>
    Copyright (c) 2005-2007 Brent Beardsley; Distributed under the terms of the GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt)
  </copyright>
</search>

