aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2016-03-08 17:21:09 -0500
committerPaul Duncan <pabs@pablotron.org>2016-03-08 17:21:09 -0500
commitbc86dbf55dd2c134fc2e5d0e6bf8cefbe6b1ceba (patch)
treeb78eff68e72f080767dffb0a61a40f6bd08e9b8b
parent0f3de66b4b824394305caff297d5a5f829d79b2e (diff)
downloadold-guff-bc86dbf55dd2c134fc2e5d0e6bf8cefbe6b1ceba.tar.bz2
old-guff-bc86dbf55dd2c134fc2e5d0e6bf8cefbe6b1ceba.zip
refactor html views
-rw-r--r--src/guff/api-docs-html-view.cr73
-rw-r--r--src/guff/handlers/api-handler.cr3
-rw-r--r--src/guff/views/html/api-docs.cr71
-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