lib/plugins/plugin.rb in rsence-pre-2.1.0.15 vs lib/plugins/plugin.rb in rsence-pre-2.1.0.16
- old
+ new
@@ -289,10 +289,22 @@
end
end
# @private Returns a hash with valid symbol keys for +#value_call+.
def sanitize_value_call_hash( hash_dirty )
+ if hash_dirty.class == Symbol
+ return { :method => hash_dirty }
+ elsif hash_dirty.class == String
+ if hash_dirty.include?('.')
+ last_dot_index = hash_dirty.rindex('.')
+ call_plugin = hash_dirty[0..(last_dot_index-1)].to_sym
+ call_method = hash_dirty[(last_dot_index+1)..-1].to_sym
+ return { :method => call_method, :plugin => call_plugin }
+ else
+ return { :method => hash_dirty.to_sym }
+ end
+ end
hash_clean = {}
hash_dirty.each do | key, value |
if key.to_sym == :method
hash_clean[:method] = value.to_sym
elsif key.to_sym == :plugin
@@ -318,11 +330,11 @@
end
# @private Returns a sanitized copy of a single responder specification.
def sanitize_value_responders( responders_dirty )
if responders_dirty.class != Array
- warn "Unsupported responders type: #{responders_dirty.inspect} (expected Array or Hash). Trying work-around.." unless responders_dirty.class == Hash
+ warn "Unsupported responders type: #{responders_dirty.inspect} (expected Array or Hash). Trying work-around.." unless responders_dirty.class == Hash and RSence.args[:verbose]
responders_dirty = [ responders_dirty ]
end
responders_clean = []
responders_dirty.each do |responder_dirty|
if responder_dirty.class != Hash
@@ -333,11 +345,11 @@
last_dot_index = responder_dirty.rindex('.')
responder_plugin = responder_dirty[0..(last_dot_index-1)].to_sym
responder_method = responder_dirty[(last_dot_index+1)..-1].to_sym
responder_dirty = { :method => responder_method, :plugin => responder_plugin }
else
- responder_dirty = { :method => responders_dirty.to_sym }
+ responder_dirty = { :method => responder_dirty.to_sym }
end
else
warn "Unsupported responder type: #{responder_dirty.inspect}. Skipping.."
next
end
@@ -372,9 +384,12 @@
warn "Unsupported value class (#{value.class.inspect}) for value: #{value.inspect}. Using 0 instead."
value_item_clean[:value] = 0
end
elsif key.to_sym == :value_call or key.to_sym == :call
value_item_clean[:value_call] = sanitize_value_call_hash( value )
+ elsif key.to_sym == :msg_call
+ value_item_clean[:value_call] = sanitize_value_call_hash( value )
+ value_item_clean[:value_call][:uses_msg] = true unless value_item_clean[:value_call].has_key?(:uses_msg)
elsif key.to_sym == :restore_default or key.to_sym == :restore
if [TrueClass, FalseClass].include? value.class
value_item_clean[:restore_default] = value
else
warn "Unsupported type of restore (expected true or false): #{value.inspect}. Using true instead."