class GovukTechDocs::ApiReference::Extension
Public Class Methods
new(app, options_hash = {}, &block)
click to toggle source
Calls superclass method
# File lib/govuk_tech_docs/api_reference/api_reference_extension.rb, line 11 def initialize(app, options_hash = {}, &block) super @app = app @config = @app.config[:tech_docs] # If no api path then just return. if @config["api_path"].to_s.empty? @api_parser = false return end # Is the api_path a url or path? if uri?(@config["api_path"]) @api_parser = true @document = Openapi3Parser.load_url(@config["api_path"]) elsif File.exist?(@config["api_path"]) # Load api file and set existence flag. @api_parser = true @document = Openapi3Parser.load_file(@config["api_path"]) else @api_parser = false raise "Unable to load api path from tech-docs.yml" end @render = Renderer.new(@app, @document) end
Public Instance Methods
api(text)
click to toggle source
# File lib/govuk_tech_docs/api_reference/api_reference_extension.rb, line 47 def api(text) if @api_parser == true keywords = { "api>" => "default", "api_schema>" => "schema", } regexp = keywords.map { |k, _| Regexp.escape(k) }.join("|") md = text.match(/^<p>(#{regexp})/) if md key = md.captures[0] type = keywords[key] text.gsub!(/#{Regexp.escape(key)}\s+?/, "") # Strip paragraph tags from text text = text.gsub(/<\/?[^>]*>/, "") text = text.strip if text == "api>" @render.api_full(api_info, api_servers) elsif type == "default" output = @render.path(text) # Render any schemas referenced in the above path output += @render.schemas_from_path(text) output else @render.schema(text) end else text end else text end end
uri?(string)
click to toggle source
# File lib/govuk_tech_docs/api_reference/api_reference_extension.rb, line 38 def uri?(string) uri = URI.parse(string) %w(http https).include?(uri.scheme) rescue URI::BadURIError false rescue URI::InvalidURIError false end
Private Instance Methods
api_info()
click to toggle source
# File lib/govuk_tech_docs/api_reference/api_reference_extension.rb, line 89 def api_info @document.info end
api_servers()
click to toggle source
# File lib/govuk_tech_docs/api_reference/api_reference_extension.rb, line 93 def api_servers @document.servers end