class Kojo::Config

The Config class handles multiple template generation from a definitions YAML file.

Attributes

config_file[R]
import_base[RW]
outdir[R]

Public Class Methods

new(config_file) click to toggle source
# File lib/kojo/config.rb, line 10
def initialize(config_file)
  @config_file = config_file
  @import_base = nil
end

Public Instance Methods

generate(opts = {}, &block) click to toggle source
# File lib/kojo/config.rb, line 15
def generate(opts = {}, &block)
  if directory_mode?
    generate_from_dir opts, &block
  else
    generate_from_file opts, &block
  end
end

Private Instance Methods

base_dir() click to toggle source
# File lib/kojo/config.rb, line 49
def base_dir
  @base_dir ||= File.dirname config_file
end
config() click to toggle source
# File lib/kojo/config.rb, line 61
def config
  @config ||= YAML.load_file config_file
end
directory_mode?() click to toggle source
# File lib/kojo/config.rb, line 53
def directory_mode?
  File.directory? source
end
generate_from_dir(opts) { |"#{dir}/#{file}", output| ... } click to toggle source
# File lib/kojo/config.rb, line 36
def generate_from_dir(opts)
  config['output'].each do |dir, config_opts|
    local_opts = opts.merge config_opts.symbolize_keys

    collection = Collection.new source
    collection.import_base = import_base if import_base

    collection.render(local_opts) do |file, output|
      yield "#{dir}/#{file}", output
    end
  end
end
generate_from_file(opts) { |target, render| ... } click to toggle source
# File lib/kojo/config.rb, line 25
def generate_from_file(opts)
  config['output'].each do |target, config_opts|
    local_opts = opts.merge config_opts.symbolize_keys
    
    template = Template.new source
    template.import_base = import_base if import_base
    
    yield target, template.render(local_opts)
  end
end
source() click to toggle source
# File lib/kojo/config.rb, line 57
def source
  "#{base_dir}/#{config['input']}"
end