class Bpl::Pass

Public Class Methods

depends(*passes) click to toggle source
# File lib/bpl/pass.rb, line 29
def depends(*passes)
  @depends ||= []
  @depends += passes
  passes.each do |p|
    define_method(p) { instance_variable_get("@#{p}") }
  end
  @depends
end
flag(*args, &blk) click to toggle source
# File lib/bpl/pass.rb, line 9
def flag(*args, &blk)
  flags << {args: args, blk: blk}
end
flags() click to toggle source
# File lib/bpl/pass.rb, line 13
def flags
  @flags ||= []
  @flags
end
inherited(subclass) click to toggle source
# File lib/bpl/pass.rb, line 51
def inherited(subclass)
  subclass.instance_variable_set("@flags",@flags)
  subclass.instance_variable_set("@depends",@depends)
end
invalidates(*passes) click to toggle source
# File lib/bpl/pass.rb, line 38
def invalidates(*passes)
  @invalidates ||= Set.new
  @invalidates.merge(passes)
end
new(opts = {}) click to toggle source
# File lib/bpl/pass.rb, line 57
def initialize(opts = {})
  self.class.options.merge(opts).each do |k,v|
    instance_variable_set("@#{k}",v) if respond_to?(k)
  end
end
option(k,v=nil) click to toggle source
# File lib/bpl/pass.rb, line 18
def option(k,v=nil)
  define_method(k) do
    instance_variable_get("@#{k}")
  end
  options[k] = v
end
options() click to toggle source
# File lib/bpl/pass.rb, line 25
def options
  @options ||= {}
end
result(key, init) click to toggle source
# File lib/bpl/pass.rb, line 43
def result(key, init)
  define_method(key) do
    v = instance_variable_get("@#{key}")
    instance_variable_set("@#{key}", init) unless v
    instance_variable_get("@#{key}")
  end
end
switch(*args, &blk) click to toggle source
# File lib/bpl/pass.rb, line 5
def switch(*args, &blk)
  @switch ||= {args: args, blk: blk}
end

Public Instance Methods

added(*programs) click to toggle source
# File lib/bpl/pass.rb, line 76
def added(*programs)
  @added ||= []
  @added += programs
end
invalidates(*passes) click to toggle source
# File lib/bpl/pass.rb, line 63
def invalidates(*passes)
  @invalidates ||= Set.new
  self.class.invalidates + @invalidates.merge(passes)
end
redo!() click to toggle source
# File lib/bpl/pass.rb, line 68
def redo!; @redo ||= true end
redo?() click to toggle source
# File lib/bpl/pass.rb, line 69
def redo?; @redo ||= false end
removed(*programs) click to toggle source
# File lib/bpl/pass.rb, line 71
def removed(*programs)
  @removed ||= []
  @removed += programs
end
run!(program) click to toggle source
# File lib/bpl/pass.rb, line 81
def run! program
  fail "#{self.class} must implement :run instance method."
end