Module: MountDoc::MountDocHelper
- Included in:
- MountDocController
- Defined in:
- app/helpers/mount_doc/mount_doc_helper.rb
Constant Summary collapse
- HTTP_Methods =
[ :GET, :POST, :PUT, :DELETE ].join("\n")
Instance Method Summary collapse
- #actions(class_doc) ⇒ Object
- #controllers ⇒ Object
- #doc_dir ⇒ Object
- #files ⇒ Object
- #markdown(text) ⇒ Object
- #markup(text) ⇒ Object
- #models ⇒ Object
- #mount_doc_config ⇒ Object
- #rdoc(text) ⇒ Object
- #routes ⇒ Object
- #routes_for(controller, action) ⇒ Object
- #syntaxhighlight(lang, text) ⇒ Object
Instance Method Details
#actions(class_doc) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 68 def actions(class_doc) class_doc.meths.select{ |meth| meth.scope == :instance }.map{ |meth| { method: meth, routes: routes_for(@controller_name.gsub('::', '/'), meth.name) } }.select { |hash| hash[:routes].size > 0 } end |
#controllers ⇒ Object
52 53 54 55 56 57 58 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 52 def controllers @controllers ||= begin Dir[File.join(::Rails.application.root, 'app/controllers/**/*_controller.rb')].map { |cn| cn.sub(%r{_controller\.rb$}, '').sub(%r{^#{::Rails.application.root}/app/controllers/}, '') } end end |
#doc_dir ⇒ Object
13 14 15 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 13 def doc_dir @doc_dir ||= File.(mount_doc_config.doc_file_path, ::Rails.application.root) end |
#files ⇒ Object
17 18 19 20 21 22 23 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 17 def files @files ||= Dir[File.join(doc_dir, '**/*')].reject { |fn| File.directory?(fn) }.map { |fn| fn.sub(%r{^#{doc_dir}/},'').force_encoding('utf-8') } end |
#markdown(text) ⇒ Object
89 90 91 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 89 def markdown(text) GitHub::Markup.render('tmp.markdown', text) end |
#markup(text) ⇒ Object
80 81 82 83 84 85 86 87 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 80 def markup(text) case MountDoc::Config.markup when :markdown markdown(text) else rdoc(text) end end |
#models ⇒ Object
60 61 62 63 64 65 66 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 60 def models @models ||= begin Dir[File.join(::Rails.application.root, 'app/models/**/*.rb')].map { |cn| cn.sub(%r{\.rb$}, '').sub(%r{^#{::Rails.application.root}/app/models/}, '') } end end |
#mount_doc_config ⇒ Object
9 10 11 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 9 def mount_doc_config MountDoc::Config end |
#rdoc(text) ⇒ Object
93 94 95 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 93 def rdoc(text) RDoc::Markup::ToHtml.new.convert(text) end |
#routes ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 31 def routes @routes ||= ::Rails.application.routes.routes.to_a.select { |route| controllers.include?(route.defaults[:controller].to_s) }.map {|route| method = HTTP_Methods.match(route.verb).to_s method = 'ANY' if method.empty? { method: method, path: route.path.spec }.merge(route.defaults) } end |
#routes_for(controller, action) ⇒ Object
44 45 46 47 48 49 50 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 44 def routes_for(controller, action) puts "#{controller}##{action}" _routes = routes.dup.select{ |route| route[:controller].to_s.to_sym == controller.to_s.to_sym && route[:action].to_s.to_sym == action.to_s.to_sym } _routes end |
#syntaxhighlight(lang, text) ⇒ Object
97 98 99 100 101 102 |
# File 'app/helpers/mount_doc/mount_doc_helper.rb', line 97 def syntaxhighlight(lang, text) CodeRay.scan(text, lang.to_s.downcase.to_sym).html({ css: :style, line_numbers: :inline }) end |