Module: RestApiDoc
- Includes:
- FileUtils, Config
- Defined in:
- lib/restapi_doc.rb,
lib/restapi_doc/config.rb,
lib/restapi_doc/railtie.rb,
lib/restapi_doc/method_doc.rb,
lib/restapi_doc/resource_doc.rb
Defined Under Namespace
Modules: Config Classes: MethodDoc, ParsingException, Railtie, ResourceDoc
Constant Summary collapse
- VERSION =
File.read(File.("../VERSION", File.dirname(__FILE__)))
- METHODS =
valid api methods
["GET", "PUT", "DELETE", "POST"]
Instance Method Summary collapse
- #copy_assets! ⇒ Object
- #create_structure ⇒ Object
-
#generate_doc(resource_docs) ⇒ Object
Generates views and their index in a temp directory.
-
#generate_index_templates(resource_docs) ⇒ Object
Creates index template for all resources.
-
#generate_resource_detail_file!(resource_doc) ⇒ Object
Generate detail files for resource method.
-
#get_controller_info ⇒ Object
Reads ‘rake routes’ output and gets the controller info.
-
#get_resources ⇒ Object
Create resources.
-
#move_document ⇒ Object
Move document to public.
-
#remove_structure ⇒ Object
Removes the generated files.
Methods included from Config
#asset_dir, #config_dir, #config_template_dir, #controller_dir, #form_file_name, #target_dir, #temp_dir, #template_dir
Instance Method Details
#copy_assets! ⇒ Object
98 99 100 101 |
# File 'lib/restapi_doc.rb', line 98 def copy_assets! # Copy over assets cp_r asset_dir, temp_dir end |
#create_structure ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/restapi_doc.rb', line 18 def create_structure File.directory?(config_dir) || mkdir(config_dir) Dir["#{config_template_dir}/*.*"].each do |template_file| target_file = config_dir(File.basename(template_file)) cp template_file, config_dir if not File.exist? target_file end end |
#generate_doc(resource_docs) ⇒ Object
Generates views and their index in a temp directory
57 58 59 60 |
# File 'lib/restapi_doc.rb', line 57 def generate_doc(resource_docs) generate_index_templates(resource_docs) copy_assets! end |
#generate_index_templates(resource_docs) ⇒ Object
Creates index template for all resources
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/restapi_doc.rb', line 63 def generate_index_templates(resource_docs) restapi_config = YAML.load(File.read("#{config_dir}/restapi_doc.yml")) resource_docs.each { |resource| resource.parse_apidoc } template = IO.read(template_dir('index.html.haml')) parsed = Haml::Engine.new(template).render(Object.new, :project_info => restapi_config, :resource_docs => resource_docs) File.open(temp_dir("index.html"), 'w') { |file| file.write parsed } # Generate detail files resource_docs.each do | resource_doc| generate_resource_detail_file!(resource_doc) end end |
#generate_resource_detail_file!(resource_doc) ⇒ Object
Generate detail files for resource method
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/restapi_doc.rb', line 77 def generate_resource_detail_file!(resource_doc) restapi_config = YAML.load(File.read("#{config_dir}/restapi_doc.yml")) Dir.mkdir(temp_dir + "/resources") if (!File.directory?(temp_dir + "/resources")) Dir.mkdir(temp_dir + "/resources/" + resource_doc.name) if (!File.directory?(temp_dir + "/resources/" + resource_doc.name)) resource_doc.resource_methods.each do | method| template = IO.read(template_dir('detail.html.haml')) parsed = Haml::Engine.new(template).render(Object.new, :project_info => restapi_config, :name => resource_doc.name , :rmethod => method) File.open(temp_dir + "/resources/" + resource_doc.name + "/" + method[0] + ".html", 'w') { |file| file.write parsed } end end |
#get_controller_info ⇒ Object
Reads ‘rake routes’ output and gets the controller info
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/restapi_doc.rb', line 27 def get_controller_info controller_info = {} routes = Dir.chdir(::Rails.root.to_s) { `rake routes` } routes.split("\n").each do |entry| begin method, url, controller_action = entry.split.slice(-3, 3) if METHODS.include? method.upcase controller, action = controller_action.split('#') controller_info[controller] ||= [] controller_info[controller] << [action, method, url] end rescue end end controller_info end |
#get_resources ⇒ Object
Create resources
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/restapi_doc.rb', line 45 def get_resources controller_info = get_controller_info resources = [] controller_info.each do |controller, action_entries| controller_location = controller_dir(controller + '_controller.rb') controller_base_routes = action_entries resources << ResourceDoc.new(controller, action_entries, controller_location) end resources end |
#move_document ⇒ Object
Move document to public
89 90 91 92 93 94 95 96 |
# File 'lib/restapi_doc.rb', line 89 def move_document Dir.mkdir(target_dir) if (!File.directory?(target_dir)) # Only want to move the .html, .css, .png and .js files, not the .haml templates. html_css_files = temp_dir("*.{html,css,js,png}") Dir[html_css_files].each { |f| mv f, target_dir } mv temp_dir + "/resources", target_dir, :force => true if (File.directory?(temp_dir + "/resources")) mv temp_dir + "/assets", target_dir, :force => true if (File.directory?(temp_dir + "/assets")) end |
#remove_structure ⇒ Object
Removes the generated files
104 105 106 |
# File 'lib/restapi_doc.rb', line 104 def remove_structure rm_rf target_dir end |