require "erb" require "tilt" require "cgi" module Cognition module Plugins class PluginTemplateNotFound < StandardError; end class Base class < e raise PluginTemplateNotFound, e end private def template_file(name, type, extension) # Defaults to html ERB for now. Override when calling #render(path_to_file) File.join(templates_path, "#{name}.#{type}.#{extension}") end def underscore(string) word = string.to_s.gsub(/::/, "/") word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, "\1_\2") word.gsub!(/([a-z\d])([A-Z])/, "\1_\2") word.tr!("-", "_") word.downcase! word end def templates_path File.expand_path("#{underscore(self.class.name)}/views", self.class.view_root) end end end end