class Throw::Design
Public Class Methods
new(server, details, query = nil)
click to toggle source
# File lib/couchdb/design.rb, line 3 def initialize(server, details, query = nil) @server = server @details = details @id = details[:id] || details[:_id] @name = @id.split('/').last if @details @query = query || [] @views = @details[:views].inject({}) do |memo, (name, value)| memo[name] = name memo[name.to_s.gsub('-', '_').to_sym] = name memo end @lists = @details[:lists].inject({}) do |memo, (name, value)| memo[name] = name memo[name.to_s.gsub('-', '_').to_sym] = name memo end end
Public Instance Methods
<<(name)
click to toggle source
# File lib/couchdb/design.rb, line 27 def <<(name) @query << name self end
clone()
click to toggle source
# File lib/couchdb/design.rb, line 23 def clone Design.new(@server, @details, @query ? @query.clone : nil) end
run(*args) { |res| ... }
click to toggle source
# File lib/couchdb/design.rb, line 32 def run(*args, &block) view_name = get_query_view list_name = get_query_list res = if view_name && list_name @server.get("_design/#{@name}/_list/#{list_name}/#{view_name}", *args) elsif view_name @server.get("_design/#{@name}/_view/#{view_name}", *args) end return res unless block_given? yield res end
Private Instance Methods
get_query_list()
click to toggle source
# File lib/couchdb/design.rb, line 54 def get_query_list name = @query.select{|q| @lists.has_key? q.to_sym}.first name = @lists[name] if name name end
get_query_view()
click to toggle source
# File lib/couchdb/design.rb, line 48 def get_query_view name = @query.select{|q| @views.has_key? q.to_sym}.first name = @views[name] if name name end
method_missing(name, *args) { |copy| ... }
click to toggle source
# File lib/couchdb/design.rb, line 60 def method_missing(name, *args, &block) copy = clone << name return copy unless block_given? yield copy end