lib/phony/countries/south_korea.rb
# frozen_string_literal: true
# South Korean (Republic of Korea) phone numbers.
#
# http://en.wikipedia.org/wiki/Telephone_numbers_in_South_Korea
# https://www.numberingplans.com/?page=plans&sub=phonenr&alpha_2_input=KR
#
# TODO 4-digit services, like "unreasonable infringement of livelihood report" number :)
#
special = %w(100 101 105 106 107 108 109 111 112 113 114 115 116 117 118 119 120 121 122 123 125 127 128 129 131 132 134 141 182 188)
# NOTE was:
# mobile = ('10'..'19').to_a
# but this was not frozen so easily.
mobile = %w(10 11 12 13 14 15 16 17 18 19)
Phony.define do
country '82',
trunk('0') |
match(/^(#{special.join("|")})$/) >> split(3,3) | # Special actually don't need to be split – but better err.
one_of(*mobile) >> split(4,4) |
one_of('2') >> matched_split(
/\A\d{7}\z/ => [3,4],
/\A\d{8}\z/ => [4,4]) | # Seoul, also includes "services".
fixed(2) >> matched_split(
/\A\d{7}\z/ => [3,4],
/\A\d{8}\z/ => [4,4]) # Rest of cities
end