Use less threads, they're expensive [#9 state:closed]
[amazing.git] / lib / amazing / config.rb
blob5bf939fb9bbc31f70e2065c881a24343ada0a146
1 require 'amazing/string'
2 require 'amazing/config/dsl'
3 require 'amazing/widgets'
5 module Amazing
6   class Config < Hash
7     def initialize(config)
8       @config = config
9       load_dsl
10     end
12     private
14     def load_dsl
15       dsl = Dsl.new(@config)
16       self[:awesome] = []
17       dsl.awesome_statusbars.each do |awesome|
18         self[:awesome] << {}
19         self[:awesome][-1][:screen] = awesome.options[:screen] || 0
20         self[:awesome][-1][:statusbar] = awesome.options[:statusbar] || "mystatusbar"
21         self[:awesome][-1][:widgets] = []
22         awesome.widgets.each do |widget|
23           self[:awesome][-1][:widgets] << {}
24           self[:awesome][-1][:widgets][-1][:identifier] = widget.identifier
25           self[:awesome][-1][:widgets][-1][:properties] = widget.properties
26           self[:awesome][-1][:widgets][-1].merge!(widget.options)
27           self[:awesome][-1][:widgets][-1][:module] ||= widget.identifier
28           self[:awesome][-1][:widgets][-1][:property] ||= "text"
29           self[:awesome][-1][:widgets][-1][:module] = self[:awesome][-1][:widgets][-1][:module].to_s.camel_case
30           unless Widgets.constants.include?(self[:awesome][-1][:widgets][-1][:module])
31             self[:awesome][-1][:widgets][-1][:module] = "Noop"
32           end
33         end
34       end
35     end
36   end
37 end