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