class CMockPluginManager
¶ ↑
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]
¶ ↑
Attributes
plugins[RW]
Public Class Methods
mutex()
click to toggle source
# File vendor/cmock/lib/cmock_plugin_manager.rb, line 33 def self.mutex @mutex ||= Mutex.new end
new(config, utils)
click to toggle source
# File vendor/cmock/lib/cmock_plugin_manager.rb, line 10 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) self.class.mutex.synchronize { load_plugin(plugin_name, object_name, config, utils) } end @plugins.sort! { |a, b| a.priority <=> b.priority } end
Public Instance Methods
camelize(lower_case_and_underscored_word)
click to toggle source
# File vendor/cmock/lib/cmock_plugin_manager.rb, line 29 def camelize(lower_case_and_underscored_word) lower_case_and_underscored_word.gsub(/\/(.?)/) { '::' + Regexp.last_match(1).upcase }.gsub(/(^|_)(.)/) { Regexp.last_match(2).upcase } end
run(method, args = nil)
click to toggle source
# File vendor/cmock/lib/cmock_plugin_manager.rb, line 21 def run(method, args = nil) if args.nil? @plugins.collect { |plugin| plugin.send(method) if plugin.respond_to?(method) }.flatten.join else @plugins.collect { |plugin| plugin.send(method, args) if plugin.respond_to?(method) }.flatten.join end end
Private Instance Methods
load_plugin(plugin_name, object_name, config, utils)
click to toggle source
# File vendor/cmock/lib/cmock_plugin_manager.rb, line 39 def load_plugin(plugin_name, object_name, config, utils) unless Object.const_defined? object_name file_name = "#{__dir__}/cmock_generator_plugin_#{plugin_name.downcase}.rb" require file_name end class_name = Object.const_get(object_name) @plugins << class_name.new(config, utils) rescue StandardError file_name = "#{__dir__}/cmock_generator_plugin_#{plugin_name.downcase}.rb" raise "ERROR: CMock unable to load plugin '#{plugin_name}' '#{object_name}' #{file_name}" end