From 11437e4517358214979eef34351208f4d2fefcbb Mon Sep 17 00:00:00 2001 From: starapor Date: Sun, 13 Sep 2009 14:47:14 +0100 Subject: [PATCH] Adding slippers as a new template --- lib/ramaze/view.rb | 1 + lib/ramaze/view/slippers.rb | 22 ++++++++++++++ spec/ramaze/view/slippers.rb | 52 +++++++++++++++++++++++++++++++++ spec/ramaze/view/slippers/external.st | 8 +++++ spec/ramaze/view/slippers/sum.st | 1 + 5 files changed, 84 insertions(+), 0 deletions(-) create mode 100644 lib/ramaze/view/slippers.rb create mode 100644 spec/ramaze/view/slippers.rb create mode 100644 spec/ramaze/view/slippers/external.st create mode 100644 spec/ramaze/view/slippers/sum.st diff --git a/lib/ramaze/view.rb b/lib/ramaze/view.rb index e69ae84..ec44754 100644 --- a/lib/ramaze/view.rb +++ b/lib/ramaze/view.rb @@ -35,5 +35,6 @@ module Ramaze auto_register :Sass, :sass auto_register :Tagz, :rb, :tagz auto_register :Tenjin, :rbhtml, :tenjin + auto_register :Slippers, :st end end diff --git a/lib/ramaze/view/slippers.rb b/lib/ramaze/view/slippers.rb new file mode 100644 index 0000000..f604185 --- /dev/null +++ b/lib/ramaze/view/slippers.rb @@ -0,0 +1,22 @@ +require 'slippers' + +module Ramaze + module View + module Slippers + def self.call(action, string) + slippers = View.compile(string){|s| ::Slippers::Engine.new(s, :template_group => template_group(action)) } + object_to_render = ::Slippers::BindingWrapper.new(action.instance.binding) + html = slippers.render(object_to_render) + return html, 'text/html' + end + + private + def self.template_group(action) + subtemplates = action.instance.ancestral_trait[:slippers_options] || {} + view_root = "#{action.instance.options[:roots]}/#{action.instance.options[:views]}" + template_group_directory = ::Slippers::TemplateGroupDirectory.new(view_root) + template_group = ::Slippers::TemplateGroup.new(:super_group => template_group_directory, :templates => subtemplates) + end + end + end +end diff --git a/spec/ramaze/view/slippers.rb b/spec/ramaze/view/slippers.rb new file mode 100644 index 0000000..769b547 --- /dev/null +++ b/spec/ramaze/view/slippers.rb @@ -0,0 +1,52 @@ +require File.expand_path('../../../../spec/helper', __FILE__) +spec_require 'slippers' + +Ramaze::App.options.views = 'slippers' + +class SpecSlippers < Ramaze::Controller + map '/' + engine :Slippers + + def index + @value = "foo" + '

Slippers Index with $value$

' + end + + def sum(num1, num2) + @num1, @num2 = num1.to_i, num2.to_i + end + + def external + end +end + +describe 'Ramaze::View::Slippers' do + behaves_like :rack_test + + should 'render' do + get('/').body.should == '

Slippers Index with foo

' + end + + should 'render external template' do + get('/external').body.strip. + should == ' + + Slippers Test + + +

Slippers Template

+ +' + end + + should 'render external template with instance variables' do + got = get('/sum/1/2') + got.status.should == 200 + got['Content-Type'].should == 'text/html' + got.body.strip.should == +"
+ 1 and 2 +
" + end + +end diff --git a/spec/ramaze/view/slippers/external.st b/spec/ramaze/view/slippers/external.st new file mode 100644 index 0000000..431467b --- /dev/null +++ b/spec/ramaze/view/slippers/external.st @@ -0,0 +1,8 @@ + + + Slippers Test + + +

Slippers Template

+ + diff --git a/spec/ramaze/view/slippers/sum.st b/spec/ramaze/view/slippers/sum.st new file mode 100644 index 0000000..728e130 --- /dev/null +++ b/spec/ramaze/view/slippers/sum.st @@ -0,0 +1 @@ +
$num1$ and $num2$
-- 1.6.1