Sha256: 42bdfa9eee475674761f7a3c1bdcd4778c89755ef0fb2bc60643705bc797929d

Contents?: true

Size: 1.99 KB

Versions: 3

Compression:

Stored size: 1.99 KB

Contents

module Society
  module Formatter
    module Report
      class HTML

        attr_reader :json_data, :output_path

        def initialize(json_data:, output_path: default_output_path)
          @json_data = json_data
          @output_path = output_path
        end

        def write
          prepare_output_directory
          write_html
          copy_assets
          write_json_data
        end

        private

        def default_output_path
          File.join(%w[doc society])
        end

        def write_html
          File.open(File.join(output_path, 'index.htm'), 'w') {|outfile| outfile.write(index)}
        end

        def copy_assets
          bower_dir = File.join(File.dirname(__FILE__), 'templates', 'components')
          FileUtils.cp(
            File.join(bower_dir, 'society-assets', 'society.css'),
            File.join(output_path, 'stylesheets', 'society.css')
          )
          FileUtils.cp(
            File.join(bower_dir, 'society-assets', 'society.js'),
            File.join(output_path, 'javascripts', 'society.js')
          )
          FileUtils.cp(
            File.join(bower_dir, 'd3', 'd3.min.js'),
            File.join(output_path, 'javascripts', 'd3.min.js')
          )
        end

        def index
          Haml::Engine.new(template).render(
            Object.new, json_data: json_data
          )
        end

        def template
          path = File.join(File.dirname(__FILE__), 'templates', 'index.htm.haml')
          File.read(path)
        end

        def timestamp
          @timestamp ||= Time.now.strftime("%Y_%m_%d_%H_%M_%S")
        end

        def prepare_output_directory
          FileUtils.mkpath(File.join(output_path, 'stylesheets'))
          FileUtils.mkpath(File.join(output_path, 'javascripts'))
        end

        def write_json_data
          json_path = File.join(output_path, 'data', timestamp, 'society_graph.json')
          Formatter::Report::Json.new(json_data: json_data, output_path: json_path).write
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
society-1.1.1 lib/society/formatter/report/html.rb
society-1.1.0 lib/society/formatter/report/html.rb
society-1.0.0 lib/society/formatter/report/html.rb