require "html" require "ecr/macros" require "./page-html-view" require "./api-methods" module Guff class APIDocsHTMLView TITLE = "Guff API Documentation" def self.run(context : HTTP::Server::Context) page = PageHTMLView.new(TITLE, new.to_s) context.response.content_type = page.content_type context.response.puts page end private def namespaces APIMethods::API.keys.sort end private def methods( namespace : String ) APIMethods::API[namespace].keys.sort end private def method_text( namespace : String, method : String ) APIMethods::API[namespace][method][:text] as String end private def method_args( namespace : String, method : String ) if method_has_args?(namespace, method) args = APIMethods::API[namespace][method][:args] as \ Hash(String, Hash(Symbol, String|Symbol|Bool)) | Nil args.keys.sort else [] of String end end private def arg_text( namespace : String, method : String, name : String ) : String if method_has_args?(namespace, method) arg = APIMethods::API[namespace][method][:args][name] as\ Hash(Symbol, String|Symbol|Bool) arg[:text] as String else "" end end private def method_has_args?( namespace : String, method : String ) APIMethods::API[namespace][method].has_key?(:args) end def h(s : String) HTML.escape(s || "") end ECR.def_to_s("./src/guff/views/api-docs.ecr") end end