Class: Dap::Factory

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

Constant Summary collapse

@@inputs =
{}
@@outputs =
{}
@@filters =
{}

Class Method Summary collapse

Class Method Details

.create_filter(args) ⇒ Object

Raises:

  • (RuntimeError)


28
29
30
31
32
# File 'lib/dap.rb', line 28

def self.create_filter(args)
  name = args.shift
  raise RuntimeError, "Invalid filter plugin: #{name}" unless @@filters[name]
  @@filters[name].new(args)
end

.create_input(args) ⇒ Object

Raises:

  • (RuntimeError)


16
17
18
19
20
# File 'lib/dap.rb', line 16

def self.create_input(args)
  name = args.shift
  raise RuntimeError, "Invalid input plugin: #{name}" unless @@inputs[name]
  @@inputs[name].new(args)
end

.create_output(args) ⇒ Object

Raises:

  • (RuntimeError)


22
23
24
25
26
# File 'lib/dap.rb', line 22

def self.create_output(args)
  name = args.shift
  raise RuntimeError, "Invalid output plugin: #{name}" unless @@outputs[name]
  @@outputs[name].new(args)
end

.filtersObject



88
89
90
# File 'lib/dap.rb', line 88

def self.filters
  @@filters
end

.inputsObject



80
81
82
# File 'lib/dap.rb', line 80

def self.inputs
  @@inputs
end

.load_filtersObject

Load filters



72
73
74
75
76
77
78
# File 'lib/dap.rb', line 72

def self.load_filters
  Dap::Filter.constants.each do |c|
    o = Dap::Filter.const_get(c)
    next unless c.to_s =~ /^Filter/
    @@filters[ name_from_class(c) ] = o        
  end
end

.load_inputsObject

Load input formats



50
51
52
53
54
55
56
# File 'lib/dap.rb', line 50

def self.load_inputs
  Dap::Input.constants.each do |c|
    next unless c.to_s =~ /^Input/
    o = Dap::Input.const_get(c)
    @@inputs[ name_from_class(c) ] = o
  end
end

.load_modulesObject



92
93
94
95
96
# File 'lib/dap.rb', line 92

def self.load_modules
  self.load_inputs
  self.load_outputs
  self.load_filters
end

.load_outputsObject

Load output formats



61
62
63
64
65
66
67
# File 'lib/dap.rb', line 61

def self.load_outputs
  Dap::Output.constants.each do |c|
    o = Dap::Output.const_get(c)
    next unless c.to_s =~ /^Output/
    @@outputs[ name_from_class(c) ] = o        
  end      
end

.name_from_class(name) ⇒ Object

Create nice-looking filter names from classes Ex: FilterHTTPDecode => http_decode Ex: FilterLimitLen => limit_len



39
40
41
42
43
44
45
# File 'lib/dap.rb', line 39

def self.name_from_class(name)
  name.to_s.split('::').last.
  gsub(/([A-Z][a-z])/) { |c| "_#{c[0,1].downcase}#{c[1,1]}" }.
  gsub(/([a-z][A-Z])/) { |c| "#{c[0,1]}_#{c[1,1].downcase}" }.
  gsub(/_+/, '_').
  sub(/^_(input|filter|output)_/, '').downcase
end

.outputsObject



84
85
86
# File 'lib/dap.rb', line 84

def self.outputs
  @@outputs
end