class Alki::Assembly::Meta::Overlay

Public Class Methods

new(type,target,overlay,args) click to toggle source
# File lib/alki/assembly/meta/overlay.rb, line 9
def initialize(type,target,overlay,args)
  @type = type
  @target = target
  @overlay = overlay
  @args = args
end

Public Instance Methods

process(executor,from,data) click to toggle source
# File lib/alki/assembly/meta/overlay.rb, line 16
def process(executor,from,data)
  data[:total_overlays] ||= 0
  data[:overlays] ||= Execution::OverlayMap.new

  target_path = @target.dup
  if target_path.last.to_s.start_with?('%')
    tag = target_path.pop
  end
  if target_path == []
    target_path = [:root]
  end

  target = executor.canonical_path(from,target_path) or
    raise InvalidPathError.new("Invalid overlay target #{@target.join('.')}")

  target = target.dup.push tag if tag
  overlay = @overlay
  if overlay.is_a?(Array)
    overlay = executor.canonical_path(from,@overlay) or
      raise InvalidPathError.new("Invalid overlay path #{@overlay.join('.')}")
  end
  order = data[:total_overlays]

  data[:overlays].add target, OverlayInfo.new(order,@type, overlay, @args)
  data[:total_overlays] += 1
end