lib/tableficate/utils.rb in tableficate-0.2.1 vs lib/tableficate/utils.rb in tableficate-0.3.0

- old
+ new

@@ -1,7 +1,32 @@ module Tableficate module Utils - def self.template_path(template, theme = '') - File.join(['tableficate', theme, template].delete_if(&:blank?)) + def self.template_path(template, partial, theme = '') + file = File.join(['tableficate', theme, partial].delete_if(&:blank?)) + + file = File.join(['tableficate', partial]) if not theme.blank? and not template.lookup_context.exists?(file, [], true) + + file + end + + def self.find_column_type(scope, name) + name = name.to_s + column = scope.columns.detect{|column| column.name == name} || + ( + (scope.respond_to?(:joins_values) ? scope.joins_values : []) + + (scope.respond_to?(:includes_values) ? scope.includes_values : []) + ).uniq.map{|join| + # convert string joins to table names + if join.is_a?(String) + join.scan(/(?:(?:,|\bjoin\s*)\s*(\w+))/i) + else + join + end + }.flatten.map{|table_name| + ActiveRecord::Base::connection_pool.columns[table_name.to_s.tableize] + }.flatten.detect{|column| + column.name == name + } + column.try(:type) end end end