diff options
author | Paul Duncan <pabs@pablotron.org> | 2016-03-05 19:03:32 -0500 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2016-03-05 19:03:32 -0500 |
commit | efe09d414a7a8e71974dde57833ebbe97e997146 (patch) | |
tree | 59b80f3c5a92e8d3870a023c134011f4327e223c /src/guff | |
parent | df8dbe48e73581599f73c365e173fb017f0919c3 (diff) | |
download | old-guff-efe09d414a7a8e71974dde57833ebbe97e997146.tar.bz2 old-guff-efe09d414a7a8e71974dde57833ebbe97e997146.zip |
refactor blog-handler
Diffstat (limited to 'src/guff')
-rw-r--r-- | src/guff/blog-handler.cr | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/guff/blog-handler.cr b/src/guff/blog-handler.cr new file mode 100644 index 0000000..577ce70 --- /dev/null +++ b/src/guff/blog-handler.cr @@ -0,0 +1,63 @@ +require "./handler" + +module Guff + class BlogHandler < Handler + MATCHES = [%r{ + ^/ + + # match YYYY/MM/DD/SLUG.html + (?<year>\d{4}) + / + (?<month>\d{2}) + / + (?<day>\d{2}) + / + (?<slug>[a-z0-9._-]+) + \.html + + $ + }x, %r{ + ^/ + + # match YYYY/MM/DD + (?<year>\d{4}) + / + (?<month>\d{2}) + / + (?<day>\d{2}) + /? + + $ + }x, %r{ + ^/ + + # match YYYY/MM + (?<year>\d{4}) + / + (?<month>\d{2}) + /? + + $ + }x, %r{ + ^/ + + # match YYYY + (?<year>\d{4}) + /? + + $ + }x, %r{ + # match index + ^/$ + }x] + + def call(context : HTTP::Server::Context) + path = context.request.path || "" + if md = MATCHES.reduce(nil) { |r, m| r || m.match(path) } + context.response.puts "blog match: %s" % [md.to_s] + else + call_next(context) + end + end + end +end |