def operation(name, opts = {}, &block)
if @operations.keys.include?(name)
raise DuplicateOperationException::new(500, "DuplicateOperation", "Operation #{name} is already defined", [])
end
c = self
path_generator = Proc.new do |obj|
if obj.member?
if obj.standard?
"#{parent.name}/:#{parent.name.to_s.singularize}/:#{c.name.to_s.singularize}"
else
"#{parent.name}/:#{parent.name.to_s.singularize}/:#{c.name.to_s.singularize}/#{name}"
end
else
if obj.form?
"#{parent.name}/:id/:#{parent.name.to_s.singularize}/#{obj.name}"
else
"#{parent.name}/:#{parent.name.to_s.singularize}"
end
end
end
opts.merge!({
:path_generator => path_generator
})
@operations[name] = Operation.new(self, name, opts, &block)
end