module Fluent::PluginHelper

def self.extended(mod)

def self.extended(mod)
  def mod.inherited(subclass)
    subclass.module_eval do
      @_plugin_helpers_list = []
    end
  end
end

def helpers(*snake_case_symbols)

def helpers(*snake_case_symbols)
  @_plugin_helpers_list ||= []
  @_plugin_helpers_list.concat(snake_case_symbols)
  helpers_internal(*snake_case_symbols)
end

def helpers_internal(*snake_case_symbols)

def helpers_internal(*snake_case_symbols)
  helper_modules = []
  snake_case_symbols.each do |name|
    begin
      helper_modules << Fluent::PluginHelper.const_get(name.to_s.split('_').map(&:capitalize).join)
    rescue NameError
      raise "Unknown plugin helper:#{name}"
    end
  end
  include(*helper_modules)
end

def plugin_helpers

def plugin_helpers
  @_plugin_helpers_list || []
end