class RhetButler::FilterResolver
Attributes
default_content_filters[RW]
default_note_filters[RW]
named_filter_lists[RW]
root_group[RW]
Public Instance Methods
get_filters(filter, used_names=nil)
click to toggle source
# File lib/rhet-butler/filter-resolver.rb, line 18 def get_filters(filter, used_names=nil) case filter when String if !used_names.nil? and used_names.include?(filter) raise "Recursive filter list definitions: #{filter} already referenced in #{used_names}" end get_filters(named_filter_lists.fetch(filter), (used_names||[])+[filter]) do raise "No filter named #{filter}" end when Array filter.map{|item| get_filters(item)}.flatten else filter end end
on_slide(slide)
click to toggle source
# File lib/rhet-butler/filter-resolver.rb, line 34 def on_slide(slide) slide.content_filters = get_filters(slide.content_filters || default_content_filters) slide.html_classes += slide.content_filters.map do |filter| filter.html_class end slide.note_filters = get_filters(slide.note_filters || default_note_filters) slide.html_classes += slide.content_filters.map do |filter| "note-" + filter.html_class unless filter.html_class.nil? end [ *slide.raw_content ].each do |content| #XXX This is how all content filtering should work case content when SlideContents content.filters = get_filters(content.filters || default_content_filters) end end rescue puts "While processing #{slide}:" raise end
setup()
click to toggle source
# File lib/rhet-butler/filter-resolver.rb, line 9 def setup named_filter_lists.each_key do |name| named_filter_lists[name] = get_filters(named_filter_lists[name]) end self.default_content_filters = get_filters(default_content_filters) self.default_note_filters = get_filters(default_note_filters) descend(@root_group, @root_group) end