Module: RmagickTidy::Tracker
- Defined in:
- lib/rmagick_tidy/tracker.rb
Class Method Summary collapse
- .each_image(value, &block) ⇒ Object
- .handle_out_of_scope(img) ⇒ Object
- .keep(value) ⇒ Object
- .register(img) ⇒ Object
- .track(result, receiver = nil) ⇒ Object
Class Method Details
.each_image(value, &block) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/rmagick_tidy/tracker.rb', line 23 def each_image(value, &block) case value when nil # nothing when ->(v) { defined?(Magick::Image) && v.is_a?(Magick::Image) } yield value when ->(v) { defined?(Magick::ImageList) && v.is_a?(Magick::ImageList) } value.each { |i| yield i if defined?(Magick::Image) && i.is_a?(Magick::Image) } when Array value.each { |v| each_image(v, &block) } when Hash value.each_value { |v| each_image(v, &block) } end end |
.handle_out_of_scope(img) ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/rmagick_tidy/tracker.rb', line 47 def handle_out_of_scope(img) case RmagickTidy.configuration.strict_mode when :raise raise OutOfScopeError, "Magick::Image #{img.inspect} was created outside of RmagickTidy.scope" when :warn warn "[rmagick_tidy] Magick::Image created outside of RmagickTidy.scope (#{img.class})" end end |
.keep(value) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/rmagick_tidy/tracker.rb', line 14 def keep(value) scope = Registry.current return unless scope each_image(value) do |img| scope.keep(img) end end |
.register(img) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/rmagick_tidy/tracker.rb', line 38 def register(img) scope = Registry.current if scope scope.register(img) else handle_out_of_scope(img) end end |
.track(result, receiver = nil) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/rmagick_tidy/tracker.rb', line 5 def track(result, receiver = nil) return result if receiver && result.equal?(receiver) each_image(result) do |img| register(img) end result end |