Sha256: ae51f40b8e6485d695eb34aba9208b82df0fde4b9536becc619481f626ccf140

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

require 'erb'
require 'rubrowser/data'
require 'rubrowser/formatter/json'

module Rubrowser
  class Renderer
    # Accepted options are:
    # files: list of file paths to parse
    # toolbox: bool, show/hide toolbox
    def self.call(options = {})
      new(options).call
    end

    def call
      output.write(erb(:index))
    end

    private

    include ERB::Util

    attr_reader :files, :output, :server

    def initialize(options)
      @output = output_file(options[:output])
      @layout = options[:layout]
      @server = options[:server]
      @files = options[:files]
      @toolbox = options[:toolbox]
    end

    def output_file(path)
      path.is_a?(String) ? File.open(path, 'w') : path
    end

    def layout
      return 'null' unless @layout
      File.read(@layout)
    end

    def toolbox?
      @toolbox
    end

    def data
      data = Data.new(files)
      formatter = Formatter::JSON.new(data)
      formatter.call
    end

    def file(path)
      File.read(resolve_file_path("/public/#{path}"))
    end

    def erb(template)
      path = resolve_file_path("/views/#{template}.erb")
      file = File.open(path).read
      ERB.new(file).result binding
    end

    def resolve_file_path(path)
      File.expand_path("../../..#{path}", __FILE__)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rubrowser-2.7.1 lib/rubrowser/renderer.rb
rubrowser-2.7.0 lib/rubrowser/renderer.rb