R/et_EE.R

# person ---------------------------
person_et_EE = R6Class(
  "person_et_EE",
  inherit = person_init,
  cloneable = FALSE,
  private = list(
    # https://en.wikipedia.org/wiki/Demographics_of_Estonia#Ethnic_groups
    # Main population groups in Estonia are Estonians and ethnic Russians:
    # About 70% of the population are Estonians and about 25% are Russians

    formats = list(
      c('{first_name_est} {last_name_est}', 0.7),
      c('{first_name_rus} {last_name_rus}', 0.3)),

    formats_male = list(
      c('{first_name_male_est} {last_name_est}', 0.7),
      c('{first_name_male_rus} {last_name_rus}',  0.3)),

    formats_female = list(
      c('{first_name_female_est} {last_name_est}', 0.7),
      c('{first_name_female_rus} {last_name_rus}', 0.3)
    ),

    prefixes_neutral = c('doktor', 'dr', 'prof'),
    prefixes_male = c('h\u00e4rra', 'hr', 'doktor', 'dr', 'prof'),
    prefixes_female = c('proua', 'pr', 'doktor', 'dr', 'prof'),
    prefixes = c(
      'doktor', 'dr', 'prof',
      'h\u00e4rra', 'hr', 'proua', 'pr'
    ),

    suffixes = c('PhD', 'MSc', 'BSc'),

    first_names_male_est = c(
      'Aivar', 'Aleksander', 'Alexander', 'Andres',
      'Andrus', 'Ants', 'Indrek', 'Jaan', 'Jaanus',
      'J\u00fcri', 'Kristjan', 'Marek', 'Margus', 'Marko',
      'Martin', 'Mati', 'Meelis', 'Mihkel', 'Peeter',
      'Priit', 'Raivo', 'Rein', 'Sander', 'Siim', 'Tarmo',
      'Tiit', 'Toomas', 'T\u00f5nu', 'Urmas', 'Vello'
    ),

    first_names_female_est = c(
      'Aino', 'Anna', 'Anne', 'Anneli', 'Anu', 'Diana',
      'Ene', 'Eve', 'Kadri', 'Katrin', 'Kristi',
      'Kristiina', 'Kristina', 'Laura', 'Linda', 'Maie',
      'Malle', 'Mare', 'Maria', 'Marika', 'Merike',
      'Niina', 'Piret', 'Reet', 'Riina', 'Sirje',
      'Tiina', 'Tiiu', 'Triin', '\u00dclle'
    ),

    first_names_est = c(
      'Aivar', 'Aleksander', 'Alexander', 'Andres',
      'Andrus', 'Ants', 'Indrek', 'Jaan', 'Jaanus',
      'J\u00fcri', 'Kristjan', 'Marek', 'Margus', 'Marko',
      'Martin', 'Mati', 'Meelis', 'Mihkel', 'Peeter',
      'Priit', 'Raivo', 'Rein', 'Sander', 'Siim', 'Tarmo',
      'Tiit', 'Toomas', 'T\u00f5nu', 'Urmas', 'Vello',
      'Aino', 'Anna', 'Anne', 'Anneli', 'Anu', 'Diana',
      'Ene', 'Eve', 'Kadri', 'Katrin', 'Kristi',
      'Kristiina', 'Kristina', 'Laura', 'Linda', 'Maie',
      'Malle', 'Mare', 'Maria', 'Marika', 'Merike',
      'Niina', 'Piret', 'Reet', 'Riina', 'Sirje',
      'Tiina', 'Tiiu', 'Triin', '\u00dclle'
    ),

    first_names_male_rus = c(
      'Aleksander', 'Aleksandr', 'Aleksei', 'Alexander',
      'Andrei', 'Artur', 'Dmitri', 'Igor', 'Ivan',
      'Jevgeni', 'Juri', 'Maksim', 'Mihhail', 'Nikolai',
      'Oleg', 'Pavel', 'Roman', 'Sergei', 'Sergey',
      'Valeri', 'Viktor', 'Vladimir'
    ),

    first_names_female_rus = c(
      'Aleksandra', 'Anna', 'Diana', 'Elena', 'Galina',
      'Irina', 'Jekaterina', 'Jelena', 'Julia',
      'Kristina', 'Ljubov', 'Ljudmila', 'Maria',
      'Marina', 'Nade\u017eda', 'Natalia', 'Natalja', 'Nina',
      'Olga', 'Svetlana', 'Tamara', 'Tatiana',
      'Tatjana', 'Valentina', 'Viktoria'
    ),

    first_names_rus = c(
      'Aleksander', 'Aleksandr', 'Aleksei', 'Alexander',
      'Andrei', 'Artur', 'Dmitri', 'Igor', 'Ivan',
      'Jevgeni', 'Juri', 'Maksim', 'Mihhail', 'Nikolai',
      'Oleg', 'Pavel', 'Roman', 'Sergei', 'Sergey',
      'Valeri', 'Viktor', 'Vladimir',
      'Aleksandra', 'Anna', 'Diana', 'Elena', 'Galina',
      'Irina', 'Jekaterina', 'Jelena', 'Julia',
      'Kristina', 'Ljubov', 'Ljudmila', 'Maria',
      'Marina', 'Nade\u017eda', 'Natalia', 'Natalja', 'Nina',
      'Olga', 'Svetlana', 'Tamara', 'Tatiana',
      'Tatjana', 'Valentina', 'Viktoria'
    ),

    first_names_male = c(
      "Aivar", "Aleksander", "Alexander", "Andres", "Andrus",
      "Ants", "Indrek", "Jaan", "Jaanus", "J\u00fcri",
      "Kristjan", "Marek", "Margus", "Marko", "Martin",
      "Mati", "Meelis", "Mihkel", "Peeter", "Priit",
      "Raivo", "Rein", "Sander", "Siim", "Tarmo",
      "Tiit", "Toomas", "T\u00f5nu", "Urmas", "Vello",
      "Aleksandr", "Aleksei", "Andrei", "Artur", "Dmitri",
      "Igor", "Ivan", "Jevgeni", "Juri", "Maksim",
      "Mihhail", "Nikolai", "Oleg", "Pavel", "Roman",
      "Sergei", "Sergey", "Valeri", "Viktor", "Vladimir"
    ),

    first_names_female = c(
      "Aino", "Anna", "Anne", "Anneli", "Anu",
      "Diana", "Ene", "Eve", "Kadri", "Katrin",
      "Kristi", "Kristiina", "Kristina", "Laura", "Linda",
      "Maie", "Malle", "Mare", "Maria", "Marika",
      "Merike", "Niina", "Piret", "Reet", "Riina",
      "Sirje", "Tiina", "Tiiu", "Triin", "\u00fclle",
      "Aleksandra", "Elena", "Galina", "Irina", "Jekaterina",
      "Jelena", "Julia", "Ljubov", "Ljudmila", "Marina",
      "Nade\u017eda", "Natalia", "Natalja", "Nina", "Olga",
      "Svetlana", "Tamara", "Tatiana", "Tatjana", "Valentina",
      "Viktoria"
    ),

    first_names = c(
      "Aivar", "Aleksander", "Alexander", "Andres", "Andrus",
      "Ants", "Indrek", "Jaan", "Jaanus", "J\u00fcri",
      "Kristjan", "Marek", "Margus", "Marko", "Martin",
      "Mati", "Meelis", "Mihkel", "Peeter", "Priit",
      "Raivo", "Rein", "Sander", "Siim", "Tarmo",
      "Tiit", "Toomas", "T\u00f5nu", "Urmas", "Vello",
      "Aleksandr", "Aleksei", "Andrei", "Artur", "Dmitri",
      "Igor", "Ivan", "Jevgeni", "Juri", "Maksim",
      "Mihhail", "Nikolai", "Oleg", "Pavel", "Roman",
      "Sergei", "Sergey", "Valeri", "Viktor", "Vladimir",
      "Aino", "Anna", "Anne", "Anneli", "Anu",
      "Diana", "Ene", "Eve", "Kadri", "Katrin",
      "Kristi", "Kristiina", "Kristina", "Laura", "Linda",
      "Maie", "Malle", "Mare", "Maria", "Marika",
      "Merike", "Niina", "Piret", "Reet", "Riina",
      "Sirje", "Tiina", "Tiiu", "Triin", "\u00fclle",
      "Aleksandra", "Elena", "Galina", "Irina", "Jekaterina",
      "Jelena", "Julia", "Ljubov", "Ljudmila", "Marina",
      "Nade\u017eda", "Natalia", "Natalja", "Nina", "Olga",
      "Svetlana", "Tamara", "Tatiana", "Tatjana", "Valentina",
      "Viktoria"
    ),

    # http://ekspress.delfi.ee/kuum/\
    # top-500-eesti-koige-levinumad-perekonnanimed?id=27677149
    last_names_est = c(
      "Aas",
      "Aasa",
      "Aasm\u00e4e",
      "Aavik",
      "Abel",
      "Adamson",
      "Ader",
      "Alas",
      "Allas",
      "Allik",
      "Anderson",
      "Annus",
      "Anton",
      "Arro",
      "Aru",
      "Arula",
      "Aun",
      "Aus",
      "Eller",
      "Erik",
      "Erm",
      "Ernits",
      "Gross",
      "Hallik",
      "Hansen",
      "Hanson",
      "Hein",
      "Heinsalu",
      "Heinsoo",
      "Holm",
      "Hunt",
      "H\u00e4rm",
      "Ilves",
      "Ivask",
      "Jaakson",
      "Jaanson",
      "Jaanus",
      "Jakobson",
      "Jalakas",
      "Johanson",
      "Juhanson",
      "Juhkam",
      "J\u00e4nes",
      "J\u00e4rv",
      "J\u00e4rve",
      "J\u00f5e",
      "J\u00f5esaar",
      "J\u00f5gi",
      "J\u00fcrgens",
      "J\u00fcrgenson",
      "J\u00fcrisson",
      "Kaasik",
      "Kadak",
      "Kala",
      "Kalamees",
      "Kalda",
      "Kaljula",
      "Kaljurand",
      "Kaljuste",
      "Kaljuvee",
      "Kallas",
      "Kallaste",
      "Kalm",
      "Kalmus",
      "Kangro",
      "Kangur",
      "Kapp",
      "Karro",
      "Karu",
      "Kasak",
      "Kase",
      "Kasemaa",
      "Kasemets",
      "Kask",
      "Kass",
      "Kattai",
      "Kaur",
      "Kelder",
      "Kesk\u00fcla",
      "Kiik",
      "Kiil",
      "Kiis",
      "Kiisk",
      "Kikas",
      "Kikkas",
      "Kilk",
      "Kink",
      "Kirs",
      "Kirsipuu",
      "Kirss",
      "Kivi",
      "Kivilo",
      "Kivim\u00e4e",
      "Kivistik",
      "Klaas",
      "Klein",
      "Koger",
      "Kohv",
      "Koit",
      "Koitla",
      "Kokk",
      "Kolk",
      "Kont",
      "Kool",
      "Koort",
      "Koppel",
      "Korol",
      "Kotkas",
      "Kotov",
      "Koval",
      "Kozlov",
      "Kriisa",
      "Kroon",
      "Kr\u00f5lov",
      "Kudrjavtsev",
      "Kulikov",
      "Kuningas",
      "Kurg",
      "Kurm",
      "Kurvits",
      "Kutsar",
      "Kuus",
      "Kuuse",
      "Kuusik",
      "Kuusk",
      "K\u00e4rner",
      "K\u00e4sper",
      "K\u00e4\u00e4r",
      "K\u00e4\u00e4rik",
      "K\u00f5iv",
      "K\u00fctt",
      "Laan",
      "Laane",
      "Laanemets",
      "Laas",
      "Laht",
      "Laine",
      "Laks",
      "Lang",
      "Lass",
      "Laur",
      "Lauri",
      "Lehiste",
      "Leht",
      "Lehtla",
      "Lehtmets",
      "Leis",
      "Lember",
      "Lepik",
      "Lepp",
      "Leppik",
      "Liblik",
      "Liiv",
      "Liiva",
      "Liivak",
      "Liivam\u00e4gi",
      "Lill",
      "Lillemets",
      "Lind",
      "Link",
      "Lipp",
      "Lokk",
      "Lomp",
      "Loorits",
      "Luht",
      "Luik",
      "Lukin",
      "Lukk",
      "Lumi",
      "Lumiste",
      "Luts",
      "L\u00e4tt",
      "L\u00e4\u00e4ne",
      "L\u00e4\u00e4ts",
      "L\u00f5hmus",
      "Maasik",
      "Madisson",
      "Maidla",
      "Mandel",
      "Maripuu",
      "Mark",
      "Markus",
      "Martin",
      "Martinson",
      "Meier",
      "Meister",
      "Melnik",
      "Merila",
      "Mets",
      "Michelson",
      "Mikk",
      "Miller",
      "Mitt",
      "Moor",
      "Muru",
      "Must",
      "M\u00e4e",
      "M\u00e4eots",
      "M\u00e4esalu",
      "M\u00e4gi",
      "M\u00e4nd",
      "M\u00e4ndla",
      "M\u00e4nnik",
      "M\u00e4nniste",
      "M\u00f5ttus",
      "M\u00f6lder",
      "M\u00fcrk",
      "M\u00fc\u00fcr",
      "M\u00fc\u00fcrsepp",
      "Niit",
      "Nurk",
      "Nurm",
      "Nuut",
      "N\u00f5mm",
      "N\u00f5mme",
      "N\u00f5mmik",
      "Oja",
      "Ojala",
      "Ojaste",
      "Oks",
      "Olesk",
      "Oras",
      "Orav",
      "Org",
      "Ots",
      "Ott",
      "Paal",
      "Paap",
      "Paas",
      "Paju",
      "Pajula",
      "Palm",
      "Palu",
      "Parts",
      "Pent",
      "Peterson",
      "Pettai",
      "Pihelgas",
      "Pihlak",
      "Piho",
      "Piir",
      "Piirsalu",
      "Pikk",
      "Ploom",
      "Poom",
      "Post",
      "Pruul",
      "Pukk",
      "Pulk",
      "Puusepp",
      "P\u00e4rn",
      "P\u00e4rna",
      "P\u00e4rnpuu",
      "P\u00e4rtel",
      "P\u00f5der",
      "P\u00f5dra",
      "P\u00f5ld",
      "P\u00f5ldma",
      "P\u00f5ldmaa",
      "P\u00f5llu",
      "P\u00fcvi",
      "Raadik",
      "Raag",
      "Raamat",
      "Raid",
      "Raidma",
      "Raja",
      "Rand",
      "Randmaa",
      "Randoja",
      "Raud",
      "Raudsepp",
      "Rebane",
      "Reimann",
      "Reinsalu",
      "Remmel",
      "Rohtla",
      "Roos",
      "Roosileht",
      "Roots",
      "Rosenberg",
      "Rosin",
      "Ruus",
      "R\u00e4tsep",
      "R\u00fc\u00fctel",
      "Saar",
      "Saare",
      "Saks",
      "Salu",
      "Salumets",
      "Salum\u00e4e",
      "Sander",
      "Sarap",
      "Sarapuu",
      "Sarv",
      "Saul",
      "Schmidt",
      "Sepp",
      "Sibul",
      "Siim",
      "Sikk",
      "Sild",
      "Sillaots",
      "Sillaste",
      "Silm",
      "Simson",
      "Sirel",
      "Sisask",
      "Sokk",
      "Soo",
      "Soon",
      "Soosaar",
      "Soosalu",
      "Soots",
      "Suits",
      "Sulg",
      "Susi",
      "Sutt",
      "Suur",
      "Suvi",
      "S\u00e4de",
      "S\u00f6\u00f6t",
      "Taal",
      "Tali",
      "Talts",
      "Tamberg",
      "Tamm",
      "Tamme",
      "Tammik",
      "Teder",
      "Teearu",
      "Teesalu",
      "Teras",
      "Tiik",
      "Tiits",
      "Tilk",
      "Tomingas",
      "Tomson",
      "Toom",
      "Toome",
      "Tooming",
      "Toomsalu",
      "Toots",
      "Trei",
      "Treial",
      "Treier",
      "Truu",
      "Tuisk",
      "Tuul",
      "Tuulik",
      "T\u00e4ht",
      "T\u00f5nisson",
      "Uibo",
      "Unt",
      "Urb",
      "Uus",
      "Uustalu",
      "Vaher",
      "Vaht",
      "Vahter",
      "Vahtra",
      "Vain",
      "Vaino",
      "Valge",
      "Valk",
      "Vares",
      "Varik",
      "Veski",
      "Viik",
      "Viira",
      "Viks",
      "Vill",
      "Villemson",
      "Visnapuu",
      "V\u00e4hi",
      "V\u00e4li",
      "V\u00f5su",
      "\u00d5ispuu",
      "\u00d5un",
      "\u00d5unapuu"
    ),

    last_names_rus = c(
      "Abramov",
      "Afanasjev",
      "Aleksandrov",
      "Alekseev",
      "Andreev",
      "Anissimov",
      "Antonov",
      "Baranov",
      "Beljajev",
      "Belov",
      "Bogdanov",
      "Bondarenko",
      "Borissov",
      "B\u00f5strov",
      "Danilov",
      "Dav\u00f5dov",
      "Denissov",
      "Dmitriev",
      "Drozdov",
      "Egorov",
      "Fedorov",
      "Fedotov",
      "Filatov",
      "Filippov",
      "Fjodorov",
      "Fomin",
      "Frolov",
      "Gavrilov",
      "Gerassimov",
      "Golubev",
      "Gont\u0161arov",
      "Gorbunov",
      "Grigoriev",
      "Gromov",
      "Gusev",
      "Ignatjev",
      "Iljin",
      "Ivanov",
      "Jakovlev",
      "Jefimov",
      "Jegorov",
      "Jermakov",
      "Jer\u0161ov",
      "Kalinin",
      "Karpov",
      "Karpov",
      "Kazakov",
      "Kirillov",
      "Kisseljov",
      "Klimov",
      "Kolesnik",
      "Komarov",
      "Kondratjev",
      "Konovalov",
      "Konstantinov",
      "Korol",
      "Kostin",
      "Kotov",
      "Koval",
      "Kozlov",
      "Kruglov",
      "Kr\u00f5lov",
      "Kudrjavtsev",
      "Kulikov",
      "Kuzmin",
      "Kuznetsov",
      "Lebedev",
      "Loginov",
      "Lukin",
      "Makarov",
      "Maksimov",
      "Mal\u00f5\u0161ev",
      "Maslov",
      "Matvejev",
      "Medvedev",
      "Melnik",
      "Mihhailov",
      "Miller",
      "Mironov",
      "Moroz",
      "Naumov",
      "Nazarov",
      "Nikiforov",
      "Nikitin",
      "Nikolaev",
      "Novikov",
      "Orlov",
      "Ossipov",
      "Panov",
      "Pavlov",
      "Petrov",
      "Poljakov",
      "Popov",
      "Romanov",
      "Rosenberg",
      "Rumjantsev",
      "Safronov",
      "Saveljev",
      "Semenov",
      "Sergejev",
      "Sidorov",
      "Smirnov",
      "Sobolev",
      "Sokolov",
      "Solovjov",
      "Sorokin",
      "Stepanov",
      "Suvorov",
      "Tarassov",
      "Tihhomirov",
      "Timofejev",
      "Titov",
      "Trofimov",
      "Tsvetkov",
      "Vasiliev",
      "Vinogradov",
      "Vlassov",
      "Volkov",
      "Vorobjov",
      "Voronin",
      "Zahharov",
      "Zaitsev",
      "Zujev",
      "\u0160evt\u0161enko",
      "\u0160t\u0161erbakov",
      "\u0160t\u0161erbakov",
      "\u017dukov",
      "\u017duravljov"
    ),

    last_names = c(
      "Aas",
      "Aasa",
      "Aasm\u00e4e",
      "Aavik",
      "Abel",
      "Adamson",
      "Ader",
      "Alas",
      "Allas",
      "Allik",
      "Anderson",
      "Annus",
      "Anton",
      "Arro",
      "Aru",
      "Arula",
      "Aun",
      "Aus",
      "Eller",
      "Erik",
      "Erm",
      "Ernits",
      "Gross",
      "Hallik",
      "Hansen",
      "Hanson",
      "Hein",
      "Heinsalu",
      "Heinsoo",
      "Holm",
      "Hunt",
      "H\u00e4rm",
      "Ilves",
      "Ivask",
      "Jaakson",
      "Jaanson",
      "Jaanus",
      "Jakobson",
      "Jalakas",
      "Johanson",
      "Juhanson",
      "Juhkam",
      "J\u00e4nes",
      "J\u00e4rv",
      "J\u00e4rve",
      "J\u00f5e",
      "J\u00f5esaar",
      "J\u00f5gi",
      "J\u00fcrgens",
      "J\u00fcrgenson",
      "J\u00fcrisson",
      "Kaasik",
      "Kadak",
      "Kala",
      "Kalamees",
      "Kalda",
      "Kaljula",
      "Kaljurand",
      "Kaljuste",
      "Kaljuvee",
      "Kallas",
      "Kallaste",
      "Kalm",
      "Kalmus",
      "Kangro",
      "Kangur",
      "Kapp",
      "Karro",
      "Karu",
      "Kasak",
      "Kase",
      "Kasemaa",
      "Kasemets",
      "Kask",
      "Kass",
      "Kattai",
      "Kaur",
      "Kelder",
      "Kesk\u00fcla",
      "Kiik",
      "Kiil",
      "Kiis",
      "Kiisk",
      "Kikas",
      "Kikkas",
      "Kilk",
      "Kink",
      "Kirs",
      "Kirsipuu",
      "Kirss",
      "Kivi",
      "Kivilo",
      "Kivim\u00e4e",
      "Kivistik",
      "Klaas",
      "Klein",
      "Koger",
      "Kohv",
      "Koit",
      "Koitla",
      "Kokk",
      "Kolk",
      "Kont",
      "Kool",
      "Koort",
      "Koppel",
      "Korol",
      "Kotkas",
      "Kotov",
      "Koval",
      "Kozlov",
      "Kriisa",
      "Kroon",
      "Kr\u00f5lov",
      "Kudrjavtsev",
      "Kulikov",
      "Kuningas",
      "Kurg",
      "Kurm",
      "Kurvits",
      "Kutsar",
      "Kuus",
      "Kuuse",
      "Kuusik",
      "Kuusk",
      "K\u00e4rner",
      "K\u00e4sper",
      "K\u00e4\u00e4r",
      "K\u00e4\u00e4rik",
      "K\u00f5iv",
      "K\u00fctt",
      "Laan",
      "Laane",
      "Laanemets",
      "Laas",
      "Laht",
      "Laine",
      "Laks",
      "Lang",
      "Lass",
      "Laur",
      "Lauri",
      "Lehiste",
      "Leht",
      "Lehtla",
      "Lehtmets",
      "Leis",
      "Lember",
      "Lepik",
      "Lepp",
      "Leppik",
      "Liblik",
      "Liiv",
      "Liiva",
      "Liivak",
      "Liivam\u00e4gi",
      "Lill",
      "Lillemets",
      "Lind",
      "Link",
      "Lipp",
      "Lokk",
      "Lomp",
      "Loorits",
      "Luht",
      "Luik",
      "Lukin",
      "Lukk",
      "Lumi",
      "Lumiste",
      "Luts",
      "L\u00e4tt",
      "L\u00e4\u00e4ne",
      "L\u00e4\u00e4ts",
      "L\u00f5hmus",
      "Maasik",
      "Madisson",
      "Maidla",
      "Mandel",
      "Maripuu",
      "Mark",
      "Markus",
      "Martin",
      "Martinson",
      "Meier",
      "Meister",
      "Melnik",
      "Merila",
      "Mets",
      "Michelson",
      "Mikk",
      "Miller",
      "Mitt",
      "Moor",
      "Muru",
      "Must",
      "M\u00e4e",
      "M\u00e4eots",
      "M\u00e4esalu",
      "M\u00e4gi",
      "M\u00e4nd",
      "M\u00e4ndla",
      "M\u00e4nnik",
      "M\u00e4nniste",
      "M\u00f5ttus",
      "M\u00f6lder",
      "M\u00fcrk",
      "M\u00fc\u00fcr",
      "M\u00fc\u00fcrsepp",
      "Niit",
      "Nurk",
      "Nurm",
      "Nuut",
      "N\u00f5mm",
      "N\u00f5mme",
      "N\u00f5mmik",
      "Oja",
      "Ojala",
      "Ojaste",
      "Oks",
      "Olesk",
      "Oras",
      "Orav",
      "Org",
      "Ots",
      "Ott",
      "Paal",
      "Paap",
      "Paas",
      "Paju",
      "Pajula",
      "Palm",
      "Palu",
      "Parts",
      "Pent",
      "Peterson",
      "Pettai",
      "Pihelgas",
      "Pihlak",
      "Piho",
      "Piir",
      "Piirsalu",
      "Pikk",
      "Ploom",
      "Poom",
      "Post",
      "Pruul",
      "Pukk",
      "Pulk",
      "Puusepp",
      "P\u00e4rn",
      "P\u00e4rna",
      "P\u00e4rnpuu",
      "P\u00e4rtel",
      "P\u00f5der",
      "P\u00f5dra",
      "P\u00f5ld",
      "P\u00f5ldma",
      "P\u00f5ldmaa",
      "P\u00f5llu",
      "P\u00fcvi",
      "Raadik",
      "Raag",
      "Raamat",
      "Raid",
      "Raidma",
      "Raja",
      "Rand",
      "Randmaa",
      "Randoja",
      "Raud",
      "Raudsepp",
      "Rebane",
      "Reimann",
      "Reinsalu",
      "Remmel",
      "Rohtla",
      "Roos",
      "Roosileht",
      "Roots",
      "Rosenberg",
      "Rosin",
      "Ruus",
      "R\u00e4tsep",
      "R\u00fc\u00fctel",
      "Saar",
      "Saare",
      "Saks",
      "Salu",
      "Salumets",
      "Salum\u00e4e",
      "Sander",
      "Sarap",
      "Sarapuu",
      "Sarv",
      "Saul",
      "Schmidt",
      "Sepp",
      "Sibul",
      "Siim",
      "Sikk",
      "Sild",
      "Sillaots",
      "Sillaste",
      "Silm",
      "Simson",
      "Sirel",
      "Sisask",
      "Sokk",
      "Soo",
      "Soon",
      "Soosaar",
      "Soosalu",
      "Soots",
      "Suits",
      "Sulg",
      "Susi",
      "Sutt",
      "Suur",
      "Suvi",
      "S\u00e4de",
      "S\u00f6\u00f6t",
      "Taal",
      "Tali",
      "Talts",
      "Tamberg",
      "Tamm",
      "Tamme",
      "Tammik",
      "Teder",
      "Teearu",
      "Teesalu",
      "Teras",
      "Tiik",
      "Tiits",
      "Tilk",
      "Tomingas",
      "Tomson",
      "Toom",
      "Toome",
      "Tooming",
      "Toomsalu",
      "Toots",
      "Trei",
      "Treial",
      "Treier",
      "Truu",
      "Tuisk",
      "Tuul",
      "Tuulik",
      "T\u00e4ht",
      "T\u00f5nisson",
      "Uibo",
      "Unt",
      "Urb",
      "Uus",
      "Uustalu",
      "Vaher",
      "Vaht",
      "Vahter",
      "Vahtra",
      "Vain",
      "Vaino",
      "Valge",
      "Valk",
      "Vares",
      "Varik",
      "Veski",
      "Viik",
      "Viira",
      "Viks",
      "Vill",
      "Villemson",
      "Visnapuu",
      "V\u00e4hi",
      "V\u00e4li",
      "V\u00f5su",
      "\u00d5ispuu",
      "\u00d5un",
      "\u00d5unapuu",
      "Abramov",
      "Afanasjev",
      "Aleksandrov",
      "Alekseev",
      "Andreev",
      "Anissimov",
      "Antonov",
      "Baranov",
      "Beljajev",
      "Belov",
      "Bogdanov",
      "Bondarenko",
      "Borissov",
      "B\u00f5strov",
      "Danilov",
      "Dav\u00f5dov",
      "Denissov",
      "Dmitriev",
      "Drozdov",
      "Egorov",
      "Fedorov",
      "Fedotov",
      "Filatov",
      "Filippov",
      "Fjodorov",
      "Fomin",
      "Frolov",
      "Gavrilov",
      "Gerassimov",
      "Golubev",
      "Gont\u0161arov",
      "Gorbunov",
      "Grigoriev",
      "Gromov",
      "Gusev",
      "Ignatjev",
      "Iljin",
      "Ivanov",
      "Jakovlev",
      "Jefimov",
      "Jegorov",
      "Jermakov",
      "Jer\u0161ov",
      "Kalinin",
      "Karpov",
      "Kazakov",
      "Kirillov",
      "Kisseljov",
      "Klimov",
      "Kolesnik",
      "Komarov",
      "Kondratjev",
      "Konovalov",
      "Konstantinov",
      "Kostin",
      "Kruglov",
      "Kuzmin",
      "Kuznetsov",
      "Lebedev",
      "Loginov",
      "Makarov",
      "Maksimov",
      "Mal\u00f5\u0161ev",
      "Maslov",
      "Matvejev",
      "Medvedev",
      "Mihhailov",
      "Mironov",
      "Moroz",
      "Naumov",
      "Nazarov",
      "Nikiforov",
      "Nikitin",
      "Nikolaev",
      "Novikov",
      "Orlov",
      "Ossipov",
      "Panov",
      "Pavlov",
      "Petrov",
      "Poljakov",
      "Popov",
      "Romanov",
      "Rumjantsev",
      "Safronov",
      "Saveljev",
      "Semenov",
      "Sergejev",
      "Sidorov",
      "Smirnov",
      "Sobolev",
      "Sokolov",
      "Solovjov",
      "Sorokin",
      "Stepanov",
      "Suvorov",
      "Tarassov",
      "Tihhomirov",
      "Timofejev",
      "Titov",
      "Trofimov",
      "Tsvetkov",
      "Vasiliev",
      "Vinogradov",
      "Vlassov",
      "Volkov",
      "Vorobjov",
      "Voronin",
      "Zahharov",
      "Zaitsev",
      "Zujev",
      "\u0160evt\u0161enko",
      "\u0160t\u0161erbakov",
      "\u017dukov",
      "\u017duravljov"
    )
  ),

  public = list(
    first_name_male_est = function(){
      return(private$random_element(private$first_names_male_est))
    },

    first_name_female_est = function(){
      return(private$random_element(private$first_names_female_est))
    },

    first_name_male_rus = function(){
      return(private$random_element(private$first_names_male_rus))
    },

    first_name_female_rus = function(){
      return(private$random_element(private$first_names_female_rus))
    },

    first_name_est = function() {
      return(private$random_element(private$first_names_est))
    },

    first_name_rus = function() {
      return(private$random_element(private$first_names_rus))
    },

    last_name_est = function() {
      return(private$random_element(private$last_names_est))
    },

    last_name_rus = function() {
      return(private$random_element(private$last_names_rus))
    }
  )
)

# ssn ----------------------------------
ssn_et_EE = R6Class(
  "ssn_et_EE",
  inherit = ssn_init,
  cloneable = FALSE,
  private = list(
    vat_id_formats = 'EE#########',
    scale1 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 1),
    scale2 = c(3, 4, 5, 6, 7, 8, 9, 1, 2, 3),
    checksum = function(digits) {
      sum_mod11 = sum(digits * private$scale1) %% 11
      if (sum_mod11 < 10) {
        return(sum_mod11)
      }
      sum_mod11 = sum(digits * private$scale2) %% 11
      return(ifelse(sum_mod11 == 10, 0, sum_mod11))
    }
  ),

  public = list(
    ssn = function(min_age = 16, max_age = 90) {
      # Returns 11 character Estonian personal identity code (isikukood, IK).
      # Age of person is between 16 and 90 years, based on local computer date.
      # This function assigns random sex to person.
      # An Estonian Personal identification code consists of 11 digits,
      # generally given without any whitespace or other delimiters.
      # The form is GYYMMDDSSSC, where G shows sex and century of birth (odd
      # number male, even number female, 1-2 19th century, 3-4 20th century,
      # 5-6 21st century), SSS is a serial number separating persons born on
      # the same date and C a checksum.
      # https://en.wikipedia.org/wiki/National_identification_number#Estonia

      age = ddays(private$random_int(min_age * 365, max_age * 365))
      birthday = today() - age
      if (year(birthday) < 2000) {
        ik = sample(c("3", "4"), 1)
      } else {
        if (year(birthday) < 2100) {
          ik = sample(c("5", "6"), 1)
        } else {
          ik = sample(c("7", "8"), 1)
        }
      }
      ik = str_c(ik, sprintf("%02d", year(birthday) %% 100),
             sprintf("%02d", month(birthday)),
             sprintf("%02d", day(birthday)))
      ik = str_c(ik, sprintf("%03d", round(runif(1, min = 0, max = 998))))
      temp = private$checksum(as.integer(str_split(ik, "")[[1]]))
      return(str_c(ik, temp))
    },

    vat_id = function(){
      # http://ec.europa.eu/taxation_customs/vies/faq.html#item_11
      # :return: A random Estonian VAT ID
      return(private$bothify(private$random_element(private$vat_id_formats)))
    }
  )
)

# address -----------------------------
address_et_EE = R6Class(
  "address_et_EE",
  inherit = address_en_US,
  cloneable = FALSE,
  private = list(
    first_names = (person_et_EE$new())$.__enclos_env__$private$first_names,
    last_names = (person_et_EE$new())$.__enclos_env__$private$last_names,
    first_name = (person_et_EE$new())$first_name,
    last_name = (person_et_EE$new())$last_name
  )
)

# company ---------------------------------
company_et_EE = R6Class(
  "company_et_EE",
  inherit = company_en_US,
  cloneable = FALSE,
  private = list(
    first_names = (person_et_EE$new())$.__enclos_env__$private$first_names,
    last_names = (person_et_EE$new())$.__enclos_env__$private$last_names,

    first_name = (person_et_EE$new())$first_name,
    last_name = (person_et_EE$new())$last_name
  )
)
## credit_card -----------------
credit_card_et_EE = R6Class(
  "credit_card_et_EE",
  inherit = credit_card_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_et_EE$new())$.__enclos_env__$private$first_names,
    first_name = (person_et_EE$new())$first_name,
    last_names = (person_et_EE$new())$.__enclos_env__$private$last_names,
    last_name = (person_et_EE$new())$last_name
  )
)




## profile ------------------
profile_et_EE = R6Class(
  "profile_et_EE",
  inherit = profile_init,
  cloneable = FALSE,
  public = list(
    simple_profile = function(sex) {
      # Generates a basic profile with personal informations
      SEX = c("F", "M")
      if (missing(sex)) {
        sex = sample(SEX, 1)
      }
      if (!(sex %in% SEX)) {
        sex = sample(SEX, 1)
      }

      name = ifelse(sex == "F",
                    (person_et_EE$new())$name_female(),
                    (person_et_EE$new())$name_male())
      temp = list(
        "username" = (internet_en_US$new())$user_name(),
        "name" = name,
        "sex" = sex,
        "address" = (address_et_EE$new())$address(),
        "mail" = (internet_en_US$new())$free_email(),
        "birthdate" = (date_time_init$new())$date_of_birth()
      )
      return(temp)
    },

    profile = function(fields, sex) {
      # Generates a complete profile.
      # If "fields" is not empty, only the fields in the list will be returned

      if (missing(fields)) fields = c()

      field = list(
        "job" = (job_init$new())$job(),
        "company" = (company_et_EE$new())$company(),
        "ssn" = (ssn_et_EE$new())$ssn(),
        "residence" = (address_et_EE$new())$address(),
        "current_location" = c((geo_init$new())$latitude(),
                               (geo_init$new())$longitude()),
        "blood_group" = sample(c(
          "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"), 1),
        "website" = replicate(sample(seq(4), 1), (internet_en_US$new())$url())
      )

      field = append(field, self$simple_profile(sex))
      # field selection

      if (length(fields)) {
        nms = intersect(names(field), fields)
        field = field[nms]
      }
      return(field)
    }

  )
)
LuYang19/faker documentation built on Jan. 3, 2020, 12:07 a.m.