Skip to content

Commit

Permalink
Adds support for urls with pascal casing for underscored method names
Browse files Browse the repository at this point in the history
Signed-off-by: Jimmy Schementi <jschementi@gmail.com>
  • Loading branch information
casualjim authored and jschementi committed Mar 13, 2009
1 parent bbe735d commit e125fd4
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions IronRubyMvc/Core/RubyEngine.cs
Expand Up @@ -114,6 +114,16 @@ public RubyController ConfigureController(RubyClass rubyClass, RequestContext re
return controller;
}

public string GetMethodName(object receiver, string message)
{
var methodNames = Operations.GetMemberNames(receiver);

if (methodNames.Contains(message.Pascalize())) return message.Pascalize();
if (methodNames.Contains(message.Underscore())) return message.Underscore();

return message;
}

/// <summary>
/// Calls the method.
/// </summary>
Expand All @@ -123,11 +133,7 @@ public RubyController ConfigureController(RubyClass rubyClass, RequestContext re
/// <returns></returns>
public object CallMethod(object receiver, string message, params object[] args)
{
if (!Operations.ContainsMember(receiver, message) && Operations.ContainsMember(receiver, message.Pascalize()))
message = message.Pascalize();
if (!Operations.ContainsMember(receiver, message) && Operations.ContainsMember(receiver, message.Underscore()))
message = message.Underscore();
return Operations.InvokeMember(receiver, message, args);
return Operations.InvokeMember(receiver, GetMethodName(receiver, message), args);
}


Expand Down

0 comments on commit e125fd4

Please sign in to comment.