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