Class: Throw::Design
- Inherits:
-
Object
show all
- Defined in:
- lib/couchdb/design.rb
Instance Method Summary
collapse
Constructor Details
#initialize(server, details, query = nil) ⇒ Design
Returns a new instance of Design.
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 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
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) {|copy| ... } ⇒ Object
60
61
62
63
64
|
# File 'lib/couchdb/design.rb', line 60
def method_missing(name, *args, &block)
copy = clone << name
return copy unless block_given?
yield copy
end
|
Instance Method Details
#<<(name) ⇒ Object
27
28
29
30
|
# File 'lib/couchdb/design.rb', line 27
def <<(name)
@query << name
self
end
|
#clone ⇒ Object
23
24
25
|
# File 'lib/couchdb/design.rb', line 23
def clone
Design.new(@server, @details, @query ? @query.clone : nil)
end
|
#run(*args) {|res| ... } ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# 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
|