Skip to content

Commit

Permalink
Add support for wlang templating engine.
Browse files Browse the repository at this point in the history
  • Loading branch information
blambeau committed Jun 12, 2012
1 parent 4f5a2fd commit 46f2547
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 0 deletions.
1 change: 1 addition & 0 deletions Gemfile
Expand Up @@ -42,6 +42,7 @@ gem 'maruku'
gem 'creole'
gem 'markaby'
gem 'radius'
gem 'wlang', '>= 2.0.1'

if RUBY_ENGINE == 'jruby'
gem 'nokogiri', '!= 1.5.0'
Expand Down
4 changes: 4 additions & 0 deletions lib/sinatra/base.rb
Expand Up @@ -645,6 +645,10 @@ def creole(template, options={}, locals={})
render :creole, template, options, locals
end

def wlang(template, options={}, locals={})
render :wlang, template, options, locals
end

def yajl(template, options={}, locals={})
options[:default_content_type] = :json
render :yajl, template, options, locals
Expand Down
1 change: 1 addition & 0 deletions test/views/hello.wlang
@@ -0,0 +1 @@
Hello from wlang!
2 changes: 2 additions & 0 deletions test/views/layout2.wlang
@@ -0,0 +1,2 @@
WLang Layout!
+{yield}
64 changes: 64 additions & 0 deletions test/wlang_test.rb
@@ -0,0 +1,64 @@
require File.expand_path('../helper', __FILE__)
require 'wlang'

class WLangTest < Test::Unit::TestCase
def engine
Tilt::WLangTemplate
end

def wlang_app(&block)
mock_app {
set :views, File.dirname(__FILE__) + '/views'
get '/', &block
}
get '/'
end

it 'uses the correct engine' do
assert_equal engine, Tilt[:wlang]
end

it 'renders .wlang files in views path' do
wlang_app { wlang :hello }
assert ok?
assert_equal "Hello from wlang!\n", body
end

it 'renders in the app instance scope' do
mock_app do
helpers do
def who; "world"; end
end
get('/') { wlang 'Hello +{who}!' }
end
get '/'
assert ok?
assert_equal 'Hello world!', body
end

it 'takes a :locals option' do
wlang_app do
locals = {:foo => 'Bar'}
wlang 'Hello ${foo}!', :locals => locals
end
assert ok?
assert_equal 'Hello Bar!', body
end

it "renders with inline layouts" do
mock_app do
layout { 'THIS. IS. +{yield.upcase}!' }
get('/') { wlang 'Sparta' }
end
get '/'
assert ok?
assert_equal 'THIS. IS. SPARTA!', body
end

it "renders with file layouts" do
wlang_app { wlang 'Hello World', :layout => :layout2 }
assert ok?
assert_body "WLang Layout!\nHello World"
end

end

0 comments on commit 46f2547

Please sign in to comment.