module Kernel

Public Instance Methods

Bones { block } click to toggle source

Configure Mr Bones using the given block of code. If a block is not given, the Bones module is returned.

# File lib/bones.rb, line 108
def Bones( filename = nil, &block )

  # we absolutely have to have the bones plugin
  plugin_names = ::Bones.plugin_names
  ::Bones.plugin :bones_plugin unless plugin_names.empty? or plugin_names.include? :bones_plugin

  plugins = ::Bones.initialize_plugins.values
  ::Bones::Plugins::Gem.import_gemspec(filename) if filename
  return ::Bones unless block

  extend_method = Object.instance_method(:extend).bind(::Bones.config)
  plugins.each { |plugin|
    ps = plugin.const_get :Syntax rescue next
    extend_method.call ps
  }

  instance_eval_method = Object.instance_method(:instance_eval).bind(::Bones.config)
  instance_eval_method.call(&block)

  plugins.each { |plugin| plugin.post_load if plugin.respond_to? :post_load }
  plugins.each { |plugin| plugin.define_tasks if plugin.respond_to? :define_tasks }

  rakefiles = Dir.glob(File.join(Dir.pwd, %w[tasks *.rake])).sort
  rakefiles.each {|fn| Rake.application.add_import(fn)}
end