Class: Pretentious::LazyTrigger

Inherits:
Object
  • Object
show all
Defined in:
lib/pretentious/lazy_trigger.rb

Defined Under Namespace

Classes: Target

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target_class, options = {}) ⇒ LazyTrigger

Returns a new instance of LazyTrigger.



20
21
22
23
24
25
# 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

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



3
4
5
# File 'lib/pretentious/lazy_trigger.rb', line 3

def options
  @options
end

#target_classObject

Returns the value of attribute target_class.



3
4
5
# File 'lib/pretentious/lazy_trigger.rb', line 3

def target_class
  @target_class
end

#targetsObject

Returns the value of attribute targets.



3
4
5
# File 'lib/pretentious/lazy_trigger.rb', line 3

def targets
  @targets
end

Class Method Details

.clearObject



102
103
104
# File 'lib/pretentious/lazy_trigger.rb', line 102

def clear
  @instances = []
end

.collect_artifactsObject



92
93
94
95
96
97
98
99
100
# 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_targetsObject



82
83
84
85
86
87
88
89
90
# 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) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# 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) ⇒ Object



74
75
76
77
78
79
80
# 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

.register_instance(instance) ⇒ Object



106
107
108
109
# File 'lib/pretentious/lazy_trigger.rb', line 106

def register_instance(instance)
  @instances ||= []
  @instances << instance unless @instances.include? instance
end

.unregister_instance(instance) ⇒ Object



111
112
113
# File 'lib/pretentious/lazy_trigger.rb', line 111

def unregister_instance(instance)
  @instances.delete(instance)
end

Instance Method Details

#disable!Object



27
28
29
# File 'lib/pretentious/lazy_trigger.rb', line 27

def disable!
  Pretentious::LazyTrigger.unregister_instance(self)
end

#match(value) ⇒ Object



42
43
44
45
46
47
48
49
50
# 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) ⇒ Object



37
38
39
40
# 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

#restoreObject



31
32
33
34
35
# 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