From bc904074a2b80a4728b60c46443fe86af05a05c8 Mon Sep 17 00:00:00 2001 From: tdreyno Date: Fri, 31 Jul 2009 09:35:12 -0700 Subject: [PATCH] sinatra helpers --- .gitmodules | 3 +++ lib/middleman.rb | 35 +++++++++++------------------------ lib/middleman/helpers.rb | 16 ++++++++++++++++ vendor/sinatra-helpers | 1 + 4 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 lib/middleman/helpers.rb create mode 160000 vendor/sinatra-helpers diff --git a/.gitmodules b/.gitmodules index 8f2e45a1..cb12acf6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "vendor/sinatra-content-for"] path = vendor/sinatra-content-for url = git://github.com/foca/sinatra-content-for.git +[submodule "vendor/sinatra-helpers"] + path = vendor/sinatra-helpers + url = git://github.com/sbfaulkner/sinatra-helpers.git diff --git a/lib/middleman.rb b/lib/middleman.rb index 0b0d14ce..fa26b037 100644 --- a/lib/middleman.rb +++ b/lib/middleman.rb @@ -12,37 +12,22 @@ require File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra-maruku', 'lib # Include content_for support require File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra-content-for', 'lib', 'sinatra', 'content_for') +# Include common haml/html helper support +require File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra-helpers', 'lib', 'sinatra-helpers', 'haml') + class Middleman < Sinatra::Base set :app_file, __FILE__ set :static, true set :root, Dir.pwd set :environment, defined?(MIDDLEMAN_BUILDER) ? :build : :development - + helpers Sinatra::Markaby helpers Sinatra::Maruku helpers Sinatra::ContentFor - - helpers do - def link_to(title, url="#", params={}) - params = params.map { |k,v| %Q{#{k}="#{v}"}}.join(' ') - %Q{#{title}} - end - - def page_classes(*additional) - classes = [] - parts = @full_request_path.split('.')[0].split('/') - parts.each_with_index { |path, i| classes << parts.first(i+1).join('_') } - - classes << "index" if classes.empty? - classes += additional unless additional.empty? - classes.join(' ') - end - - def sprite(name) - image_tag("spacer.gif", :class => "#{name}-img") - end - end - + helpers Sinatra::Helpers::Haml::Forms + helpers Sinatra::Helpers::Haml::Links + helpers Sinatra::Helpers::Haml::Partials + def self.run!(options={}, &block) set options handler = detect_rack_handler @@ -106,4 +91,6 @@ class Middleman < Sinatra::Base result || pass end -end \ No newline at end of file +end + +require File.join(File.dirname(__FILE__), 'middleman', 'helpers') \ No newline at end of file diff --git a/lib/middleman/helpers.rb b/lib/middleman/helpers.rb new file mode 100644 index 00000000..e43c352b --- /dev/null +++ b/lib/middleman/helpers.rb @@ -0,0 +1,16 @@ +Middleman.helpers do + def link_to(title, url="#", params={ :href => url }) + params = params.map { |k,v| %Q{#{k}="#{v}"}}.join(' ') + %Q{#{title}} + end + + def page_classes(*additional) + classes = [] + parts = @full_request_path.split('.')[0].split('/') + parts.each_with_index { |path, i| classes << parts.first(i+1).join('_') } + + classes << "index" if classes.empty? + classes += additional unless additional.empty? + classes.join(' ') + end +end diff --git a/vendor/sinatra-helpers b/vendor/sinatra-helpers new file mode 160000 index 00000000..65d5060a --- /dev/null +++ b/vendor/sinatra-helpers @@ -0,0 +1 @@ +Subproject commit 65d5060ad8cdff6b12631878d97486114d195376