Class: Seedfaker::SeedFaker
- Inherits:
-
Object
- Object
- Seedfaker::SeedFaker
- Defined in:
- lib/seedfaker.rb
Class Method Summary collapse
Instance Method Summary collapse
- #field(name, n: 1, **opts) ⇒ Object
-
#initialize(seed: nil, locale: nil, tz: nil, since: nil, until_time: nil) ⇒ SeedFaker
constructor
A new instance of SeedFaker.
- #record(fields, ctx: nil, corrupt: nil) ⇒ Object
- #records(fields, n: 1, ctx: nil, corrupt: nil) ⇒ Object
- #validate(fields, ctx: nil, corrupt: nil) ⇒ Object
Constructor Details
#initialize(seed: nil, locale: nil, tz: nil, since: nil, until_time: nil) ⇒ SeedFaker
Returns a new instance of SeedFaker.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/seedfaker.rb', line 10 def initialize(seed: nil, locale: nil, tz: nil, since: nil, until_time: nil) lib = Seedfaker.find_library raise "seedfaker: native FFI library not found" unless lib @ffi = Fiddle.dlopen(lib) opts = JSON.generate({ seed: seed, locale: locale, tz: tz, since: since&.to_i, until: until_time&.to_i }.compact) @sf_create = Fiddle::Function.new(@ffi["sf_create"], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP) @sf_destroy = Fiddle::Function.new(@ffi["sf_destroy"], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOID) @sf_field = Fiddle::Function.new(@ffi["sf_field"], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP) @sf_records = Fiddle::Function.new(@ffi["sf_records"], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP) @sf_record = Fiddle::Function.new(@ffi["sf_record"], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP) @sf_validate = Fiddle::Function.new(@ffi["sf_validate"], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP) @sf_free = Fiddle::Function.new(@ffi["sf_free"], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOID) @sf_last_error = Fiddle::Function.new(@ffi["sf_last_error"], [], Fiddle::TYPE_VOIDP) @handle = @sf_create.call(opts) raise "sf_create failed: #{last_error}" if @handle.null? ObjectSpace.define_finalizer(self, SeedFaker.invoke_release(@sf_destroy, @handle)) end |
Class Method Details
.fields ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/seedfaker.rb', line 72 def self.fields lib = Seedfaker.find_library raise "seedfaker: native FFI library not found" unless lib ffi = Fiddle.dlopen(lib) sf_fields = Fiddle::Function.new(ffi["sf_fields_json"], [], Fiddle::TYPE_VOIDP) sf_free = Fiddle::Function.new(ffi["sf_free"], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOID) ptr = sf_fields.call json = ptr.to_s sf_free.call(ptr) JSON.parse(json).map { |f| f["name"] } end |
.fingerprint ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/seedfaker.rb', line 85 def self.fingerprint lib = Seedfaker.find_library raise "seedfaker: native FFI library not found" unless lib ffi = Fiddle.dlopen(lib) sf_fp = Fiddle::Function.new(ffi["sf_fingerprint"], [], Fiddle::TYPE_VOIDP) sf_free = Fiddle::Function.new(ffi["sf_free"], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOID) ptr = sf_fp.call val = ptr.to_s sf_free.call(ptr) val end |
.invoke_release(sf_destroy, handle) ⇒ Object
33 34 35 |
# File 'lib/seedfaker.rb', line 33 def self.invoke_release(sf_destroy, handle) proc { sf_destroy.call(handle) } end |
Instance Method Details
#field(name, n: 1, **opts) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/seedfaker.rb', line 37 def field(name, n: 1, **opts) spec = build_spec(name, opts) if n == 1 field_one(spec) else Array.new(n) { field_one(spec) } end end |
#record(fields, ctx: nil, corrupt: nil) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/seedfaker.rb', line 46 def record(fields, ctx: nil, corrupt: nil) opts = JSON.generate({ fields: fields, ctx: ctx, corrupt: corrupt }.compact) ptr = @sf_record.call(@handle, opts) raise "sf_record failed: #{last_error}" if ptr.null? json = ptr.to_s @sf_free.call(ptr) JSON.parse(json) end |
#records(fields, n: 1, ctx: nil, corrupt: nil) ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/seedfaker.rb', line 55 def records(fields, n: 1, ctx: nil, corrupt: nil) opts = JSON.generate({ fields: fields, n: n, ctx: ctx, corrupt: corrupt }.compact) ptr = @sf_records.call(@handle, opts) raise "sf_records failed: #{last_error}" if ptr.null? json = ptr.to_s @sf_free.call(ptr) JSON.parse(json) end |
#validate(fields, ctx: nil, corrupt: nil) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/seedfaker.rb', line 64 def validate(fields, ctx: nil, corrupt: nil) opts = JSON.generate({ fields: fields, ctx: ctx, corrupt: corrupt }.compact) ptr = @sf_validate.call(@handle, opts) raise "validate failed: #{last_error}" if ptr.null? @sf_free.call(ptr) nil end |