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