Class: Throw::Design

Inherits:
Object
  • 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 (private)

Yields:

  • (copy)


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

#cloneObject



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

Yields:

  • (res)


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