From 207ce05449f025fc10c851e27c0f4bed48df7be0 Mon Sep 17 00:00:00 2001 From: Jonathan Stott Date: Thu, 1 Jul 2010 12:50:55 +0100 Subject: [PATCH] Also namespace views --- app.rb | 9 ++++-- {templates => black_book/templates}/edit.html | 0 .../templates}/index.html | 0 .../templates}/layout.html | 0 {templates => black_book/templates}/show.html | 0 black_book/views.rb | 8 +++++ black_book/views/edit.rb | 27 ++++++++++++++++ black_book/views/index.rb | 11 +++++++ black_book/views/layout.rb | 13 ++++++++ black_book/views/person.rb | 31 +++++++++++++++++++ black_book/views/show.rb | 16 ++++++++++ views.rb | 8 ----- views/edit.rb | 23 -------------- views/index.rb | 7 ----- views/layout.rb | 10 ------ views/person.rb | 27 ---------------- views/show.rb | 12 ------- 17 files changed, 113 insertions(+), 89 deletions(-) rename {templates => black_book/templates}/edit.html (100%) rename {templates => black_book/templates}/index.html (100%) rename {templates => black_book/templates}/layout.html (100%) rename {templates => black_book/templates}/show.html (100%) create mode 100644 black_book/views.rb create mode 100644 black_book/views/edit.rb create mode 100644 black_book/views/index.rb create mode 100644 black_book/views/layout.rb create mode 100644 black_book/views/person.rb create mode 100644 black_book/views/show.rb delete mode 100644 views.rb delete mode 100644 views/edit.rb delete mode 100644 views/index.rb delete mode 100644 views/layout.rb delete mode 100644 views/person.rb delete mode 100644 views/show.rb diff --git a/app.rb b/app.rb index 2cb81fa..6ebac90 100644 --- a/app.rb +++ b/app.rb @@ -2,14 +2,19 @@ # Jonathan D. Stott require 'sinatra/base' require 'mongo' -require 'views' +require 'black_book/views' module BlackBook class App < ::Sinatra::Base register Mustache::Sinatra - set :mustache, { :templates => 'templates' } + set :mustache, proc { + { + :namespace => ::BlackBook, + :templates => ::File.join(self.root, 'black_book', 'templates'), + } + } helpers do def addresses diff --git a/templates/edit.html b/black_book/templates/edit.html similarity index 100% rename from templates/edit.html rename to black_book/templates/edit.html diff --git a/templates/index.html b/black_book/templates/index.html similarity index 100% rename from templates/index.html rename to black_book/templates/index.html diff --git a/templates/layout.html b/black_book/templates/layout.html similarity index 100% rename from templates/layout.html rename to black_book/templates/layout.html diff --git a/templates/show.html b/black_book/templates/show.html similarity index 100% rename from templates/show.html rename to black_book/templates/show.html diff --git a/black_book/views.rb b/black_book/views.rb new file mode 100644 index 0000000..7539960 --- /dev/null +++ b/black_book/views.rb @@ -0,0 +1,8 @@ +#!/usr/bin/ruby +# Jonathan D. Stott +require 'mustache/sinatra' +require 'black_book/views/layout' +require 'black_book/views/index' +require 'black_book/views/person' +require 'black_book/views/edit' +require 'black_book/views/show' diff --git a/black_book/views/edit.rb b/black_book/views/edit.rb new file mode 100644 index 0000000..3234e8f --- /dev/null +++ b/black_book/views/edit.rb @@ -0,0 +1,27 @@ +#!/usr/bin/ruby +# Jonathan D. Stott +module BlackBook + module Views + class Edit < Person + def action + page ? "/#{page}" : '/' + end + + def new? + !!@person['_id'] + end + + def new_or_edit + new? ? 'Editing' : 'New' + end + + def button_text + new? ? "Update" : "Create" + end + + def title + new? ? "Editing #{super}" : "New#{super}" + end + end + end +end diff --git a/black_book/views/index.rb b/black_book/views/index.rb new file mode 100644 index 0000000..50cd63a --- /dev/null +++ b/black_book/views/index.rb @@ -0,0 +1,11 @@ +#!/usr/bin/ruby +# Jonathan D. Stott +module BlackBook + module Views + class Index < Layout + def addresses + @addresses + end + end + end +end diff --git a/black_book/views/layout.rb b/black_book/views/layout.rb new file mode 100644 index 0000000..9987d02 --- /dev/null +++ b/black_book/views/layout.rb @@ -0,0 +1,13 @@ +#!/usr/bin/ruby +# Jonathan D. Stott +module BlackBook + module Views + class Layout < ::Mustache + self.template_extension = 'html' + + def title + 'Addresses!' + end + end + end +end diff --git a/black_book/views/person.rb b/black_book/views/person.rb new file mode 100644 index 0000000..c83ce0f --- /dev/null +++ b/black_book/views/person.rb @@ -0,0 +1,31 @@ +#!/usr/bin/ruby +# Jonathan D. Stott +module BlackBook + module Views + class Person < Layout + def title + "#{name} - Addresses" + end + + def name + @person['name'] + end + + def page + @person['page'] + end + + def emails + @person['emails'] + end + + def addresses + @person['addresses'] + end + + def numbers + @person['numbers'] + end + end + end +end diff --git a/black_book/views/show.rb b/black_book/views/show.rb new file mode 100644 index 0000000..a11a9d5 --- /dev/null +++ b/black_book/views/show.rb @@ -0,0 +1,16 @@ +#!/usr/bin/ruby +# Jonathan D. Stott +module BlackBook + module Views + class Show < Person + def addresses + if addresses = super + addresses.map! { |a| a['lines'] = a['address'].split(/\r?\n/).map! { |l| { :line => l } }; a } + addresses + else + addresses + end + end + end + end +end diff --git a/views.rb b/views.rb deleted file mode 100644 index cc8a07f..0000000 --- a/views.rb +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/ruby -# Jonathan D. Stott -require 'mustache/sinatra' -require 'views/layout' -require 'views/index' -require 'views/person' -require 'views/edit' -require 'views/show' diff --git a/views/edit.rb b/views/edit.rb deleted file mode 100644 index fb22fc1..0000000 --- a/views/edit.rb +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/ruby -# Jonathan D. Stott -class Edit < Person - def action - page ? "/#{page}" : '/' - end - - def new? - !!@person['_id'] - end - - def new_or_edit - new? ? 'Editing' : 'New' - end - - def button_text - new? ? "Update" : "Create" - end - - def title - new? ? "Editing #{super}" : "New#{super}" - end -end diff --git a/views/index.rb b/views/index.rb deleted file mode 100644 index ae35a58..0000000 --- a/views/index.rb +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/ruby -# Jonathan D. Stott -class Index < Layout - def addresses - @addresses - end -end diff --git a/views/layout.rb b/views/layout.rb deleted file mode 100644 index c465567..0000000 --- a/views/layout.rb +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/ruby -# Jonathan D. Stott -class Layout < Mustache - self.template_extension = 'html' - self.template_path = '../templates' - - def title - 'Addresses!' - end -end diff --git a/views/person.rb b/views/person.rb deleted file mode 100644 index b217291..0000000 --- a/views/person.rb +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/ruby -# Jonathan D. Stott -class Person < Layout - def title - "#{name} - Addresses" - end - - def name - @person['name'] - end - - def page - @person['page'] - end - - def emails - @person['emails'] - end - - def addresses - @person['addresses'] - end - - def numbers - @person['numbers'] - end -end diff --git a/views/show.rb b/views/show.rb deleted file mode 100644 index d6f87d7..0000000 --- a/views/show.rb +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/ruby -# Jonathan D. Stott -class Show < Person - def addresses - if addresses = super - addresses.map! { |a| a['lines'] = a['address'].split(/\r?\n/).map! { |l| { :line => l } }; a } - addresses - else - addresses - end - end -end