Sha256: 996317dd3074fbcd576492734b2bf3c1a7d6601537612ab54e0af0582e849817

Contents?: true

Size: 1.46 KB

Versions: 36

Compression:

Stored size: 1.46 KB

Contents

# ==========================================
#   CMock Project - Automatic Mock Generation for C
#   Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
#   [Released under MIT License. Please refer to license.txt for details]
# ========================================== 

class CMockPluginManager

  attr_accessor :plugins
  
  def initialize(config, utils)
    @plugins = []
    plugins_to_load = [:expect, config.plugins].flatten.uniq.compact
    plugins_to_load.each do |plugin|
      plugin_name = plugin.to_s
      object_name = "CMockGeneratorPlugin" + camelize(plugin_name)
      begin
        unless (Object.const_defined? object_name)
          require "#{File.expand_path(File.dirname(__FILE__))}/cmock_generator_plugin_#{plugin_name.downcase}.rb"
        end
        @plugins << eval("#{object_name}.new(config, utils)")
      rescue
        raise "ERROR: CMock unable to load plugin '#{plugin_name}'"
      end
    end
    @plugins.sort! {|a,b| a.priority <=> b.priority }
  end
  
  def run(method, args=nil)
    if args.nil?
      return @plugins.collect{ |plugin| plugin.send(method) if plugin.respond_to?(method) }.flatten.join
    else
      return @plugins.collect{ |plugin| plugin.send(method, args) if plugin.respond_to?(method) }.flatten.join
    end
  end
  
  def camelize(lower_case_and_underscored_word)
    lower_case_and_underscored_word.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
ceedling-0.18.0 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.17.0 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.16.0 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.15.6 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.15.5 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.15.4 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.15.3 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.15.2 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.15.1 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.15.0 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.13.0 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.13.0.rc1 vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.12.2 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.12.1 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.12.0 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.11.2 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.11.1 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.11.0 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.10.0 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb
ceedling-0.9.4 new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb