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