module Ryb::DomainSpecificLanguage::Configurations

Public Instance Methods

architecture(name, opts={}, &block) click to toggle source
# File lib/ryb/dsl.rb, line 31
def architecture(name, opts={}, &block)
  # TODO(mtwilliams): Refactor this.
  @spec.architectures ||= []

  existing_arch = find_by_canonical_name(@spec.architectures, name)
  arch = existing_arch || Ryb::Architecture.new
  existing_pretty_name = arch.name.pretty if existing_arch
  arch.name ||= Ryb::Name.new(name, :pretty => existing_pretty_name || opts[:pretty])

  @spec.architectures << arch unless existing_arch

  DomainSpecificLanguage.for(arch).instance_eval(&block)
end
configuration(name, opts={}, &block) click to toggle source
# File lib/ryb/dsl.rb, line 4
def configuration(name, opts={}, &block)
  @spec.configurations ||= []

  existing_config = find_by_canonical_name(@spec.configurations, name)
  config = existing_config || Ryb::Configuration.new
  existing_pretty_name = config.name.pretty if existing_config
  config.name = Ryb::Name.new(name, :pretty => existing_pretty_name || opts[:pretty])

  @spec.configurations << config unless existing_config

  DomainSpecificLanguage.for(config).instance_eval(&block)
end
platform(name, opts={}, &block) click to toggle source
# File lib/ryb/dsl.rb, line 17
def platform(name, opts={}, &block)
  # TODO(mtwilliams): Refactor this.
  @spec.platforms ||= []

  existing_platform = find_by_canonical_name(@spec.platforms, name)
  platform = existing_platform || Ryb::Platform.new
  existing_pretty_name = platform.name.pretty if existing_platform
  platform.name ||= Ryb::Name.new(name, :pretty => existing_pretty_name || opts[:pretty])

  @spec.platforms << platform unless existing_platform

  DomainSpecificLanguage.for(platform).instance_eval(&block)
end

Private Instance Methods

find_by_canonical_name(ary_of_named_things, name) click to toggle source
# File lib/ryb/dsl.rb, line 46
def find_by_canonical_name(ary_of_named_things, name)
  (ary_of_named_things.select do |existing_thing|
      existing_thing.name.canonicalize == name.to_s
    end).first
end