def patterns_for(path)
default_action_name = ancestral_trait[:default_action_name]
separate_default_action = ancestral_trait[:separate_default_action]
atoms = path.split('/')
atoms.delete('')
result = nil
atoms.size.downto(0) do |len|
action_name = atoms[0...len].join('__')
next if separate_default_action && action_name == default_action_name
params = atoms[len..-1]
action_name = default_action_name if action_name.empty? &&
(separate_default_action || params != [default_action_name])
return result if result = yield(action_name, params)
end
return nil
end