diff options
author | Paul Duncan <pabs@pablotron.org> | 2016-03-08 17:21:09 -0500 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2016-03-08 17:21:09 -0500 |
commit | bc86dbf55dd2c134fc2e5d0e6bf8cefbe6b1ceba (patch) | |
tree | b78eff68e72f080767dffb0a61a40f6bd08e9b8b | |
parent | 0f3de66b4b824394305caff297d5a5f829d79b2e (diff) | |
download | old-guff-bc86dbf55dd2c134fc2e5d0e6bf8cefbe6b1ceba.tar.bz2 old-guff-bc86dbf55dd2c134fc2e5d0e6bf8cefbe6b1ceba.zip |
refactor html views
-rw-r--r-- | src/guff/api-docs-html-view.cr | 73 | ||||
-rw-r--r-- | src/guff/handlers/api-handler.cr | 3 | ||||
-rw-r--r-- | src/guff/views/html/api-docs.cr | 71 | ||||
-rw-r--r-- | src/guff/views/html/page.cr (renamed from src/guff/page-html-view.cr) | 0 |
4 files changed, 73 insertions, 74 deletions
diff --git a/src/guff/api-docs-html-view.cr b/src/guff/api-docs-html-view.cr deleted file mode 100644 index 3ee1e34..0000000 --- a/src/guff/api-docs-html-view.cr +++ /dev/null @@ -1,73 +0,0 @@ -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 - API::Methods::METHODS.keys.sort - end - - private def methods( - namespace : String - ) - API::Methods::METHODS[namespace].keys.sort - end - - private def method_text( - namespace : String, - method : String - ) - API::Methods::METHODS[namespace][method][:text] as String - end - - private def method_args( - namespace : String, - method : String - ) - if method_has_args?(namespace, method) - args = API::Methods::METHODS[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 = API::Methods::METHODS[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 - ) - API::Methods::METHODS[namespace][method].has_key?(:args) - end - - def h(s : String) - HTML.escape(s || "") - end - - ECR.def_to_s("./src/guff/views/ecrs/api-docs.ecr") - end -end diff --git a/src/guff/handlers/api-handler.cr b/src/guff/handlers/api-handler.cr index f40a39d..77606ae 100644 --- a/src/guff/handlers/api-handler.cr +++ b/src/guff/handlers/api-handler.cr @@ -1,6 +1,7 @@ require "json" require "../handler" require "../api/*" +require "../views/html/api-docs" private macro define_method_calls(hash) case namespace @@ -142,6 +143,6 @@ class Guff::Handlers::APIHandler < Guff::Handler end private def do_docs(context : HTTP::Server::Context) - APIDocsHTMLView.run(context) + Guff::APIDocsHTMLView.run(context) end end diff --git a/src/guff/views/html/api-docs.cr b/src/guff/views/html/api-docs.cr new file mode 100644 index 0000000..0b5aff3 --- /dev/null +++ b/src/guff/views/html/api-docs.cr @@ -0,0 +1,71 @@ +require "html" +require "ecr/macros" +require "../../api/methods" +require "./page" + +class Guff::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 + API::Methods::METHODS.keys.sort + end + + private def methods( + namespace : String + ) + API::Methods::METHODS[namespace].keys.sort + end + + private def method_text( + namespace : String, + method : String + ) + API::Methods::METHODS[namespace][method][:text] as String + end + + private def method_args( + namespace : String, + method : String + ) + if method_has_args?(namespace, method) + args = API::Methods::METHODS[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 = API::Methods::METHODS[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 + ) + API::Methods::METHODS[namespace][method].has_key?(:args) + end + + def h(s : String) + HTML.escape(s || "") + end + + ECR.def_to_s("./src/guff/views/ecrs/api-docs.ecr") +end diff --git a/src/guff/page-html-view.cr b/src/guff/views/html/page.cr index c300070..c300070 100644 --- a/src/guff/page-html-view.cr +++ b/src/guff/views/html/page.cr |