File: phone_number_cu.rb

package info (click to toggle)
ruby-ffaker 2.23.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,776 kB
  • sloc: ruby: 12,788; makefile: 8; sh: 1
file content (122 lines) | stat: -rw-r--r-- 3,335 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# frozen_string_literal: true

module FFaker
  # Based on information from http://en.wikipedia.org/wiki/Telephone_numbers_in_Cuba
  module PhoneNumberCU
    extend ModuleUtils
    extend self

    # Mobile prefixes
    MOBILE_OPERATORS_PREFIX = %w[05].freeze

    # Home or Work Operator prefixes
    HOME_WORK_OPERATORS_PREFIX = %w[
      021 022 023 024 031 032 033 041 042 043 045 046 047 048 07
    ].freeze

    OPERATORS_PREFIX = MOBILE_OPERATORS_PREFIX + HOME_WORK_OPERATORS_PREFIX

    # Return a prefix in MOBILE_OPERATORS_PREFIX
    # @see FFaker::PhoneNumberCU::MOBILE_OPERATORS_PREFIX
    #
    def mobile_phone_prefix
      fetch_sample(MOBILE_OPERATORS_PREFIX)
    end

    # Return a prefix in HOME_WORK_OPERATORS_PREFIX
    # @see FFaker::PhoneNumberCU::HOME_WORK_OPERATORS_PREFIX
    #
    def home_work_phone_prefix
      fetch_sample(HOME_WORK_OPERATORS_PREFIX)
    end

    def phone_prefix
      fetch_sample(OPERATORS_PREFIX)
    end

    # Generates a general phone number
    # (0x) xxx xxxx or (0xx) xx xxxx
    #
    def home_work_phone_number
      phone_prefix = home_work_phone_prefix
      case phone_prefix.size
      when 2 then FFaker.numerify("(#{phone_prefix}) ### ####")
      when 3 then FFaker.numerify("(#{phone_prefix}) ## ####")
      end
    end

    # Generates a mobile phone number
    # 05 xxx xxxx
    #
    def mobile_phone_number
      FFaker.numerify("#{mobile_phone_prefix} ### ####")
    end

    # Generates general number
    #
    def general_phone_number
      rand(0..1).zero? ? home_work_phone_number : mobile_phone_number
    end

    # Country Code is E.164 Country Code
    #
    def country_code
      e164_country_code
    end

    # International formats
    #
    def international_country_code
      rand(0..1).zero? ? "00#{country_code}" : "+#{country_code}"
    end

    def international_mobile_phone_number
      FFaker.numerify("#{international_country_code}#{mobile_phone_prefix[1]} ### ####")
    end

    def international_home_work_phone_number
      phone_prefix = home_work_phone_prefix
      case phone_prefix.size
      when 2 then FFaker.numerify("#{international_country_code}#{phone_prefix[1]} ### ####")
      when 3 then FFaker.numerify("#{international_country_code}#{phone_prefix[1, 2]} ## ####")
      end
    end

    def international_phone_number
      rand(0..1).zero? ? international_mobile_phone_number : international_home_work_phone_number
    end

    # E.164 formats
    # Based on information from http://en.wikipedia.org/wiki/E.164
    #
    def e164_country_code
      '53'
    end

    def e164_mobile_phone_number
      FFaker.numerify("#{country_code}#{mobile_phone_prefix[1]}#######")
    end

    def e164_home_work_phone_number
      phone_prefix = home_work_phone_prefix
      case phone_prefix.size
      when 2 then FFaker.numerify("#{e164_country_code}#{phone_prefix[1]}#######")
      when 3 then FFaker.numerify("#{e164_country_code}#{phone_prefix[1, 2]}######")
      end
    end

    def e164_phone_number
      rand(0..1).zero? ? e164_mobile_phone_number : e164_home_work_phone_number
    end

    # Generates phone number
    #
    def phone_number
      case rand(0..2)
      when 0 then general_phone_number
      when 1 then international_phone_number
      when 2 then e164_phone_number
      end
    end
  end
end