Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

140 lines (117 sloc) 4.627 kb
require 'tilt/mapping'
require 'tilt/template'
# Namespace for Tilt. This module is not intended to be included anywhere.
module Tilt
# Current version.
VERSION = '2.0.1'
@default_mapping = Mapping.new
# @return [Tilt::Mapping] the main mapping object
def self.default_mapping
@default_mapping
end
# @private
def self.lazy_map
default_mapping.lazy_map
end
# @see Tilt::Mapping#register
def self.register(template_class, *extensions)
default_mapping.register(template_class, *extensions)
end
# @see Tilt::Mapping#register_lazy
def self.register_lazy(class_name, file, *extensions)
default_mapping.register_lazy(class_name, file, *extensions)
end
# @deprecated Use {register} instead.
def self.prefer(template_class, *extensions)
register(template_class, *extensions)
end
# @see Tilt::Mapping#registered?
def self.registered?(ext)
default_mapping.registered?(ext)
end
# @see Tilt::Mapping#new
def self.new(file, line=nil, options={}, &block)
default_mapping.new(file, line, options, &block)
end
# @see Tilt::Mapping#[]
def self.[](file)
default_mapping[file]
end
# @see Tilt::Mapping#template_for
def self.template_for(file)
default_mapping.template_for(file)
end
# @see Tilt::Mapping#templates_for
def self.templates_for(file)
default_mapping.templates_for(file)
end
# @return the template object that is currently rendering.
#
# @example
# tmpl = Tilt['index.erb'].new { '<%= Tilt.current_template %>' }
# tmpl.render == tmpl.to_s
#
# @note This is currently an experimental feature and might return nil
# in the future.
def self.current_template
Thread.current[:tilt_current_template]
end
# Extremely simple template cache implementation. Calling applications
# create a Tilt::Cache instance and use #fetch with any set of hashable
# arguments (such as those to Tilt.new):
#
# cache = Tilt::Cache.new
# cache.fetch(path, line, options) { Tilt.new(path, line, options) }
#
# Subsequent invocations return the already loaded template object.
class Cache
def initialize
@cache = {}
end
# @see Cache
def fetch(*key)
@cache.fetch(key) do
@cache[key] = yield
end
end
# Clears the cache.
def clear
@cache = {}
end
end
# Template Implementations ================================================
# ERB
register_lazy :ERBTemplate, 'tilt/erb', 'erb', 'rhtml'
register_lazy :ErubisTemplate, 'tilt/erubis', 'erb', 'rhtml', 'erubis'
# Markdown
register_lazy :BlueClothTemplate, 'tilt/bluecloth', 'markdown', 'mkd', 'md'
register_lazy :MarukuTemplate, 'tilt/maruku', 'markdown', 'mkd', 'md'
register_lazy :KramdownTemplate, 'tilt/kramdown', 'markdown', 'mkd', 'md'
register_lazy :RDiscountTemplate, 'tilt/rdiscount', 'markdown', 'mkd', 'md'
register_lazy :RedcarpetTemplate, 'tilt/redcarpet', 'markdown', 'mkd', 'md'
# Rest (sorted by name)
register_lazy :AsciidoctorTemplate, 'tilt/asciidoc', 'ad', 'adoc', 'asciidoc'
register_lazy :BuilderTemplate, 'tilt/builder', 'builder'
register_lazy :CSVTemplate, 'tilt/csv', 'rcsv'
register_lazy :CoffeeScriptTemplate, 'tilt/coffee', 'coffee'
register_lazy :CreoleTemplate, 'tilt/creole', 'wiki', 'creole'
register_lazy :EtanniTemplate, 'tilt/etanni', 'etn', 'etanni'
register_lazy :HamlTemplate, 'tilt/haml', 'haml'
register_lazy :LessTemplate, 'tilt/less', 'less'
register_lazy :LiquidTemplate, 'tilt/liquid', 'liquid'
register_lazy :MarkabyTemplate, 'tilt/markaby', 'mab'
register_lazy :NokogiriTemplate, 'tilt/nokogiri', 'nokogiri'
register_lazy :PlainTemplate, 'tilt/plain', 'html'
register_lazy :RDocTemplate, 'tilt/rdoc', 'rdoc'
register_lazy :RadiusTemplate, 'tilt/radius', 'radius'
register_lazy :RedClothTemplate, 'tilt/redcloth', 'textile'
register_lazy :SassTemplate, 'tilt/sass', 'sass'
register_lazy :ScssTemplate, 'tilt/sass', 'scss'
register_lazy :StringTemplate, 'tilt/string', 'str'
register_lazy :WikiClothTemplate, 'tilt/wikicloth', 'wiki', 'mediawiki', 'mw'
register_lazy :YajlTemplate, 'tilt/yajl', 'yajl'
# External template engines
register_lazy 'Slim::Template', 'slim', 'slim'
register_lazy 'Tilt::HandlebarsTemplate', 'tilt/handlebars', 'handlebars', 'hbs'
register_lazy 'Tilt::OrgTemplate', 'org-ruby', 'org'
end
Jump to Line
Something went wrong with that request. Please try again.