Class: Dummer::Generator::FieldMode
- Inherits:
-
AbstractMode
- Object
- AbstractMode
- Dummer::Generator::FieldMode
- Defined in:
- lib/dummer/generator/field_mode.rb
Class Method Summary collapse
- .field_procs(fields) ⇒ Object
-
.format_proc(labeled, delimiter, label_delimiter) ⇒ Object
private.
- .message_proc(fields, labeled, delimiter, label_delimiter) ⇒ Object
- .record_proc(fields) ⇒ Object
- .tag_proc(tag_opts) ⇒ Object
Class Method Details
.field_procs(fields) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/dummer/generator/field_mode.rb', line 50 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
private
42 43 44 45 46 47 48 |
# File 'lib/dummer/generator/field_mode.rb', line 42 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
4 5 6 7 8 9 10 11 12 |
# File 'lib/dummer/generator/field_mode.rb', line 4 def self.(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
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/dummer/generator/field_mode.rb', line 14 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) ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/dummer/generator/field_mode.rb', line 30 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 |