Class: Fluent::RemoveEmptyOutput::RubyPlaceholderExpander

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/out_remove_empty.rb

Defined Under Namespace

Classes: UndefOpenStruct

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(log) ⇒ RubyPlaceholderExpander

Returns a new instance of RubyPlaceholderExpander.



145
146
147
# File 'lib/fluent/plugin/out_remove_empty.rb', line 145

def initialize(log)
  @log = log
end

Instance Attribute Details

#logObject (readonly)

Returns the value of attribute log.



143
144
145
# File 'lib/fluent/plugin/out_remove_empty.rb', line 143

def log
  @log
end

#placeholdersObject (readonly)

Returns the value of attribute placeholders.



143
144
145
# File 'lib/fluent/plugin/out_remove_empty.rb', line 143

def placeholders
  @placeholders
end

Instance Method Details

#expand(str) ⇒ Object

Replace placeholders in a string

Parameters:

  • str (String)

    the string to be replaced



164
165
166
167
# File 'lib/fluent/plugin/out_remove_empty.rb', line 164

def expand(str)
  str = str.gsub(/\$\{([^}]+)\}/, '#{\1}') # ${..} => #{..}
  eval "\"#{str}\"", @placeholders.instance_eval { binding }
end

#prepare_placeholders(time, record, opts) ⇒ Object

Get placeholders as a struct

Parameters:

  • time (Time)

    the time

  • record (Hash)

    the record

  • opts (Hash)

    others



154
155
156
157
158
159
# File 'lib/fluent/plugin/out_remove_empty.rb', line 154

def prepare_placeholders(time, record, opts)
  struct = UndefOpenStruct.new(record)
  struct.time = Time.at(time)
  opts.each {|key, value| struct.__send__("#{key}=", value) }
  @placeholders = struct
end