I did most of the initial work without any SCM. I am so bad.
[monoslider.git] / lib / mono_slideshow.rb
blobfe7c509a72370e665e271cf8a41a2891f24fa36d
1 require 'album'
2 require 'array_case_equality'
5 module MonoSlideshow
6   module SlideshowXML
7     
8     DEFAULTS = { :imageScaleMode => :scaleToFit }
9     
10     def self.included(base)
11       
12     end
13     
14     def mono_slideshow_xml(albums, preferences={})
15       albums = [albums].flatten
16       merged_prefs = albums.size == 1 ? {:showAlbumsButton => 'false'} : {}
17       merged_prefs.merge!(preferences).reverse_merge!(DEFAULTS)
18       xml = Builder::XmlMarkup.new
19       xml.instruct! :xml, :version => '1.0', :encoding => 'utf-8'
20       xml.slideshow do
21         xml.preferences(merged_prefs)
22         albums.each do |album|
23           album.slideshow_album_xml(xml)
24         end
25       end 
26       
27     end
28   end
29   
30 end
32 class Hash
33     def recursive_merge(h)
34         self.merge(h) {|key, _old, _new| if _old.class == Hash then _old.recursive_merge(_new) else _new end  } 
35     end
36     
37     def recursive_merge!(h)
38         self.merge!(h) {|key, _old, _new| if _old.class == Hash then _old.recursive_merge!(_new) else _new end  } 
39     end
40 end