module Poleica::Convertible
Conversion Logic, given a type it can search for compatible converters
Constants
- CONVERTERS
Public Instance Methods
compatible_convert_methods()
click to toggle source
# File lib/poleica/converters/convertible.rb, line 33 def compatible_convert_methods @compatible_convert_methods ||= compatible_converters.map do |c| convert_methods_for_converter(c) end.flatten end
compatible_converters()
click to toggle source
# File lib/poleica/converters/convertible.rb, line 27 def compatible_converters @compatible_converters ||= compatible_converters_by_type(file_type.class) << Converters::General end
compatible_converters_by_type(type)
click to toggle source
# File lib/poleica/converters/convertible.rb, line 42 def compatible_converters_by_type(type) CONVERTERS.select do |converter| converter::COMPATIBLE_TYPES.include?(type) end end
convert_methods_for_converter(converter)
click to toggle source
# File lib/poleica/converters/convertible.rb, line 48 def convert_methods_for_converter(converter) methods_for_converter(converter).reject { |m| !(m =~ /^to_(.*)/) } end
convert_to_extension(extension, options = {})
click to toggle source
# File lib/poleica/converters/convertible.rb, line 15 def convert_to_extension(extension, options = {}) converter = converter_to_extension(extension).new(self) converter.send("to_#{extension}".to_sym, options) end
converter_to_extension(extension)
click to toggle source
# File lib/poleica/converters/convertible.rb, line 20 def converter_to_extension(extension) compatible_converter = compatible_converters.find do |converter| converter.method_defined?(:"to_#{extension}") end compatible_converter || Converters::Coercive end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/poleica/converters/convertible.rb, line 8 def method_missing(method, *args, &block) extension, options = Converters::Utils.extract_extension_and_options(method, args) return convert_to_extension(extension, options) if extension super end
methods_for_converter(converter)
click to toggle source
# File lib/poleica/converters/convertible.rb, line 52 def methods_for_converter(converter) converter.instance_methods(false).map(&:to_s) end