| 
									
										
										
										
											2011-10-15 08:22:36 +00:00
										 |  |  | require 'google/api_client' | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  | require 'rake' | 
					
						
							|  |  |  | require 'rake/clean' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CLOBBER.include('wiki') | 
					
						
							| 
									
										
										
										
											2011-10-15 08:22:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | CACHE_PREFIX = | 
					
						
							|  |  |  |   "http://www.gmodules.com/gadgets/proxy/container=default&debug=0&nocache=0/" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace :wiki do | 
					
						
							|  |  |  |   desc 'Autogenerate wiki pages' | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  |   task :supported_apis do | 
					
						
							| 
									
										
										
										
											2011-10-15 08:22:36 +00:00
										 |  |  |     output = <<-WIKI
 | 
					
						
							|  |  |  | #summary The list of supported APIs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The Google API Client for Ruby is a small flexible client library for accessing | 
					
						
							|  |  |  | the following Google APIs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | WIKI | 
					
						
							|  |  |  |     preferred_apis = {} | 
					
						
							|  |  |  |     client = Google::APIClient.new | 
					
						
							|  |  |  |     for api in client.discovered_apis | 
					
						
							|  |  |  |       if !preferred_apis.has_key?(api.name) | 
					
						
							|  |  |  |         preferred_apis[api.name] = api | 
					
						
							|  |  |  |       elsif api.preferred | 
					
						
							|  |  |  |         preferred_apis[api.name] = api | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     for api_name, api in preferred_apis | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  |       if api.documentation.to_s != "" && api.title != "" | 
					
						
							|  |  |  |         output += ( | 
					
						
							|  |  |  |           "||#{CACHE_PREFIX}#{api['icons']['x16']}||" + | 
					
						
							|  |  |  |           "[#{api.documentation} #{api.title}]||" + | 
					
						
							|  |  |  |           "#{api.description}||\n" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2011-10-15 08:22:36 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  |     output.gsub!(/-32\./, "-16.") | 
					
						
							| 
									
										
										
										
											2011-10-15 08:22:36 +00:00
										 |  |  |     wiki_path = File.expand_path( | 
					
						
							|  |  |  |       File.join(File.dirname(__FILE__), '../wiki/')) | 
					
						
							|  |  |  |     Dir.mkdir(wiki_path) if !File.exist?(wiki_path) | 
					
						
							|  |  |  |     File.open(File.join(wiki_path, 'SupportedAPIs.wiki'), 'w') do |file| | 
					
						
							|  |  |  |       file.write(output) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   task 'generate' => ['wiki:supported_apis'] | 
					
						
							| 
									
										
										
										
											2011-10-15 08:22:36 +00:00
										 |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  | begin | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |   $LOAD_PATH.unshift( | 
					
						
							|  |  |  |     File.expand_path(File.join(File.dirname(__FILE__), '../yard/lib')) | 
					
						
							|  |  |  |   ) | 
					
						
							|  |  |  |   $LOAD_PATH.unshift(File.expand_path('.')) | 
					
						
							|  |  |  |   $LOAD_PATH.uniq! | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  |   require 'yard' | 
					
						
							|  |  |  |   require 'yard/rake/wikidoc_task' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   namespace :wiki do | 
					
						
							|  |  |  |     desc 'Generate Wiki Documentation with YARD' | 
					
						
							|  |  |  |     YARD::Rake::WikidocTask.new do |yardoc| | 
					
						
							|  |  |  |       yardoc.name = 'reference' | 
					
						
							|  |  |  |       yardoc.options = [ | 
					
						
							|  |  |  |         '--verbose', | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |         '--markup', 'markdown', | 
					
						
							| 
									
										
										
										
											2011-12-02 14:24:56 +00:00
										 |  |  |         '-e', 'yard/lib/yard-google-code.rb', | 
					
						
							|  |  |  |         '-p', 'yard/templates', | 
					
						
							|  |  |  |         '-f', 'wiki', | 
					
						
							|  |  |  |         '-o', 'wiki' | 
					
						
							|  |  |  |       ] | 
					
						
							|  |  |  |       yardoc.files = [ | 
					
						
							|  |  |  |         'lib/**/*.rb', 'ext/**/*.c', '-', 'README.md', 'CHANGELOG.md' | 
					
						
							|  |  |  |       ] | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     task 'generate' => ['wiki:reference', 'wiki:supported_apis'] | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | rescue LoadError | 
					
						
							|  |  |  |   # If yard isn't available, it's not the end of the world | 
					
						
							|  |  |  |   warn('YARD unavailable. Cannot fully generate wiki.') | 
					
						
							|  |  |  | end |