Class: Faker::Types

Inherits:
Base
  • Object
show all
Defined in:
lib/faker/default/types.rb

Constant Summary collapse

CHARACTERS =
('0'..'9').to_a + ('a'..'z').to_a
SIMPLE_TYPES =
%i[string fixnum].freeze
COMPLEX_TYPES =
%i[hash array].freeze

Constants inherited from Base

Base::Letters, Base::Numbers, Base::ULetters

Class Method Summary collapse

Methods inherited from Base

bothify, disable_enforce_available_locales, fetch, fetch_all, flexible, letterify, method_missing, numerify, parse, rand, rand_in_range, regexify, resolve, respond_to_missing?, sample, shuffle, translate, unique, with_locale

Class Method Details

.characterObject


19
20
21
# File 'lib/faker/default/types.rb', line 19

def character
  sample(CHARACTERS)
end

.complex_rb_hash(number: 1) ⇒ Object


35
36
37
# File 'lib/faker/default/types.rb', line 35

def complex_rb_hash(number: 1)
  rb_hash(number: number, type: random_complex_type)
end

.random_complex_typeObject


57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/faker/default/types.rb', line 57

def random_complex_type
  types = SIMPLE_TYPES + COMPLEX_TYPES
  type_to_use = types[rand(0..types.length - 1)]
  case type_to_use
  when :string
    rb_string
  when :fixnum
    rb_integer
  when :hash
    rb_hash
  when :array
    rb_array
  end
end

.random_typeObject


47
48
49
50
51
52
53
54
55
# File 'lib/faker/default/types.rb', line 47

def random_type
  type_to_use = SIMPLE_TYPES[rand(0..SIMPLE_TYPES.length - 1)]
  case type_to_use
  when :string
    rb_string
  when :fixnum
    rb_integer
  end
end

.rb_array(len: 1) ⇒ Object


39
40
41
42
43
44
45
# File 'lib/faker/default/types.rb', line 39

def rb_array(len: 1)
  [].tap do |ar|
    len.times do
      ar.push random_type
    end
  end
end

.rb_hash(number: 1, type: random_type) ⇒ Object


27
28
29
30
31
32
33
# File 'lib/faker/default/types.rb', line 27

def rb_hash(number: 1, type: random_type)
  {}.tap do |hsh|
    Lorem.words(number: number * 2).uniq.first(number).each do |s|
      hsh.merge!(s.to_sym => type)
    end
  end
end

.rb_integer(from: 0, to: 100) ⇒ Object


23
24
25
# File 'lib/faker/default/types.rb', line 23

def rb_integer(from: 0, to: 100)
  rand(from..to).to_i
end

.rb_string(words: 1) ⇒ Object


10
11
12
13
14
15
16
17
# File 'lib/faker/default/types.rb', line 10

def rb_string(words: 1)
  resolved_num = resolve(words)
  word_list =
    translate('faker.lorem.words')

  word_list *= ((resolved_num / word_list.length) + 1)
  shuffle(word_list)[0, resolved_num].join(' ')
end