class Grouik::Formatter

Formatter used to render loadables

Attributes

loadables[R]
options[R]
template[R]

Public Class Methods

format(loadables, options = {}) click to toggle source
# File src/lib/grouik/formatter.rb, line 47
def format(loadables, options = {})
  self.new(loadables, options).format
end
new(loadables, options = {}) click to toggle source
# File src/lib/grouik/formatter.rb, line 18
def initialize(loadables, options = {})
  @loadables = loadables
  @options   = options
  @formatted = nil
  @engine    = Tenjin::Engine.new(cache: false)
  @template  = options[:template]
end

Public Instance Methods

format() click to toggle source
# File src/lib/grouik/formatter.rb, line 35
def format
  @formatted = @formatted.nil? ? output : @formatted

  return self
end
formatted() click to toggle source
# File src/lib/grouik/formatter.rb, line 41
def formatted
  format
  @formatted.clone
end
to_s() click to toggle source
# File src/lib/grouik/formatter.rb, line 31
def to_s
  formatted
end

Protected Instance Methods

output() click to toggle source
# File src/lib/grouik/formatter.rb, line 54
def output
  items = loadables.to_a.map { |i| "require '#{i}'" }

  return items.join("\n") + "\n" unless template

  context = {
    requirement: lambda do |indent = nil|
      items.map { |i| '%s%s' % [indent, i] }.join("\n")
    end
  }

  @engine.render(template.to_s, context)
end