Module: Inform::Modular
- Included in:
- Object
- Defined in:
- lib/story_teller/inform/ephemeral/module.rb
Overview
The Inform::Modular module
Instance Method Summary collapse
- #after_initialize ⇒ Object
- #apply_modules(exceptions = []) ⇒ Object
- #mod(*args) ⇒ Object
- #modules ⇒ Object
- #modules_semaphore ⇒ Object
- #nil_safe_modules ⇒ Object
-
#reset_modules ⇒ Object
TODO: This is broken somehow FIXME.
- #unmod(*args) ⇒ Object
Instance Method Details
#after_initialize ⇒ Object
95 96 97 98 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 95 def after_initialize self.apply_modules super end |
#apply_modules(exceptions = []) ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 135 def apply_modules(exceptions = []) nil_safe_modules.each do |module_name| next if exceptions.include?(module_name.to_sym) mod = find_module(module_name) next if mod.nil? mod.ancestors.reverse.each do |ancestor| self.extend(ancestor) end end self end |
#mod(*args) ⇒ Object
106 107 108 109 110 111 112 113 114 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 106 def mod(*args) a = args.flatten.collect(&:to_s) (a - (nil_safe_modules & a)).each do |mod| add_module(Inform::Module.find_or_create(name: mod)) end save apply_modules self end |
#modules ⇒ Object
100 101 102 103 104 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 100 def modules super rescue StandardError => _e Array::Empty end |
#modules_semaphore ⇒ Object
127 128 129 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 127 def modules_semaphore @modules_semaphore ||= Mutex.new end |
#nil_safe_modules ⇒ Object
131 132 133 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 131 def nil_safe_modules modules.compact.map(&:to_s) end |
#reset_modules ⇒ Object
TODO: This is broken somehow FIXME
148 149 150 151 152 153 154 155 156 157 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 148 def reset_modules nil_safe_modules.each do |module_name| remove_module(module_name) mod = find_module(module_name) next if mod.nil? mod.instance_methods.each { |method_name| undef_method(method_name) } end save self end |
#unmod(*args) ⇒ Object
116 117 118 119 120 121 122 123 124 125 |
# File 'lib/story_teller/inform/ephemeral/module.rb', line 116 def unmod(*args) (nil_safe_modules & args.flatten.collect(&:to_s)).each do |mod| remove_module(Inform::Module.find(name: mod)) end save i = parent(self) self.remove i << self self end |