Class: DuperVisor::Formats::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/dupervisor/formats.rb

Direct Known Subclasses

Ini, JSON, YAML

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.format_aliasesObject

Returns the value of attribute format_aliases.



16
17
18
# File 'lib/dupervisor/formats.rb', line 16

def format_aliases
  @format_aliases
end

.formatsObject

Returns a hash: { format: format_class, format_alias: format_class, …} For example { yaml: YAML, yml: YAML, etc.}



20
21
22
23
24
25
26
27
28
# File 'lib/dupervisor/formats.rb', line 20

def formats
  aliases = {}
  @formats.values.each do |format_class|
    if format_class.aliases && !format_class.aliases.empty?
      format_class.aliases.each { |format_alias| aliases[format_alias] = format_class }
    end
  end
  @formats.merge!(aliases)
end

Class Method Details

.inherited(klass) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/dupervisor/formats.rb', line 31

def self.inherited(klass)
  klass.instance_eval do
    class << self
      %i(aliases from to errors).each do |a|
        define_method(a) { |*args|
          arg = args.first
          %i(aliases errors).each do |array_field|
            if a == array_field && arg && !arg.is_a?(Array)
              arg = [arg]
            end
          end
          arg ?
            instance_variable_set("@#{a}".to_sym, arg) :
            instance_variable_get("@#{a}".to_sym)
        }
      end
    end

    def format
      self.name.split(/::/)[-1].downcase.to_sym
    end
  end

  self.formats[klass.format] = klass
end