Class: Dummer::Generator::Field

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

Class Method Summary collapse

Class Method Details

.field_procs(fields) ⇒ Object



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/dummer/generator.rb', line 113

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) ⇒ Object



105
106
107
108
109
110
111
# File 'lib/dummer/generator.rb', line 105

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) ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/dummer/generator.rb', line 77

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) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/dummer/generator.rb', line 87

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
      data[key] = proc.call(prev)
    end
    prev_data = data
  }
end

.tag_proc(tag_opts) ⇒ Object



101
102
103
# File 'lib/dummer/generator.rb', line 101

def self.tag_proc(tag_opts)
  field_procs({"tag" => tag_opts})["tag"]
end