Module: Trifle::Docs::AppHelpers
- Defined in:
- lib/trifle/docs/app.rb
Instance Method Summary collapse
- #handle_request(params, request) ⇒ Object
- #markdown_content_type(request) ⇒ Object
- #markdown_requested?(request, params) ⇒ Boolean
- #render_generated_sitemap ⇒ Object
- #render_html(meta, url) ⇒ Object
- #render_llms_for(base_url, full:) ⇒ Object
- #render_markdown(meta, url) ⇒ Object
- #render_markdown?(meta, request, params) ⇒ Boolean
- #set_vary_header ⇒ Object
Instance Method Details
#handle_request(params, request) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/trifle/docs/app.rb', line 21 def handle_request(params, request) url = params['splat'].first.chomp('/') = Trifle::Docs.(url: url) halt(404, 'Not Found') if .nil? set_vary_header unless () return render_markdown(, url) if render_markdown?(, request, params) return send_file(['path']) if () render_html(, url) end |
#markdown_content_type(request) ⇒ Object
60 61 62 63 64 |
# File 'lib/trifle/docs/app.rb', line 60 def markdown_content_type(request) return 'text/plain' if Trifle::Docs::Helper::AiDetection.ai_scraper?(request.user_agent) 'text/markdown' end |
#markdown_requested?(request, params) ⇒ Boolean
8 9 10 11 12 |
# File 'lib/trifle/docs/app.rb', line 8 def markdown_requested?(request, params) return true if params['format'].to_s.downcase == 'md' request.env['HTTP_ACCEPT'].to_s.include?('text/markdown') end |
#render_generated_sitemap ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/trifle/docs/app.rb', line 51 def render_generated_sitemap base_url = Trifle::Docs.default.sitemap_base_url || request.base_url content = Trifle::Docs::Helper::Sitemap.xml(base_url: base_url) halt(404, 'Not Found') if content.nil? || content.strip.empty? content_type 'application/xml' content end |
#render_html(meta, url) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/trifle/docs/app.rb', line 41 def render_html(, url) erb (['template'] || 'page').to_sym, {}, { sitemap: Trifle::Docs.sitemap, collection: Trifle::Docs.collection(url: url), content: Trifle::Docs.content(url: url), meta: , url: url } end |
#render_llms_for(base_url, full:) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/trifle/docs/app.rb', line 71 def render_llms_for(base_url, full:) base_url = normalize_base_url(base_url) url = llms_url(base_url, full: full) = Trifle::Docs.(url: url) return send_file(['path']) if () content = llms_content(full: full, base_url: base_url) halt(404, 'Not Found') if llms_missing?(content, full: full) content_type 'text/plain' content end |
#render_markdown(meta, url) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/trifle/docs/app.rb', line 33 def render_markdown(, url) content_type markdown_content_type(request) Trifle::Docs::Helper::MarkdownLayout.render( meta: , raw_content: Trifle::Docs.raw_content(url: url) ) end |
#render_markdown?(meta, request, params) ⇒ Boolean
14 15 16 17 18 19 |
# File 'lib/trifle/docs/app.rb', line 14 def render_markdown?(, request, params) return false if ['type'] == 'file' markdown_requested?(request, params) || Trifle::Docs::Helper::AiDetection.ai_scraper?(request.user_agent) end |
#set_vary_header ⇒ Object
66 67 68 69 |
# File 'lib/trifle/docs/app.rb', line 66 def set_vary_header headers['Vary'] = append_vary(headers['Vary'], 'User-Agent') headers['Vary'] = append_vary(headers['Vary'], 'Accept') end |