class Pretentious::LazyTrigger

Attributes

options[RW]
target_class[RW]
targets[RW]

Public Class Methods

clear() click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 102
def clear
  @instances = []
end
collect_artifacts() click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 92
def collect_artifacts
  artifacts = []
  @instances.each do |instance|
    instance.targets.values.each do |target|
      artifacts << target.stand_in_klass
    end
  end
  artifacts
end
collect_targets() click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 82
def collect_targets
  artifacts = []
  @instances.each do |instance|
    instance.targets.values.each do |target|
      artifacts << target
    end
  end
  artifacts
end
generate_for_class(generator_class) click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 53
def generate_for_class(generator_class)
  all_results = {}
  Pretentious::LazyTrigger.collect_targets.each do |target|
    standin_klass = target.stand_in_klass
    klass = target.original_klass
    puts "generate for #{klass}"
    generator = generator_class.new

    generator.begin_spec(klass)
    generator.body(standin_klass._instances) unless standin_klass._instances.nil?
    generator.end_spec

    result = all_results[klass]
    all_results[klass] = [] if result.nil?

    result_output = generator.output.is_a?(String) ? generator.output.chomp : generator.output
    all_results[klass] = { output: result_output, generator: generator.class }
  end
  all_results
end
lookup(class_name) click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 74
def lookup(class_name)
  @instances ||= []
  @instances.each do |instance|
    return instance if instance.match(class_name)
  end
  nil
end
new(target_class, options = {}) click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 20
def initialize(target_class, options = {})
  @target_class = target_class
  @options = options
  @targets = {}
  Pretentious::LazyTrigger.register_instance(self)
end
register_instance(instance) click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 106
def register_instance(instance)
  @instances ||= []
  @instances << instance unless @instances.include? instance
end
unregister_instance(instance) click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 111
def unregister_instance(instance)
  @instances.delete(instance)
end

Public Instance Methods

disable!() click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 27
def disable!
  Pretentious::LazyTrigger.unregister_instance(self)
end
match(value) click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 42
def match(value)
  if @target_class.is_a? Regexp
    @target_class.match(value)
  elsif @target_class.is_a? String
    @target_class == value
  else
    @target_class.to_s == value
  end
end
register_class(module_space, klass, last_part, stand_in_class) click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 37
def register_class(module_space, klass, last_part, stand_in_class)
  target = Pretentious::LazyTrigger::Target.new(module_space, klass, last_part, stand_in_class)
  @targets[target.stand_in_klass] = target unless @targets.include? target.stand_in_klass
end
restore() click to toggle source
# File lib/pretentious/lazy_trigger.rb, line 31
def restore
  @targets.each do |_stand_in_klass, target|
    Pretentious::Generator.restore_class target.module_space, target.original_klass, target.name
  end
end