# File lib/sinatra/rabbit.rb, line 364 def generate operations.values.reject { |op| op.member }.each { |o| o.generate } operations.values.select { |op| op.member }.each { |o| o.generate } app = ::Sinatra::Application collname = name # Work around Ruby's weird scoping/capture app.send(:define_method, "#{parent.name.to_s}_#{name.to_s.singularize}_url") do |id, subid| api_url_for "#{collname}/#{id}/#{subid}", :full end if index_op = operations[:index] app.send(:define_method, "#{parent.name.to_s}_#{name}_url") do api_url_for index_op.path.gsub(/\/\?$/,''), :full end end end
# File lib/sinatra/rabbit.rb, line 336 def operation(name, opts = {}, &block) if @operations.keys.include?(name) raise DuplicateOperationException::new(500, "DuplicateOperation", "Operation #{name} is already defined", []) end # Preserve self as local variable to workaround Ruby namespace # weirdness 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
Generated with the Darkfish Rdoc Generator 2.