Class: Makura::Design

Inherits:
Object
  • Object
show all
Defined in:
lib/makura/design.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, database = nil) ⇒ Design

Returns a new instance of Design.



6
7
8
9
10
# File 'lib/makura/design.rb', line 6

def initialize(name, database = nil)
  @name, @database = name, database
  @language = 'javascript'
  @layouts = {}
end

Instance Attribute Details

#databaseObject

Returns the value of attribute database.



3
4
5
# File 'lib/makura/design.rb', line 3

def database
  @database
end

#languageObject

Returns the value of attribute language.



3
4
5
# File 'lib/makura/design.rb', line 3

def language
  @language
end

#layoutsObject (readonly)

Returns the value of attribute layouts.



4
5
6
# File 'lib/makura/design.rb', line 4

def layouts
  @layouts
end

#nameObject

Returns the value of attribute name.



3
4
5
# File 'lib/makura/design.rb', line 3

def name
  @name
end

Instance Method Details

#[](layout_name) ⇒ Object



21
22
23
# File 'lib/makura/design.rb', line 21

def [](layout_name)
  @layouts[layout_name.to_s]
end

#[]=(layout_name, layout) ⇒ Object



25
26
27
# File 'lib/makura/design.rb', line 25

def []=(layout_name, layout)
  @layouts[layout_name.to_s] = layout
end

#saveObject



12
13
14
15
16
17
18
19
# File 'lib/makura/design.rb', line 12

def save
  hash = to_hash
  doc = @database[hash['_id']]
  doc['views'] = hash['views']
  @database.save(doc)
rescue Makura::Error::ResourceNotFound
  @database.save(to_hash)
end

#to_hashObject



29
30
31
32
33
34
35
# File 'lib/makura/design.rb', line 29

def to_hash
  views = {}
  @layouts.each{|name, layout| views[name] = layout.to_hash }
  views.delete_if{|k,v| !(v[:map] || v['map']) }

  {'language' => @language, '_id' => "_design/#{@name}", 'views' => views}
end