lib/rubycritic/report_generators/base.rb



require "erb"
require "rubycritic/report_generators/view_helpers"

module Rubycritic
  module Generator

    class Base
      def self.erb_template(template_path)
        ERB.new(File.read(File.join(TEMPLATES_DIR, template_path)))
      end

      TEMPLATES_DIR = File.expand_path("../templates", __FILE__)
      LAYOUT_TEMPLATE = erb_template(File.join("layouts", "application.html.erb"))

      include ViewHelpers

      def file_href
        "file://#{file_pathname}"
      end

      def file_pathname
        File.join(file_directory, file_name)
      end

      def file_directory
        @file_directory ||= root_directory
      end

      def file_name
        raise NotImplementedError.new("The #{self.class} class must implement the #{__method__} method.")
      end

      def render
        raise NotImplementedError.new("The #{self.class} class must implement the #{__method__} method.")
      end

      private

      def root_directory
        @root_directory ||= Pathname.new(::Rubycritic.configuration.root)
      end

      def get_binding
        binding
      end
    end

  end
end