diff --git a/CHANGES b/CHANGES index 8e62585e..fefb1749 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ * Added support for HTTP PATCH requests. (Konstantin Haase) + * Support for Creole templates, Creole is a standardized wiki markup, + supported by many wiki implementations. (Konstanin Haase) + * Set up `Rack::Logger` or `Rack::NullLogger` depending on whether logging was enabled or not. Also, expose that logger with the `logger` helper method. (Konstantin Haase) diff --git a/Gemfile b/Gemfile index 841deb31..4348bf3e 100644 --- a/Gemfile +++ b/Gemfile @@ -36,6 +36,7 @@ gem 'coffee-script', '>= 2.0', :group => 'coffee-script' gem 'rdoc', :group => 'rdoc' gem 'kramdown', :group => 'kramdown' gem 'maruku', :group => 'maruku' +gem 'creole', :group => 'creole' platforms :ruby do gem 'rdiscount', :group => 'rdiscount' diff --git a/README.de.rdoc b/README.de.rdoc index f4cb0929..58b586b4 100644 --- a/README.de.rdoc +++ b/README.de.rdoc @@ -613,6 +613,19 @@ Das +slim+-Gem wird benötigt, um Slim-Templates rendern zu können: Dieser Code rendert ./views/index.slim. +=== Creole-Templates + +Das +creole+-Gem wird benötigt, um Creole-Templates rendern zu können: + + # creole muss eingebunden werden + require 'creole' + + get '/' do + creole :index + end + +Dieser Code rendert ./views/index.creole. + === CoffeeScript-Templates diff --git a/README.es.rdoc b/README.es.rdoc index b2a9bae9..6b131d61 100644 --- a/README.es.rdoc +++ b/README.es.rdoc @@ -597,6 +597,19 @@ La gem/librería slim es necesaria para renderizar plantillas Slim: Renderiza ./views/index.slim. +=== Plantillas Creole + +La gem/librería creole es necesaria para renderizar plantillas Creole: + + # Vas a necesitar requerir creole en tu app + require 'creole' + + get '/' do + creole :index + end + +Renderiza ./views/index.creole. + === Plantillas CoffeeScript La gem/librería coffee-script y al menos una de las siguientes diff --git a/README.fr.rdoc b/README.fr.rdoc index 0c03be39..1bb05e39 100644 --- a/README.fr.rdoc +++ b/README.fr.rdoc @@ -618,6 +618,20 @@ Le gem slim est nécessaire pour utiliser la fonction de rendu Slim: Utilisera ./views/index.slim. +=== Templates Creole + +Le gem creole est nécessaire pour utiliser la fonction de rendu +Creole: + + # Chargez la bibliothèque creole dans votre application + require 'creole' + + get '/' do + creole :index + end + +Utilisera ./views/index.creole. + === Templates CoffeeScript Le gem coffee-script est nécessaire ainsi que l'une des diff --git a/README.jp.rdoc b/README.jp.rdoc index c4797068..6fa2007d 100644 --- a/README.jp.rdoc +++ b/README.jp.rdoc @@ -432,6 +432,19 @@ Slimテンプレートを使うにはslimライブラリが必要です: ./views/index.slimを表示します。 +=== Creole テンプレート + +Creoleテンプレートを使うにはcreoleライブラリが必要です: + + # creoleを読み込みます + require 'creole' + + get '/' do + creole :index + end + +./views/index.creoleを表示します。 + === CoffeeScript テンプレート CoffeeScriptテンプレートを表示するにはcoffee-scriptライブラリと`coffee`バイナリが必要です: diff --git a/README.rdoc b/README.rdoc index 42a913df..c8ceac6e 100644 --- a/README.rdoc +++ b/README.rdoc @@ -562,6 +562,19 @@ The slim gem/library is required to render Slim templates: Renders ./views/index.slim. +=== Creole Templates + +The creole gem/library is required to render Creole templates: + + # You'll need to require creole in your app + require 'creole' + + get '/' do + creole :index + end + +Renders ./views/index.creole. + === CoffeeScript Templates The coffee-script gem/library and at least one of the diff --git a/README.ru.rdoc b/README.ru.rdoc index a2330887..e91b509a 100644 --- a/README.ru.rdoc +++ b/README.ru.rdoc @@ -584,6 +584,19 @@ Thin - это более производительный и функциона Отобразит ./views/index.slim. +=== Creole шаблоны + +creole gem/библиотека необходима для рендеринга creole шаблонов: + + # Вам нужно будет подключить creole в приложении + require 'creole' + + get '/' do + creole :index + end + +Отобразит ./views/index.creole. + === CoffeeScript шаблоны Вам понадобится coffee-script gem/библиотека и что-то одно из следующего списка, diff --git a/README.zh.rdoc b/README.zh.rdoc index 53c92270..6f13d240 100644 --- a/README.zh.rdoc +++ b/README.zh.rdoc @@ -582,6 +582,19 @@ Rack body对象或者HTTP状态码: 渲染 ./views/index.slim。 +=== Creole 模板 + +需要引入 creole gem/library 来渲染 Creole 模板: + + # 需要在你的应用中引入 creole + require 'creole' + + get '/' do + creole :index + end + +渲染 ./views/index.creole。 + === CoffeeScript 模板 需要引入 coffee-script gem/library 并至少满足下面条件一项 diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb index b5e75a76..bded4ded 100644 --- a/lib/sinatra/base.rb +++ b/lib/sinatra/base.rb @@ -518,6 +518,10 @@ module Sinatra render :slim, template, options, locals end + def creole(template, options={}, locals={}) + render :creole, template, options, locals + end + # Calls the given block for every possible template file in views, # named name.ext, where ext is registered on engine. def find_template(views, name, engine) diff --git a/test/creole_test.rb b/test/creole_test.rb new file mode 100644 index 00000000..03968550 --- /dev/null +++ b/test/creole_test.rb @@ -0,0 +1,65 @@ +require File.dirname(__FILE__) + '/helper' + +begin +require 'creole' + +class CreoleTest < Test::Unit::TestCase + def creole_app(&block) + mock_app do + set :views, File.dirname(__FILE__) + '/views' + get '/', &block + end + get '/' + end + + it 'renders inline creole strings' do + creole_app { creole '= Hiya' } + assert ok? + assert_body "
SPARTA
!', body + end + + it "renders with file layouts" do + creole_app { creole 'Hello World', :layout => :layout2, :layout_engine => :erb } + assert ok? + assert_body "ERB Layout!\nHello World
" + end + + it "can be used in a nested fashion for partials and whatnot" do + mock_app do + template(:inner) { "hi" } + template(:outer) { "hi