Module: UniverseCompiler::Universe::Multiverse

Included in:
Base
Defined in:
lib/universe_compiler/universe/multiverse.rb

Constant Summary collapse

DEFAULT_UNIVERSE_NAME =
'Unnamed Universe'.freeze

Instance Method Summary collapse

Instance Method Details

#get_unique_name(seed = DEFAULT_UNIVERSE_NAME) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/universe_compiler/universe/multiverse.rb', line 17

def get_unique_name(seed = DEFAULT_UNIVERSE_NAME)
  max_index = 1
  universes.keys.each do |universe_name|
    universe_name.match /^#{seed}(?:(?: - #)(?<index>\d+))?$/ do |md|
      index = md['index'] || '1'
      index = index.to_i
      max_index = index > max_index ? index : max_index
    end
  end
  if max_index == 1
    seed
  else
    UniverseCompiler.logger.debug "Universe #{seed} reached its #{max_index} iteration."
    format_name(seed, max_index)
  end
end

#register(universe) ⇒ Object



12
13
14
15
# File 'lib/universe_compiler/universe/multiverse.rb', line 12

def register(universe)
  raise UniverseCompiler::Error, "Universe '#{universe.name}' already exists in this continuum !" if universes.keys.include? universe.name
  universes[universe.name] = universe
end

#universesObject



8
9
10
# File 'lib/universe_compiler/universe/multiverse.rb', line 8

def universes
  @universes ||= {}
end