class BBC::A11y::Configuration::DSL
Attributes
settings[R]
Public Class Methods
new(config, config_filename = nil)
click to toggle source
# File lib/bbc/a11y/configuration.rb, line 94 def initialize(config, config_filename = nil) @settings = Settings.new @general_page_settings = [] begin if config_filename instance_eval config, config_filename else instance_eval &config end rescue NoMethodError => error method_name = error.message.scan(/\`(.*)'/)[0][0] raise Configuration::ParseError, "`#{method_name}` is not part of the configuration language", error.backtrace rescue => error raise Configuration::ParseError, error.message, error.backtrace end @settings = settings.with_pages(apply_general_settings(settings.pages)) end
Public Instance Methods
after_all(&block)
click to toggle source
# File lib/bbc/a11y/configuration.rb, line 116 def after_all(&block) settings.after_all_hooks << block end
before_all(&block)
click to toggle source
# File lib/bbc/a11y/configuration.rb, line 112 def before_all(&block) settings.before_all_hooks << block end
for_pages_matching(url, &block)
click to toggle source
# File lib/bbc/a11y/configuration.rb, line 124 def for_pages_matching(url, &block) @general_page_settings << PageDSL.new(url, block).settings end
page(url, &block)
click to toggle source
# File lib/bbc/a11y/configuration.rb, line 120 def page(url, &block) settings.pages << PageDSL.new(url, block).settings end
Private Instance Methods
apply_general_settings(all_page_settings)
click to toggle source
# File lib/bbc/a11y/configuration.rb, line 130 def apply_general_settings(all_page_settings) all_page_settings.map { |page_settings| matching_general_settings = @general_page_settings.select { |general_page_settings| general_page_settings.url.match page_settings.url } matching_general_settings.reduce(page_settings) { |page_settings, general_page_settings| page_settings.merge(general_page_settings) } } end