module Fluent::Configurable

def self.included(mod)

def self.included(mod)
  mod.extend(ClassMethods)
end

def configure(conf)

def configure(conf)
  self.class.config_params.each_pair {|name,(block,opts)|
    varname = :"@#{name}"
    if val = conf[name.to_s]
      val = self.instance_exec(val, opts, name, &block)
      instance_variable_set(varname, val)
    end
    unless instance_variable_defined?(varname)
      $log.error "config error in:\n#{conf}"
      raise ConfigError, "'#{name}' parameter is required"
    end
  }
end

def initialize

def initialize
  self.class.config_defaults.each_pair {|name,defval|
    varname = :"@#{name}"
    instance_variable_set(varname, defval)
  }
end