class Fluent::Config::Element

Attributes

arg[RW]
elements[RW]
name[RW]
unused[RW]
v1_config[RW]

Public Class Methods

new(name, arg, attrs, elements, unused = nil) click to toggle source
Calls superclass method
# File lib/fluent/config/element.rb, line 22
def initialize(name, arg, attrs, elements, unused = nil)
  @name = name
  @arg = arg
  @elements = elements
  super()
  attrs.each { |k, v|
    self[k] = v
  }
  @unused = unused || attrs.keys
  @v1_config = false
end
unescape_parameter(v) click to toggle source
# File lib/fluent/config/element.rb, line 115
def self.unescape_parameter(v)
  result = ''
  v.each_char { |c| result << LiteralParser.unescape_char(c) }
  result
end

Public Instance Methods

+(o) click to toggle source
# File lib/fluent/config/element.rb, line 57
def +(o)
  e = Element.new(@name.dup, @arg.dup, o.merge(self), @elements + o.elements, (@unused + o.unused).uniq)
  e.v1_config = @v1_config
  e
end
==(o) click to toggle source

This method assumes o is an Element object. Should return false for nil or other object

# File lib/fluent/config/element.rb, line 49
def ==(o)
  self.name == o.name && self.arg == o.arg &&
    self.keys.size == o.keys.size &&
    self.keys.reduce(true){|r, k| r && self[k] == o[k] } &&
    self.elements.size == o.elements.size &&
    [self.elements, o.elements].transpose.reduce(true){|r, e| r && e[0] == e[1] }
end
[](key) click to toggle source
Calls superclass method
# File lib/fluent/config/element.rb, line 80
def [](key)
  @unused.delete(key)
  super
end
add_element(name, arg='') click to toggle source
# File lib/fluent/config/element.rb, line 36
def add_element(name, arg='')
  e = Element.new(name, arg, {}, [])
  e.v1_config = @v1_config
  @elements << e
  e
end
check_not_fetched(&block) click to toggle source
# File lib/fluent/config/element.rb, line 85
def check_not_fetched(&block)
  each_key { |key|
    if @unused.include?(key)
      block.call(key, self)
    end
  }
  @elements.each { |e|
    e.check_not_fetched(&block)
  }
end
each_element(*names, &block) click to toggle source
# File lib/fluent/config/element.rb, line 63
def each_element(*names, &block)
  if names.empty?
    @elements.each(&block)
  else
    @elements.each { |e|
      if names.include?(e.name)
        block.yield(e)
      end
    }
  end
end
has_key?(key) click to toggle source
Calls superclass method
# File lib/fluent/config/element.rb, line 75
def has_key?(key)
  @unused.delete(key)
  super
end
inspect() click to toggle source
Calls superclass method
# File lib/fluent/config/element.rb, line 43
def inspect
  attrs = super
  "name:#{@name}, arg:#{@arg}, " + attrs + ", " + @elements.inspect
end
to_s(nest = 0) click to toggle source
# File lib/fluent/config/element.rb, line 96
def to_s(nest = 0)
  indent = "  " * nest
  nindent = "  " * (nest + 1)
  out = ""
  if @arg.empty?
    out << "#{indent}<#{@name}>\n"
  else
    out << "#{indent}<#{@name} #{@arg}>\n"
  end
  each_pair { |k, v|
    out << "#{nindent}#{k} #{v}\n"
  }
  @elements.each { |e|
    out << e.to_s(nest + 1)
  }
  out << "#{indent}</#{@name}>\n"
  out
end