aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/guff.cr5
-rw-r--r--src/guff/html-page-view.cr37
-rw-r--r--src/guff/views/page.ecr13
3 files changed, 54 insertions, 1 deletions
diff --git a/src/guff.cr b/src/guff.cr
index 174ec67..b2794b6 100644
--- a/src/guff.cr
+++ b/src/guff.cr
@@ -13,10 +13,13 @@ module Guff
def call(context : HTTP::Server::Context)
if md = RE.match(context.request.path || "")
- context.response.puts "SlugHandler: path = %s, md = %s" % [
+ title = "SlugHandler: path = %s, md = %s" % [
context.request.path,
md.to_s
]
+
+ context.response.content_type = "text/html; charset=utf-8"
+ context.response.puts HTMLPageView.new(title, "asdf")
else
call_next(context)
end
diff --git a/src/guff/html-page-view.cr b/src/guff/html-page-view.cr
new file mode 100644
index 0000000..3ec33fe
--- /dev/null
+++ b/src/guff/html-page-view.cr
@@ -0,0 +1,37 @@
+require "ecr/macros"
+require "html"
+
+module Guff
+ class HTMLPageView
+ property :title
+ property :body
+ property :scripts
+ property :styles
+ property :metas
+ property :body_id
+ property :body_class
+
+ def initialize(@title = "" : String, @body = "" : String)
+ @scripts = [] of String
+ @styles = [] of String
+ @metas = [] of Hash(String, String)
+ end
+
+ def page_headers : String
+ # TODO
+ ""
+ end
+
+ def page_footers : String
+ # TODO
+ ""
+ end
+
+ def h(s : String?) : String
+ s ? HTML.escape(s) : ""
+ end
+
+
+ ECR.def_to_s("./src/guff/views/page.ecr")
+ end
+end
diff --git a/src/guff/views/page.ecr b/src/guff/views/page.ecr
new file mode 100644
index 0000000..505731a
--- /dev/null
+++ b/src/guff/views/page.ecr
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang='en-US'>
+ <head>
+ <title><%= h(@title) %></title>
+ <%= page_headers %>
+ </head>
+
+ <body id='<%= @body_id %>' class='<%= body_class %>'><%=
+ @body
+ %></body>
+
+ <%= page_footers %>
+</html>