Skip to content

Commit

Permalink
Brushed up delegations to include prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
Amir Lohi authored and theodorton committed Nov 17, 2014
1 parent da670a8 commit ca87c0e
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions lib/yard-activerecord/delegations/delegate_handler.rb
Expand Up @@ -8,17 +8,29 @@ class DelegateHandler < YARD::Handlers::Ruby::MethodHandler
def process
params = statement.parameters
params.pop # we shouldn't have a block, so pop that off
params.map! { |p| p.source }
params.map! { |p| p.source.split(",") }
params.flatten!
options, params = params.partition { |v| v =~ /\=\>|\:\s/ }
class_name = options.detect { |v| v =~ /to\:\s|\:to \=\>/ } unless options.length == 0
class_name = class_name.to_s.gsub(/\A.*\:/,'').capitalize
if options.length > 0
class_name = options.detect { |v| v =~ /to\:\s|\:to\s+\=\>/ }
class_name = class_name.to_s.gsub(/\A.*\:/,'').capitalize
prefix_name = options.detect { |v| v =~ /prefix\:\s|\:prefix\s+\=\>/ }
prefix_name = prefix_name.to_s.gsub(/\A.*\:/,'').strip
end

params.each do |method_name|
method_name.gsub!(/[\:\'\"]/,'')
original_method_name = method_name.dup

unless prefix_name.length == 0
prefix_name = class_name.downcase if prefix_name == 'true'
method_name.prepend("#{prefix_name}_")
end
object = register YARD::CodeObjects::MethodObject.new(namespace, method_name)
object.group = "Delegated Instance Attributes"
object.docstring = "Alias for {#{class_name}##{method_name}}"
object.docstring = "Alias for #{class_name}##{original_method_name}"
object.docstring.add_tag get_tag(:return,
"{#{class_name}##{method_name}}", 'Object')
"#{class_name}##{method_name}", 'Object')
object.docstring.add_tag get_tag(:see,"Module#delegate",nil,
"http://api.rubyonrails.org/classes/Module.html#method-i-delegate")
end
Expand Down

0 comments on commit ca87c0e

Please sign in to comment.