From a6eea61f2a7cfbf67175583dd7dcb49a4c09da75 Mon Sep 17 00:00:00 2001 From: Aaron Peckham Date: Mon, 20 May 2013 12:19:35 -0700 Subject: allow widget views to be written in any Tilt-supported template language --- lib/dashing.rb | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/dashing.rb b/lib/dashing.rb index 391095d..04921fe 100644 --- a/lib/dashing.rb +++ b/lib/dashing.rb @@ -50,21 +50,20 @@ end get '/:dashboard' do protected! - view_engine = Tilt.mappings.keys.find do |ext| - File.exist? File.join(settings.views, "#{params[:dashboard]}.#{ext}") + tilt_html_engines.each do |suffix, _| + file = File.join(settings.views, "#{params[:dashboard]}.#{suffix}") + return render(suffix.to_sym, params[:dashboard].to_sym) if File.exist? file end - if view_engine - render view_engine.to_sym, params[:dashboard].to_sym - else - halt 404 - end + halt 404 end get '/views/:widget?.html' do protected! - widget = params[:widget] - send_file File.join(settings.root, 'widgets', widget, "#{widget}.html") + tilt_html_engines.each do |suffix, engines| + file = File.join(settings.root, "widgets", params[:widget], "#{params[:widget]}.#{suffix}") + return engines.first.new(file).render if File.exist? file + end end post '/widgets/:id' do @@ -116,6 +115,13 @@ def first_dashboard files.first end +def tilt_html_engines + Tilt.mappings.select do |_, engines| + default_mime_type = engines.first.default_mime_type + default_mime_type.nil? || default_mime_type == 'text/html' + end +end + Dir[File.join(settings.root, 'lib', '**', '*.rb')].each {|file| require file } {}.to_json # Forces your json codec to initialize (in the event that it is lazily loaded). Does this before job threads start. -- cgit v1.2.3