Permalink
Browse files

Add support for wlang templating engine.

  • Loading branch information...
1 parent 4f5a2fd commit 46f2547cf44a4ae92a7a63fe1afb5444d7c8f5c5 @blambeau blambeau committed Jun 5, 2012
Showing with 72 additions and 0 deletions.
  1. +1 −0 Gemfile
  2. +4 −0 lib/sinatra/base.rb
  3. +1 −0 test/views/hello.wlang
  4. +2 −0 test/views/layout2.wlang
  5. +64 −0 test/wlang_test.rb
View
1 Gemfile
@@ -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'
View
4 lib/sinatra/base.rb
@@ -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
View
1 test/views/hello.wlang
@@ -0,0 +1 @@
+Hello from wlang!
View
2 test/views/layout2.wlang
@@ -0,0 +1,2 @@
+WLang Layout!
++{yield}
View
64 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.