class Dummer::Generator::FieldMode

Public Class Methods

field_procs(fields) click to toggle source
# File lib/dummer/generator/field_mode.rb, line 53
def self.field_procs(fields)
  rand = ::Dummer::Random.new
  field_procs = {}
  fields.each do |key, opts|
    opts = opts.dup
    type = opts.delete(:type)
    field_procs[key] =
      case type
      when :string
        rand.string(opts)
      when :integer
        rand.integer(opts)
      when :float
        rand.float(opts)
      when :datetime
        rand.datetime(opts)
      else
        raise ConfigError.new("type: `#{type}` is not defined.")
      end
  end
  field_procs
end
format_proc(labeled, delimiter, label_delimiter) click to toggle source

private

# File lib/dummer/generator/field_mode.rb, line 45
def self.format_proc(labeled, delimiter, label_delimiter)
  if labeled
    Proc.new {|fields| "#{fields.map {|key, val| "#{key}#{label_delimiter}#{val}" }.join(delimiter)}\n" }
  else
    Proc.new {|fields| "#{fields.values.join(delimiter)}\n" }
  end
end
message_proc(fields, labeled, delimiter, label_delimiter) click to toggle source

file

# File lib/dummer/generator/field_mode.rb, line 5
def self.message_proc(fields, labeled, delimiter, label_delimiter)
  format_proc = format_proc(labeled, delimiter, label_delimiter)
  record_proc = record_proc(fields)

  Proc.new {
    hash = record_proc.call
    format_proc.call(hash)
  }
end
record_proc(fields) click to toggle source

fluent-logger

# File lib/dummer/generator/field_mode.rb, line 16
def self.record_proc(fields)
  field_procs = field_procs(fields)

  prev_data = {}
  Proc.new {
    data = {}
    field_procs.each do |key, proc|
      prev = prev_data[key] || -1
      value, raw = proc.call(prev)
      data[key] = value
      prev_data[key] = raw || value
    end
    data
  }
end
tag_proc(tag_opts) click to toggle source

fluent-logger

# File lib/dummer/generator/field_mode.rb, line 33
def self.tag_proc(tag_opts)
  proc = field_procs({"tag" => tag_opts})["tag"]
  prev = -1
  Proc.new {
    value, raw = proc.call(prev)
    prev = raw || value
    value
  }
end