mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
Add the possibility to configure options that are passed to Haml::Engine when evalutating HAML template.
Options can be configured in two different ways: * Application-wide, using set_option :haml e.g.: set_option :haml, :format => :haml4, :escape_html => true * By passing options directly to the `haml` helper e.g.: haml '%strong Hello World', :options => {:format => :html4} Note that if you use both way, options will be merged.
This commit is contained in:
parent
d2ff40a7de
commit
23999054c6
2 changed files with 55 additions and 1 deletions
|
@ -604,7 +604,8 @@ module Sinatra
|
|||
private
|
||||
|
||||
def render_haml(content, options = {}, &b)
|
||||
::Haml::Engine.new(content).render(options[:scope] || self, options[:locals] || {}, &b)
|
||||
haml_options = (options[:options] || {}).merge(Sinatra.options.haml)
|
||||
::Haml::Engine.new(content, haml_options).render(options[:scope] || self, options[:locals] || {}, &b)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -837,6 +838,7 @@ module Sinatra
|
|||
:public => Dir.pwd + '/public',
|
||||
:sessions => false,
|
||||
:logging => true,
|
||||
:haml => {}
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -178,4 +178,56 @@ context "Haml" do
|
|||
|
||||
end
|
||||
|
||||
describe 'Options passed to the HAML interpreter' do
|
||||
setup do
|
||||
Sinatra.application = nil
|
||||
end
|
||||
|
||||
specify 'are empty be default' do
|
||||
|
||||
get '/' do
|
||||
haml 'foo'
|
||||
end
|
||||
|
||||
Haml::Engine.expects(:new).with('foo', {}).returns(stub(:render => 'foo'))
|
||||
|
||||
get_it '/'
|
||||
should.be.ok
|
||||
|
||||
end
|
||||
|
||||
specify 'can be configured by passing :options to haml' do
|
||||
|
||||
get '/' do
|
||||
haml 'foo', :options => {:format => :html4}
|
||||
end
|
||||
|
||||
Haml::Engine.expects(:new).with('foo', {:format => :html4}).returns(stub(:render => 'foo'))
|
||||
|
||||
get_it '/'
|
||||
should.be.ok
|
||||
|
||||
end
|
||||
|
||||
specify 'can be configured using set_option :haml' do
|
||||
|
||||
configure do
|
||||
set_option :haml, :format => :html4,
|
||||
:escape_html => true
|
||||
end
|
||||
|
||||
get '/' do
|
||||
haml 'foo'
|
||||
end
|
||||
|
||||
Haml::Engine.expects(:new).with('foo', {:format => :html4,
|
||||
:escape_html => true}).returns(stub(:render => 'foo'))
|
||||
|
||||
get_it '/'
|
||||
should.be.ok
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue