Class: Slimmer::Skin
- Inherits:
-
Object
- Object
- Slimmer::Skin
- Defined in:
- lib/slimmer.rb
Instance Method Summary collapse
- #admin(request, body) ⇒ Object
- #cache(name, template) ⇒ Object
- #cached_template(name) ⇒ Object
- #error(request, template_name, body) ⇒ Object
-
#initialize(asset_host, use_cache = false) ⇒ Skin
constructor
TODO: Extract the cache to something we can pass in instead of using true/false and an in-memory cache.
- #load_template(template_name) ⇒ Object
- #process(processors, body, template) ⇒ Object
- #success(request, body) ⇒ Object
- #template(template_name) ⇒ Object
- #template_cached?(name) ⇒ Boolean
- #template_url(template_name) ⇒ Object
Constructor Details
#initialize(asset_host, use_cache = false) ⇒ Skin
TODO: Extract the cache to something we can pass in instead of using true/false and an in-memory cache.
263 264 265 266 267 |
# File 'lib/slimmer.rb', line 263 def initialize asset_host, use_cache = false self.asset_host = asset_host self.templated_cache = {} self.use_cache = false end |
Instance Method Details
#admin(request, body) ⇒ Object
319 320 321 322 323 324 325 326 327 328 329 |
# File 'lib/slimmer.rb', line 319 def admin(request,body) processors = [ TitleInserter.new(), TagMover.new(), AdminTitleInserter.new, FooterRemover.new, BodyInserter.new(), BodyClassCopier.new ] process(processors,body,template('admin')) end |
#cache(name, template) ⇒ Object
282 283 284 285 |
# File 'lib/slimmer.rb', line 282 def cache name, template return unless use_cache templated_cache[name] = template end |
#cached_template(name) ⇒ Object
278 279 280 |
# File 'lib/slimmer.rb', line 278 def cached_template name templated_cache[name] end |
#error(request, template_name, body) ⇒ Object
301 302 303 304 305 306 |
# File 'lib/slimmer.rb', line 301 def error(request, template_name, body) processors = [ TitleInserter.new() ] process(processors, body, template(template_name)) end |
#load_template(template_name) ⇒ Object
287 288 289 290 291 292 293 |
# File 'lib/slimmer.rb', line 287 def load_template template_name url = template_url template_name source = open(url, "r:UTF-8").read template = ERB.new(source).result binding cache template_name, template template end |
#process(processors, body, template) ⇒ Object
308 309 310 311 312 313 314 315 316 317 |
# File 'lib/slimmer.rb', line 308 def process(processors,body,template) src = Nokogiri::HTML.parse(body.to_s) dest = Nokogiri::HTML.parse(template) processors.each do |p| p.filter(src,dest) end return dest.to_html end |
#success(request, body) ⇒ Object
331 332 333 334 335 336 337 338 339 340 341 342 |
# File 'lib/slimmer.rb', line 331 def success(request,body) processors = [ TitleInserter.new(), TagMover.new(), BodyInserter.new(), BodyClassCopier.new, SectionInserter.new() ] template_name = request.env.has_key?(TEMPLATE_HEADER) ? request.env[TEMPLATE_HEADER] : 'wrapper' process(processors,body,template(template_name)) end |
#template(template_name) ⇒ Object
269 270 271 272 |
# File 'lib/slimmer.rb', line 269 def template(template_name) return cached_template(template_name) if template_cached? template_name load_template template_name end |
#template_cached?(name) ⇒ Boolean
274 275 276 |
# File 'lib/slimmer.rb', line 274 def template_cached? name !cached_template(name).nil? end |
#template_url(template_name) ⇒ Object
295 296 297 298 299 |
# File 'lib/slimmer.rb', line 295 def template_url template_name host = asset_host.dup host += '/' unless host =~ /\/$/ "#{host}templates/#{template_name}.html.erb" end |