R/sv_SE.R

# automotive -----------------------------------------
automotive_sv_SE = R6Class(
  'automotive_sv_SE',
  inherit = automotive_init,
  cloneable = FALSE,
  private = list(
    # Source: https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Sweden
    # New possible format: https://goo.gl/gSjsnV
    license_formats = c(
      # Classic format
      '??? ###',
      # New possible format
      '??? ##?')
  )
)
# person -----------------------------------------
person_sv_SE = R6Class(
  "person_sv_SE",
  inherit = person_init,
  cloneable = FALSE,
  private = list(
    formats_female = '{first_name_female} {last_name}',

    formats_male = '{first_name_male} {last_name}',

    formats = c(
      '{first_name_female} {last_name}',
      '{first_name_male} {last_name}'
    ),

    first_names_female = list(
      c('Agnes', 0.001745),
      c('Agneta', 0.004777),
      c('Aina', 0.002274),
      c('Alexandra', 0.002762),
      c('Alice', 0.003714),
      c('Amanda', 0.003099),
      c('Anette', 0.004177),
      c('Angelica', 0.001462),
      c('Anita', 0.008407),
      c('Ann', 0.004749),
      c('Ann-Charlotte', 0.001562),
      c('Ann-Christin', 0.001383),
      c('Ann-Mari', 0.001194),
      c('Ann-Marie', 0.001974),
      c('Anna', 0.042584),
      c('Anna-Karin', 0.001175),
      c('Anna-Lena', 0.001167),
      c('Anne', 0.002491),
      c('Anne-Marie', 0.001349),
      c('Anneli', 0.003702),
      c('Annelie', 0.00147),
      c('Annette', 0.001469),
      c('Annie', 0.001357),
      c('Annika', 0.005399),
      c('Asta', 0.001437),
      c('Astrid', 0.006047),
      c('Barbro', 0.006869),
      c('Berit', 0.004732),
      c('Birgit', 0.005225),
      c('Birgitta', 0.024532),
      c('Brita', 0.002495),
      c('Britt', 0.00633),
      c('Britt-Marie', 0.00243),
      c('Britta', 0.002882),
      c('Camilla', 0.004547),
      c('Carin', 0.001447),
      c('Carina', 0.006187),
      c('Carolina', 0.001716),
      c('Caroline', 0.004014),
      c('Catarina', 0.001216),
      c('Catharina', 0.001196),
      c('Cecilia', 0.008249),
      c('Charlotta', 0.004212),
      c('Charlotte', 0.003875),
      c('Christina', 0.013235),
      c('Christine', 0.001515),
      c('Dagmar', 0.001687),
      c('Dagny', 0.001481),
      c('Doris', 0.001518),
      c('Ebba', 0.00223),
      c('Edit', 0.00162),
      c('Eivor', 0.002205),
      c('Eleonora', 0.001731),
      c('Elin', 0.006729),
      c('Elisabet', 0.02457),
      c('Elisabeth', 0.02537),
      c('Elise', 0.001198),
      c('Ella', 0.001269),
      c('Ellen', 0.002524),
      c('Ellinor', 0.001304),
      c('Elsa', 0.006168),
      c('Elsie', 0.001302),
      c('Elvira', 0.001736),
      c('Emelie', 0.003036),
      c('Emilia', 0.002176),
      c('Emma', 0.007459),
      c('Erika', 0.003543),
      c('Ester', 0.002201),
      c('Eva', 0.026496),
      c('Evelina', 0.00193),
      c('Evy', 0.001609),
      c('Felicia', 0.001269),
      c('Frida', 0.003423),
      c('Gabriella', 0.001245),
      c('Gerd', 0.003404),
      c('Gertrud', 0.002159),
      c('Greta', 0.002604),
      c('Gudrun', 0.0027),
      c('Gun', 0.004988),
      c('Gunborg', 0.003021),
      c('Gunhild', 0.003072),
      c('Gunilla', 0.00754),
      c('Gunnel', 0.003826),
      c('Gunvor', 0.003507),
      c('Hanna', 0.005512),
      c('Harriet', 0.001441),
      c('Helen', 0.002647),
      c('Helena', 0.011208),
      c('Helene', 0.002163),
      c('Hel\u00e9n', 0.001202),
      c('Hillevi', 0.001214),
      c('Ida', 0.004826),
      c('Inga', 0.005928),
      c('Inga-Lill', 0.001723),
      c('Ingeborg', 0.007051),
      c('Ingegerd', 0.006428),
      c('Ingeg\U00E4rd', 0.004587),
      c('Ingela', 0.002701),
      c('Inger', 0.010945),
      c('Ingrid', 0.01811),
      c('Irene', 0.007176),
      c('Iris', 0.001497),
      c('Irma', 0.001313),
      c('Ir\u00e9ne', 0.001696),
      c('Jeanette', 0.002204),
      c('Jennie', 0.001404),
      c('Jenny', 0.006327),
      c('Jessica', 0.003248),
      c('Johanna', 0.008736),
      c('Josefin', 0.00235),
      c('Josefina', 0.001294),
      c('Josefine', 0.001891),
      c('Julia', 0.002653),
      c('Kajsa', 0.001214),
      c('Karin', 0.023977),
      c('Karolina', 0.003098),
      c('Katarina', 0.00666),
      c('Kerstin', 0.01332),
      c('Kristin', 0.001999),
      c('Kristina', 0.024482),
      c('Laila', 0.001753),
      c('Lena', 0.011317),
      c('Lilian', 0.002505),
      c('Lillemor', 0.001571),
      c('Lilly', 0.001785),
      c('Lina', 0.002062),
      c('Linda', 0.006682),
      c('Linn', 0.001229),
      c('Linnea', 0.007713),
      c('Linn\u00e9a', 0.013337),
      c('Lisa', 0.004293),
      c('Lisbeth', 0.00258),
      c('Louise', 0.006398),
      c('Lovisa', 0.003016),
      c('Madeleine', 0.002603),
      c('Magdalena', 0.002318),
      c('Maj', 0.003649),
      c('Maj-Britt', 0.002919),
      c('Maja', 0.001462),
      c('Malin', 0.006314),
      c('Margareta', 0.037908),
      c('Margaretha', 0.003602),
      c('Margit', 0.00469),
      c('Mari', 0.002098),
      c('Maria', 0.061211),
      c('Marianne', 0.013455),
      c('Marie', 0.016343),
      c('Marie-Louise', 0.001508),
      c('Marina', 0.001195),
      c('Marita', 0.00249),
      c('Martina', 0.001657),
      c('Mary', 0.001719),
      c('Matilda', 0.004324),
      c('Maud', 0.001868),
      c('Mikaela', 0.001418),
      c('Mona', 0.003072),
      c('Monica', 0.005729),
      c('Monika', 0.002778),
      c('M\U00E4rta', 0.004609),
      c('Nina', 0.00182),
      c('Olivia', 0.001516),
      c('Pernilla', 0.002416),
      c('Petra', 0.001964),
      c('Pia', 0.003138),
      c('Ragnhild', 0.001655),
      c('Rebecca', 0.001585),
      c('Rebecka', 0.001631),
      c('Rose-Marie', 0.001345),
      c('Rut', 0.004635),
      c('Ruth', 0.002177),
      c('Sandra', 0.003674),
      c('Sara', 0.007473),
      c('Signe', 0.002761),
      c('Sigrid', 0.00213),
      c('Siv', 0.00586),
      c('Sofia', 0.011263),
      c('Sofie', 0.003466),
      c('Solveig', 0.002937),
      c('Sonja', 0.00403),
      c('Stina', 0.002603),
      c('Susanna', 0.001707),
      c('Susanne', 0.006845),
      c('Svea', 0.002225),
      c('Sylvia', 0.00163),
      c('Teresia', 0.001703),
      c('Therese', 0.00442),
      c('Ther\u00e9se', 0.001215),
      c('Ulla', 0.009528),
      c('Ulla-Britt', 0.001683),
      c('Ulrika', 0.005582),
      c('Valborg', 0.001616),
      c('Vera', 0.001495),
      c('Veronica', 0.001985),
      c('Victoria', 0.00249),
      c('Viktoria', 0.006375),
      c('Vilhelmina', 0.001311),
      c('Viola', 0.009669),
      c('Ylva', 0.001296),
      c('Yvonne', 0.004993),
      c('\U00C5sa', 0.005076)
    ),

    first_names_male = list(
      c('Adam', 0.00177),
      c('Albert', 0.001419),
      c('Albin', 0.001392),
      c('Alexander', 0.006474),
      c('Alf', 0.003571),
      c('Alfred', 0.001069),
      c('Allan', 0.003591),
      c('Alvar', 0.001072),
      c('Anders', 0.025312),
      c('Andreas', 0.008399),
      c('Andr\u00e9', 0.001357),
      c('Anton', 0.00293),
      c('Arne', 0.010637),
      c('Arnold', 0.001027),
      c('Artur', 0.001269),
      c('Arvid', 0.002169),
      c('Axel', 0.00691),
      c('Bengt', 0.014569),
      c('Benny', 0.001397),
      c('Bernt', 0.002951),
      c('Bert', 0.001153),
      c('Bertil', 0.010902),
      c('Birger', 0.003109),
      c('Bj\U00F6rn', 0.007803),
      c('Bo', 0.011988),
      c('Bror', 0.003281),
      c('B\U00F6rje', 0.003853),
      c('Carl', 0.013483),
      c('Christer', 0.007964),
      c('Christian', 0.004359),
      c('Christoffer', 0.002267),
      c('Claes', 0.002743),
      c('Conny', 0.001928),
      c('Dan', 0.00291),
      c('Daniel', 0.009526),
      c('David', 0.005483),
      c('Dennis', 0.001779),
      c('Edvard', 0.001253),
      c('Edvin', 0.001559),
      c('Egon', 0.001019),
      c('Einar', 0.002486),
      c('Elias', 0.001085),
      c('Emanuel', 0.003777),
      c('Emil', 0.00477),
      c('Eric', 0.003387),
      c('Erik', 0.041018),
      c('Erland', 0.00145),
      c('Erling', 0.001173),
      c('Ernst', 0.002205),
      c('Evert', 0.003313),
      c('Filip', 0.001959),
      c('Folke', 0.002876),
      c('Fredrik', 0.01177),
      c('Georg', 0.003446),
      c('Gerhard', 0.001174),
      c('Gert', 0.001548),
      c('Gunnar', 0.017957),
      c('Gustaf', 0.00742),
      c('Gustav', 0.009406),
      c('G\U00F6ran', 0.012287),
      c('G\U00F6sta', 0.00559),
      c('G\U00F6te', 0.002297),
      c('Hans', 0.016636),
      c('Harald', 0.002359),
      c('Harry', 0.002872),
      c('Helge', 0.002005),
      c('Henning', 0.001194),
      c('Henrik', 0.007644),
      c('Henry', 0.003134),
      c('Herbert', 0.001257),
      c('Hjalmar', 0.001179),
      c('Holger', 0.001641),
      c('Hugo', 0.001976),
      c('H\U00E5kan', 0.006974),
      c('Inge', 0.00288),
      c('Ingemar', 0.009024),
      c('Ingmar', 0.001138),
      c('Ingvar', 0.006758),
      c('Ivan', 0.001668),
      c('Ivar', 0.002943),
      c('Jacob', 0.001023),
      c('Jakob', 0.001299),
      c('Jan', 0.0173),
      c('Jan-Erik', 0.001094),
      c('Jens', 0.002221),
      c('Jesper', 0.002177),
      c('Jimmy', 0.00212),
      c('Joakim', 0.004606),
      c('Joel', 0.001778),
      c('Johan', 0.021986),
      c('Johannes', 0.003538),
      c('John', 0.008741),
      c('Johnny', 0.001499),
      c('Jonas', 0.007433),
      c('Jonathan', 0.001616),
      c('Jonny', 0.00142),
      c('Josef', 0.001131),
      c('Juhani', 0.001368),
      c('J\U00F6rgen', 0.003869),
      c('Karl', 0.030342),
      c('Kenneth', 0.00354),
      c('Kent', 0.004156),
      c('Kim', 0.001298),
      c('Kjell', 0.007932),
      c('Klas', 0.001989),
      c('Knut', 0.002668),
      c('Krister', 0.002433),
      c('Kristian', 0.001849),
      c('Kristoffer', 0.001548),
      c('Kurt', 0.004453),
      c('Lars', 0.03162),
      c('Lars-erik', 0.001056),
      c('Leif', 0.00918),
      c('Lennart', 0.019721),
      c('Linus', 0.001817),
      c('Ludvig', 0.001014),
      c('Magnus', 0.009301),
      c('Marcus', 0.004065),
      c('Markus', 0.002075),
      c('Martin', 0.008861),
      c('Mathias', 0.001551),
      c('Mats', 0.008403),
      c('Mattias', 0.005657),
      c('Max', 0.001234),
      c('Michael', 0.004456),
      c('Mikael', 0.015583),
      c('Morgan', 0.001377),
      c('Nicklas', 0.001201),
      c('Niclas', 0.001643),
      c('Niklas', 0.003704),
      c('Nils', 0.018831),
      c('Ola', 0.002691),
      c('Olle', 0.001666),
      c('Olof', 0.017132),
      c('Olov', 0.005457),
      c('Oscar', 0.002606),
      c('Oskar', 0.005198),
      c('Otto', 0.001361),
      c('Ove', 0.004994),
      c('Patrik', 0.005091),
      c('Paul', 0.002455),
      c('Per', 0.02269),
      c('Peter', 0.014015),
      c('Petter', 0.00115),
      c('Philip', 0.00134),
      c('Pierre', 0.001014),
      c('Pontus', 0.001652),
      c('P\U00E4r', 0.002043),
      c('Ragnar', 0.002983),
      c('Rasmus', 0.001323),
      c('Reinhold', 0.001075),
      c('Richard', 0.002053),
      c('Rickard', 0.00283),
      c('Rikard', 0.001272),
      c('Robert', 0.006959),
      c('Robin', 0.003012),
      c('Roger', 0.005033),
      c('Roland', 0.006879),
      c('Rolf', 0.007914),
      c('Ronny', 0.001561),
      c('Rune', 0.0056),
      c('Samuel', 0.001473),
      c('Sebastian', 0.003275),
      c('Sigurd', 0.001099),
      c('Sigvard', 0.002438),
      c('Simon', 0.003338),
      c('Sixten', 0.001299),
      c('Staffan', 0.001627),
      c('Stefan', 0.009034),
      c('Sten', 0.003911),
      c('Stig', 0.009343),
      c('Sture', 0.002518),
      c('Sune', 0.002173),
      c('Sven', 0.017897),
      c('S\U00F6ren', 0.002376),
      c('Tage', 0.002198),
      c('Thomas', 0.00738),
      c('Tobias', 0.003623),
      c('Tom', 0.000977),
      c('Tomas', 0.004168),
      c('Tommy', 0.005526),
      c('Tony', 0.001814),
      c('Torbj\U00F6rn', 0.002984),
      c('Tord', 0.001449),
      c('Tore', 0.00263),
      c('Torsten', 0.002915),
      c('Ture', 0.001212),
      c('Ulf', 0.008541),
      c('Uno', 0.001812),
      c('Urban', 0.001584),
      c('Valdemar', 0.002204),
      c('Valter', 0.001371),
      c('Verner', 0.001196),
      c('Victor', 0.001543),
      c('Viktor', 0.00308),
      c('Vilhelm', 0.003785),
      c('Wilhelm', 0.002195),
      c('William', 0.002332),
      c('Yngve', 0.002698),
      c('\U00C5ke', 0.013837)
    ),

    first_names = list(
      c('Agnes', 0.001745),
      c('Agneta', 0.004777),
      c('Aina', 0.002274),
      c('Alexandra', 0.002762),
      c('Alice', 0.003714),
      c('Amanda', 0.003099),
      c('Anette', 0.004177),
      c('Angelica', 0.001462),
      c('Anita', 0.008407),
      c('Ann', 0.004749),
      c('Ann-Charlotte', 0.001562),
      c('Ann-Christin', 0.001383),
      c('Ann-Mari', 0.001194),
      c('Ann-Marie', 0.001974),
      c('Anna', 0.042584),
      c('Anna-Karin', 0.001175),
      c('Anna-Lena', 0.001167),
      c('Anne', 0.002491),
      c('Anne-Marie', 0.001349),
      c('Anneli', 0.003702),
      c('Annelie', 0.00147),
      c('Annette', 0.001469),
      c('Annie', 0.001357),
      c('Annika', 0.005399),
      c('Asta', 0.001437),
      c('Astrid', 0.006047),
      c('Barbro', 0.006869),
      c('Berit', 0.004732),
      c('Birgit', 0.005225),
      c('Birgitta', 0.024532),
      c('Brita', 0.002495),
      c('Britt', 0.00633),
      c('Britt-Marie', 0.00243),
      c('Britta', 0.002882),
      c('Camilla', 0.004547),
      c('Carin', 0.001447),
      c('Carina', 0.006187),
      c('Carolina', 0.001716),
      c('Caroline', 0.004014),
      c('Catarina', 0.001216),
      c('Catharina', 0.001196),
      c('Cecilia', 0.008249),
      c('Charlotta', 0.004212),
      c('Charlotte', 0.003875),
      c('Christina', 0.013235),
      c('Christine', 0.001515),
      c('Dagmar', 0.001687),
      c('Dagny', 0.001481),
      c('Doris', 0.001518),
      c('Ebba', 0.00223),
      c('Edit', 0.00162),
      c('Eivor', 0.002205),
      c('Eleonora', 0.001731),
      c('Elin', 0.006729),
      c('Elisabet', 0.02457),
      c('Elisabeth', 0.02537),
      c('Elise', 0.001198),
      c('Ella', 0.001269),
      c('Ellen', 0.002524),
      c('Ellinor', 0.001304),
      c('Elsa', 0.006168),
      c('Elsie', 0.001302),
      c('Elvira', 0.001736),
      c('Emelie', 0.003036),
      c('Emilia', 0.002176),
      c('Emma', 0.007459),
      c('Erika', 0.003543),
      c('Ester', 0.002201),
      c('Eva', 0.026496),
      c('Evelina', 0.00193),
      c('Evy', 0.001609),
      c('Felicia', 0.001269),
      c('Frida', 0.003423),
      c('Gabriella', 0.001245),
      c('Gerd', 0.003404),
      c('Gertrud', 0.002159),
      c('Greta', 0.002604),
      c('Gudrun', 0.0027),
      c('Gun', 0.004988),
      c('Gunborg', 0.003021),
      c('Gunhild', 0.003072),
      c('Gunilla', 0.00754),
      c('Gunnel', 0.003826),
      c('Gunvor', 0.003507),
      c('Hanna', 0.005512),
      c('Harriet', 0.001441),
      c('Helen', 0.002647),
      c('Helena', 0.011208),
      c('Helene', 0.002163),
      c('Hel\u00e9n', 0.001202),
      c('Hillevi', 0.001214),
      c('Ida', 0.004826),
      c('Inga', 0.005928),
      c('Inga-Lill', 0.001723),
      c('Ingeborg', 0.007051),
      c('Ingegerd', 0.006428),
      c('Ingeg\U00E4rd', 0.004587),
      c('Ingela', 0.002701),
      c('Inger', 0.010945),
      c('Ingrid', 0.01811),
      c('Irene', 0.007176),
      c('Iris', 0.001497),
      c('Irma', 0.001313),
      c('Ir\u00e9ne', 0.001696),
      c('Jeanette', 0.002204),
      c('Jennie', 0.001404),
      c('Jenny', 0.006327),
      c('Jessica', 0.003248),
      c('Johanna', 0.008736),
      c('Josefin', 0.00235),
      c('Josefina', 0.001294),
      c('Josefine', 0.001891),
      c('Julia', 0.002653),
      c('Kajsa', 0.001214),
      c('Karin', 0.023977),
      c('Karolina', 0.003098),
      c('Katarina', 0.00666),
      c('Kerstin', 0.01332),
      c('Kristin', 0.001999),
      c('Kristina', 0.024482),
      c('Laila', 0.001753),
      c('Lena', 0.011317),
      c('Lilian', 0.002505),
      c('Lillemor', 0.001571),
      c('Lilly', 0.001785),
      c('Lina', 0.002062),
      c('Linda', 0.006682),
      c('Linn', 0.001229),
      c('Linnea', 0.007713),
      c('Linn\u00e9a', 0.013337),
      c('Lisa', 0.004293),
      c('Lisbeth', 0.00258),
      c('Louise', 0.006398),
      c('Lovisa', 0.003016),
      c('Madeleine', 0.002603),
      c('Magdalena', 0.002318),
      c('Maj', 0.003649),
      c('Maj-Britt', 0.002919),
      c('Maja', 0.001462),
      c('Malin', 0.006314),
      c('Margareta', 0.037908),
      c('Margaretha', 0.003602),
      c('Margit', 0.00469),
      c('Mari', 0.002098),
      c('Maria', 0.061211),
      c('Marianne', 0.013455),
      c('Marie', 0.016343),
      c('Marie-Louise', 0.001508),
      c('Marina', 0.001195),
      c('Marita', 0.00249),
      c('Martina', 0.001657),
      c('Mary', 0.001719),
      c('Matilda', 0.004324),
      c('Maud', 0.001868),
      c('Mikaela', 0.001418),
      c('Mona', 0.003072),
      c('Monica', 0.005729),
      c('Monika', 0.002778),
      c('M\U00E4rta', 0.004609),
      c('Nina', 0.00182),
      c('Olivia', 0.001516),
      c('Pernilla', 0.002416),
      c('Petra', 0.001964),
      c('Pia', 0.003138),
      c('Ragnhild', 0.001655),
      c('Rebecca', 0.001585),
      c('Rebecka', 0.001631),
      c('Rose-Marie', 0.001345),
      c('Rut', 0.004635),
      c('Ruth', 0.002177),
      c('Sandra', 0.003674),
      c('Sara', 0.007473),
      c('Signe', 0.002761),
      c('Sigrid', 0.00213),
      c('Siv', 0.00586),
      c('Sofia', 0.011263),
      c('Sofie', 0.003466),
      c('Solveig', 0.002937),
      c('Sonja', 0.00403),
      c('Stina', 0.002603),
      c('Susanna', 0.001707),
      c('Susanne', 0.006845),
      c('Svea', 0.002225),
      c('Sylvia', 0.00163),
      c('Teresia', 0.001703),
      c('Therese', 0.00442),
      c('Ther\u00e9se', 0.001215),
      c('Ulla', 0.009528),
      c('Ulla-Britt', 0.001683),
      c('Ulrika', 0.005582),
      c('Valborg', 0.001616),
      c('Vera', 0.001495),
      c('Veronica', 0.001985),
      c('Victoria', 0.00249),
      c('Viktoria', 0.006375),
      c('Vilhelmina', 0.001311),
      c('Viola', 0.009669),
      c('Ylva', 0.001296),
      c('Yvonne', 0.004993),
      c('\U00C5sa', 0.005076),
      c('Adam', 0.00177),
      c('Albert', 0.001419),
      c('Albin', 0.001392),
      c('Alexander', 0.006474),
      c('Alf', 0.003571),
      c('Alfred', 0.001069),
      c('Allan', 0.003591),
      c('Alvar', 0.001072),
      c('Anders', 0.025312),
      c('Andreas', 0.008399),
      c('Andr\u00e9', 0.001357),
      c('Anton', 0.00293),
      c('Arne', 0.010637),
      c('Arnold', 0.001027),
      c('Artur', 0.001269),
      c('Arvid', 0.002169),
      c('Axel', 0.00691),
      c('Bengt', 0.014569),
      c('Benny', 0.001397),
      c('Bernt', 0.002951),
      c('Bert', 0.001153),
      c('Bertil', 0.010902),
      c('Birger', 0.003109),
      c('Bj\U00F6rn', 0.007803),
      c('Bo', 0.011988),
      c('Bror', 0.003281),
      c('B\U00F6rje', 0.003853),
      c('Carl', 0.013483),
      c('Christer', 0.007964),
      c('Christian', 0.004359),
      c('Christoffer', 0.002267),
      c('Claes', 0.002743),
      c('Conny', 0.001928),
      c('Dan', 0.00291),
      c('Daniel', 0.009526),
      c('David', 0.005483),
      c('Dennis', 0.001779),
      c('Edvard', 0.001253),
      c('Edvin', 0.001559),
      c('Egon', 0.001019),
      c('Einar', 0.002486),
      c('Elias', 0.001085),
      c('Emanuel', 0.003777),
      c('Emil', 0.00477),
      c('Eric', 0.003387),
      c('Erik', 0.041018),
      c('Erland', 0.00145),
      c('Erling', 0.001173),
      c('Ernst', 0.002205),
      c('Evert', 0.003313),
      c('Filip', 0.001959),
      c('Folke', 0.002876),
      c('Fredrik', 0.01177),
      c('Georg', 0.003446),
      c('Gerhard', 0.001174),
      c('Gert', 0.001548),
      c('Gunnar', 0.017957),
      c('Gustaf', 0.00742),
      c('Gustav', 0.009406),
      c('G\U00F6ran', 0.012287),
      c('G\U00F6sta', 0.00559),
      c('G\U00F6te', 0.002297),
      c('Hans', 0.016636),
      c('Harald', 0.002359),
      c('Harry', 0.002872),
      c('Helge', 0.002005),
      c('Henning', 0.001194),
      c('Henrik', 0.007644),
      c('Henry', 0.003134),
      c('Herbert', 0.001257),
      c('Hjalmar', 0.001179),
      c('Holger', 0.001641),
      c('Hugo', 0.001976),
      c('H\U00E5kan', 0.006974),
      c('Inge', 0.00288),
      c('Ingemar', 0.009024),
      c('Ingmar', 0.001138),
      c('Ingvar', 0.006758),
      c('Ivan', 0.001668),
      c('Ivar', 0.002943),
      c('Jacob', 0.001023),
      c('Jakob', 0.001299),
      c('Jan', 0.0173),
      c('Jan-Erik', 0.001094),
      c('Jens', 0.002221),
      c('Jesper', 0.002177),
      c('Jimmy', 0.00212),
      c('Joakim', 0.004606),
      c('Joel', 0.001778),
      c('Johan', 0.021986),
      c('Johannes', 0.003538),
      c('John', 0.008741),
      c('Johnny', 0.001499),
      c('Jonas', 0.007433),
      c('Jonathan', 0.001616),
      c('Jonny', 0.00142),
      c('Josef', 0.001131),
      c('Juhani', 0.001368),
      c('J\U00F6rgen', 0.003869),
      c('Karl', 0.030342),
      c('Kenneth', 0.00354),
      c('Kent', 0.004156),
      c('Kim', 0.001298),
      c('Kjell', 0.007932),
      c('Klas', 0.001989),
      c('Knut', 0.002668),
      c('Krister', 0.002433),
      c('Kristian', 0.001849),
      c('Kristoffer', 0.001548),
      c('Kurt', 0.004453),
      c('Lars', 0.03162),
      c('Lars-erik', 0.001056),
      c('Leif', 0.00918),
      c('Lennart', 0.019721),
      c('Linus', 0.001817),
      c('Ludvig', 0.001014),
      c('Magnus', 0.009301),
      c('Marcus', 0.004065),
      c('Markus', 0.002075),
      c('Martin', 0.008861),
      c('Mathias', 0.001551),
      c('Mats', 0.008403),
      c('Mattias', 0.005657),
      c('Max', 0.001234),
      c('Michael', 0.004456),
      c('Mikael', 0.015583),
      c('Morgan', 0.001377),
      c('Nicklas', 0.001201),
      c('Niclas', 0.001643),
      c('Niklas', 0.003704),
      c('Nils', 0.018831),
      c('Ola', 0.002691),
      c('Olle', 0.001666),
      c('Olof', 0.017132),
      c('Olov', 0.005457),
      c('Oscar', 0.002606),
      c('Oskar', 0.005198),
      c('Otto', 0.001361),
      c('Ove', 0.004994),
      c('Patrik', 0.005091),
      c('Paul', 0.002455),
      c('Per', 0.02269),
      c('Peter', 0.014015),
      c('Petter', 0.00115),
      c('Philip', 0.00134),
      c('Pierre', 0.001014),
      c('Pontus', 0.001652),
      c('P\U00E4r', 0.002043),
      c('Ragnar', 0.002983),
      c('Rasmus', 0.001323),
      c('Reinhold', 0.001075),
      c('Richard', 0.002053),
      c('Rickard', 0.00283),
      c('Rikard', 0.001272),
      c('Robert', 0.006959),
      c('Robin', 0.003012),
      c('Roger', 0.005033),
      c('Roland', 0.006879),
      c('Rolf', 0.007914),
      c('Ronny', 0.001561),
      c('Rune', 0.0056),
      c('Samuel', 0.001473),
      c('Sebastian', 0.003275),
      c('Sigurd', 0.001099),
      c('Sigvard', 0.002438),
      c('Simon', 0.003338),
      c('Sixten', 0.001299),
      c('Staffan', 0.001627),
      c('Stefan', 0.009034),
      c('Sten', 0.003911),
      c('Stig', 0.009343),
      c('Sture', 0.002518),
      c('Sune', 0.002173),
      c('Sven', 0.017897),
      c('S\U00F6ren', 0.002376),
      c('Tage', 0.002198),
      c('Thomas', 0.00738),
      c('Tobias', 0.003623),
      c('Tom', 0.000977),
      c('Tomas', 0.004168),
      c('Tommy', 0.005526),
      c('Tony', 0.001814),
      c('Torbj\U00F6rn', 0.002984),
      c('Tord', 0.001449),
      c('Tore', 0.00263),
      c('Torsten', 0.002915),
      c('Ture', 0.001212),
      c('Ulf', 0.008541),
      c('Uno', 0.001812),
      c('Urban', 0.001584),
      c('Valdemar', 0.002204),
      c('Valter', 0.001371),
      c('Verner', 0.001196),
      c('Victor', 0.001543),
      c('Viktor', 0.00308),
      c('Vilhelm', 0.003785),
      c('Wilhelm', 0.002195),
      c('William', 0.002332),
      c('Yngve', 0.002698),
      c('\U00C5ke', 0.013837)
    ),

    last_names = list(
      c('Abrahamsson', 0.00244),
      c('Adolfsson', 0.002012),
      c('Alm', 0.001448),
      c('Andersson', 0.074993),
      c('Andreasson', 0.00245),
      c('Aronsson', 0.001722),
      c('Arvidsson', 0.003474),
      c('Augustsson', 0.001306),
      c('Axelsson', 0.006128),
      c('Bengtsson', 0.009764),
      c('Berg', 0.005072),
      c('Berggren', 0.002914),
      c('Berglund', 0.005115),
      c('Bergman', 0.00356),
      c('Bergqvist', 0.002172),
      c('Bergstr\U00F6m', 0.005561),
      c('Berntsson', 0.00128),
      c('Bj\U00F6rk', 0.003265),
      c('Bj\U00F6rklund', 0.002883),
      c('Bj\U00F6rkman', 0.00176),
      c('Blom', 0.002326),
      c('Blomberg', 0.001464),
      c('Blomqvist', 0.002349),
      c('Boman', 0.001365),
      c('Borg', 0.001954),
      c('Bostr\U00F6m', 0.001985),
      c('B\U00E4ckstr\U00F6m', 0.001865),
      c('B\U00F6rjesson', 0.002036),
      c('Carlsson', 0.007727),
      c('Claesson', 0.0016),
      c('Dahl', 0.002064),
      c('Dahlberg', 0.002382),
      c('Dahlgren', 0.001578),
      c('Dahlstr\U00F6m', 0.001538),
      c('Danielsson', 0.004208),
      c('Davidsson', 0.002035),
      c('Edlund', 0.001649),
      c('Ek', 0.002187),
      c('Ekberg', 0.001201),
      c('Eklund', 0.003919),
      c('Ekman', 0.001847),
      c('Ekstr\U00F6m', 0.00267),
      c('Eliasson', 0.003127),
      c('Englund', 0.001958),
      c('Engstr\U00F6m', 0.004079),
      c('Ericsson', 0.001221),
      c('Eriksson', 0.039871),
      c('Erlandsson', 0.001768),
      c('Falk', 0.002035),
      c('Forsberg', 0.004265),
      c('Forslund', 0.001137),
      c('Fransson', 0.003937),
      c('Franz\u00e9n', 0.001491),
      c('Fredriksson', 0.004959),
      c('Friberg', 0.001828),
      c('Gunnarsson', 0.003764),
      c('Gustafsson', 0.020795),
      c('Gustavsson', 0.007363),
      c('G\U00F6ransson', 0.00233),
      c('Haglund', 0.001575),
      c('Hagstr\U00F6m', 0.001315),
      c('Hallberg', 0.002017),
      c('Hansen', 0.001804),
      c('Hansson', 0.012512),
      c('Hedberg', 0.001824),
      c('Hedlund', 0.002617),
      c('Hedman', 0.001419),
      c('Hedstr\U00F6m', 0.001406),
      c('Hellberg', 0.001212),
      c('Hellstr\U00F6m', 0.002385),
      c('Henriksson', 0.004586),
      c('Hermansson', 0.002866),
      c('Hjalmarsson', 0.001191),
      c('Holm', 0.0037),
      c('Holmberg', 0.003521),
      c('Holmgren', 0.002689),
      c('Holmqvist', 0.001561),
      c('Holmstr\U00F6m', 0.001904),
      c('H\U00E4gglund', 0.001134),
      c('H\U00E5kansson', 0.0043),
      c('H\U00F6gberg', 0.001492),
      c('H\U00F6glund', 0.001861),
      c('Isaksson', 0.003349),
      c('Ivarsson', 0.002209),
      c('Jakobsson', 0.005863),
      c('Jansson', 0.014518),
      c('Jensen', 0.001898),
      c('Johannesson', 0.001813),
      c('Johansson', 0.076124),
      c('Johnsson', 0.003881),
      c('Jonasson', 0.002439),
      c('Jonsson', 0.01655),
      c('Josefsson', 0.002104),
      c('J\U00F6nsson', 0.009781),
      c('Karlsson', 0.058698),
      c('Klasson', 0.001235),
      c('Knutsson', 0.001627),
      c('Kristiansson', 0.001226),
      c('Larsson', 0.036191),
      c('Lilja', 0.00141),
      c('Lind', 0.00391),
      c('Lindahl', 0.001815),
      c('Lindberg', 0.007056),
      c('Lindblad', 0.001253),
      c('Lindblom', 0.001864),
      c('Lindell', 0.001351),
      c('Linder', 0.00121),
      c('Lindgren', 0.00608),
      c('Lindholm', 0.002166),
      c('Lindkvist', 0.001233),
      c('Lindqvist', 0.004209),
      c('Lindstr\U00F6m', 0.006642),
      c('Lind\u00e9n', 0.001551),
      c('Ljung', 0.001232),
      c('Ljungberg', 0.001274),
      c('Lund', 0.002142),
      c('Lundberg', 0.00568),
      c('Lundgren', 0.005495),
      c('Lundin', 0.00397),
      c('Lundkvist', 0.001252),
      c('Lundmark', 0.00141),
      c('Lundqvist', 0.003493),
      c('Lundstr\U00F6m', 0.003173),
      c('L\U00F6fgren', 0.002211),
      c('Magnusson', 0.007333),
      c('Malm', 0.00158),
      c('Malmberg', 0.001224),
      c('Martinsson', 0.0025),
      c('Mattsson', 0.004904),
      c('Melin', 0.001487),
      c('Moberg', 0.001532),
      c('Molin', 0.001312),
      c('M\U00E5nsson', 0.002563),
      c('M\U00E5rtensson', 0.003432),
      c('M\U00F6ller', 0.002013),
      c('Nielsen', 0.001623),
      c('Nilsson', 0.050327),
      c('Norberg', 0.002325),
      c('Nord', 0.001346),
      c('Nordin', 0.002799),
      c('Nordstr\U00F6m', 0.003207),
      c('Norman', 0.001228),
      c('Nor\u00e9n', 0.001524),
      c('Nyberg', 0.003291),
      c('Nygren', 0.00188),
      c('Nyman', 0.002117),
      c('Nystr\U00F6m', 0.003538),
      c('N\U00E4slund', 0.001331),
      c('Ohlsson', 0.001141),
      c('Olausson', 0.001503),
      c('Olofsson', 0.006893),
      c('Olsson', 0.032427),
      c('Oskarsson', 0.001576),
      c('Ottosson', 0.002066),
      c('Palm', 0.001957),
      c('Paulsson', 0.001382),
      c('Pedersen', 0.001201),
      c('Persson', 0.031475),
      c('Petersson', 0.008913),
      c('Pettersson', 0.019276),
      c('P\U00E5lsson', 0.001626),
      c('Roos', 0.001447),
      c('Ros\u00e9n', 0.00181),
      c('Samuelsson', 0.003855),
      c('Sandberg', 0.004613),
      c('Sandstr\U00F6m', 0.002761),
      c('Sj\U00F6berg', 0.004282),
      c('Sj\U00F6din', 0.001399),
      c('Sj\U00F6gren', 0.002585),
      c('Sj\U00F6str\U00F6m', 0.001921),
      c('Skoglund', 0.001788),
      c('Sk\U00F6ld', 0.001266),
      c('Stenberg', 0.001784),
      c('Strand', 0.001771),
      c('Strandberg', 0.001755),
      c('Str\U00F6m', 0.002872),
      c('Str\U00F6mberg', 0.002357),
      c('St\U00E5hl', 0.00126),
      c('Sundberg', 0.002691),
      c('Sundin', 0.001434),
      c('Sundqvist', 0.001526),
      c('Sundstr\U00F6m', 0.002302),
      c('Svensson', 0.030624),
      c('Sv\U00E4rd', 0.001284),
      c('S\U00F6derberg', 0.003305),
      c('S\U00F6derlund', 0.00197),
      c('S\U00F6derstr\U00F6m', 0.002226),
      c('T\U00F6rnqvist', 0.001176),
      c('Viklund', 0.001833),
      c('Vikstr\U00F6m', 0.001757),
      c('Wahlstr\U00F6m', 0.001139),
      c('Wallin', 0.003077),
      c('Wikstr\U00F6m', 0.001522),
      c('\U00C5berg', 0.002664),
      c('\U00C5gren', 0.00132),
      c('\U00C5kesson', 0.002344),
      c('\U00C5str\U00F6m', 0.002272),
      c('\U00D6berg', 0.002448),
      c('\U00D6hman', 0.001415),
      c('\U00D6stlund', 0.001623)
    )
  ),
  public = list(
    first_name = function(){
      return(private$random_element(private$first_names))
    },

    last_name = function(){
      return(private$random_element(private$last_names))
    },

    first_name_male = function() {
      return(private$random_element(private$first_names_male))
    },

    first_name_female = function() {
      return(private$random_element(private$first_names_female))
    }
  )
)

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



# company -------------------------------------------------
company_sv_SE = R6Class(
  "company_sv_SE",
  inherit = company_init,
  cloneable = FALSE,
  private = list(
    last_names = (person_sv_SE$new())$.__enclos_env__$private$last_names,
    last_name = (person_sv_SE$new())$last_name,

    formats = c(
      '{last_name} {company_suffix}',
      '{last_name} {last_name} {company_suffix}',
      '{last_name} & {last_name} {company_suffix}'),

    company_suffixes = c('AB', 'HB')
  )
)


# address ----------------------------------
address_sv_SE = R6Class(
  "address_sv_SE",
  inherit = address_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_sv_SE$new())$.__enclos_env__$private$first_names,
    last_names = (person_sv_SE$new())$.__enclos_env__$private$last_names,
    first_name = (person_sv_SE$new())$first_name,
    last_name = (person_sv_SE$new())$last_name,

    building_number_formats = c('###', '##', '#'),

    street_name_formats = '{street_prefix}{street_suffix}',

    street_address_formats = '{street_name} {building_number}',

    street_prefixes = c(
      "Bj\u00f6rk",
      "J\u00e4rnv\u00e4gs",
      "Ring",
      "Skol",
      "Skogs",
      "Ny",
      "Gran",
      "Idrotts",
      "Stor",
      "Kyrk",
      "Industri",
      "Park",
      "Strand",
      "Skol",
      "Tr\u00e4dg\u00e5rds",
      "Industri",
      "\u00c4ngs",
      "Kyrko",
      "Park",
      "Villa",
      "Ek",
      "Kvarn",
      "Stations",
      "Back",
      "Furu",
      "Gen",
      "Fabriks",
      "\u00c5ker",
      "B\u00e4ck",
      "Asp"
    ),

    street_suffixes = c('gatan', 'gatan', 'v\u00e4gen', 'v\u00e4gen',
                        'stigen', 'gr\u00e4nd', 'torget'),

    address_formats = "{street_address}\n{postcode} {city}",

    postcode_formats = '#####',

    city_formats = '{city_name}',

    cities = c(
      "Stockholm",
      "G\u00f6teborg",
      "Malm\u00f6",
      "Uppsala",
      "V\u00e4ster\u00e5s",
      "\u00d6rebro",
      "Link\u00f6ping",
      "Helsingborg",
      "J\u00f6nk\u00f6ping",
      "Norrk\u00f6ping",
      "Lund",
      "Ume\u00e5",
      "G\u00e4vle",
      "Bor\u00e5s",
      "M\u00f6lndal",
      "S\u00f6dert\u00e4lje",
      "Eskilstuna",
      "Karlstad",
      "Halmstad",
      "V\u00e4xj\u00f6",
      "Sundsvall",
      "Lule\u00e5",
      "Trollh\u00e4ttan",
      "\u00d6stersund",
      "Borl\u00e4nge",
      "Falun",
      "Kalmar",
      "Sk\u00f6vde",
      "Kristianstad",
      "Karlskrona",
      "Skellefte\u00e5",
      "Uddevalla",
      "Liding\u00f6",
      "Motala",
      "Landskrona",
      "\u00d6rnsk\u00f6ldsvik",
      "Nyk\u00f6ping",
      "Karlskoga",
      "Varberg",
      "Trelleborg",
      "Lidk\u00f6ping",
      "Alings\u00e5s",
      "Pite\u00e5",
      "Sandviken",
      "\u00c4ngelholm"
    ),

    countries = c(
      "Afghanistan",
      "Albanien",
      "Algeriet",
      "Amerikanska Samoa",
      "Andorra",
      "Angola",
      "Anguilla",
      "Antarktis",
      "Antigua och Barbuda",
      "Argentina",
      "Armenien",
      "Aruba",
      "Ascension",
      "Australien",
      "Azerbajdzjan",
      "Bahamas",
      "Bahrain",
      "Bangladesh",
      "Barbados",
      "Belgien",
      "Belize",
      "Benin",
      "Bermuda",
      "Bhutan",
      "Bolivia",
      "Bosnien och Hercegovina",
      "Botswana",
      "Brasilien",
      "Brittiska Jungfru\u00f6arna",
      "Brunei",
      "Bulgarien",
      "Burkina Faso",
      "Burma",
      "Burundi",
      "Cayman\u00f6arna",
      "Centralafrikanska republiken",
      "Chile",
      "Colombia",
      "Cook\u00f6arna",
      "Costa Rica",
      "Cypern",
      "Danmark",
      "Diego Garcia",
      "Djibouti",
      "Dominica",
      "Dominikanska republiken",
      "Ecuador",
      "Egypten",
      "Ekvatorialguinea",
      "Elfenbenskusten",
      "El Salvador",
      "Eritrea",
      "Estland",
      "Etiopien",
      "England",
      "Falklands\u00f6arna",
      "Fiji",
      "Filippinerna",
      "Finland",
      "Frankrike",
      "Franska Guyana",
      "Franska Polynesien",
      "F\u00e4r\u00f6arna",
      "F\u00f6renade Arabemiraten",
      "Gabon",
      "Gambia",
      "Georgien",
      "Ghana",
      "Gibraltar",
      "Grekland",
      "Grenada",
      "Gr\u00f6nland",
      "Guadeloupe",
      "Guatemala",
      "Guinea",
      "Guinea-Bissau",
      "Guyana",
      "Haiti",
      "Honduras",
      "Hongkong",
      "Indien",
      "Indonesien",
      "Irak",
      "Iran",
      "Irland",
      "Island",
      "Israel",
      "Italien",
      "Jamaica",
      "Japan",
      "Jemen",
      "Jordanien",
      "Kambodja",
      "Kamerun",
      "Kanada",
      "Kap Verde",
      "Kazakstan",
      "Kenya",
      "Kina",
      "Kirgizistan",
      "Kiribati",
      "Komorerna",
      "Kongo-Brazzaville",
      "Kongo-Kinshasa",
      "Kosovo",
      "Kroatien",
      "Kuba",
      "Kuwait",
      "Laos",
      "Lesotho",
      "Lettland",
      "Libanon",
      "Liberia",
      "Libyen",
      "Liechtenstein",
      "Litauen",
      "Luxemburg",
      "Macao",
      "Madagaskar",
      "Makedonien",
      "Malawi",
      "Malaysia",
      "Maldiverna",
      "Mali",
      "Malta",
      "Marianerna",
      "Marocko",
      "Marshall\u00f6arna",
      "Martinique",
      "Mauretanien",
      "Mauritius",
      "Mayotte",
      "Mexiko",
      "Midway\u00f6arna",
      "Mikronesiens federerade stater",
      "Mo\u00e7ambique",
      "Moldavien",
      "Monaco",
      "Mongoliet",
      "Montenegro",
      "Montserrat",
      "Namibia",
      "Nauru",
      "Nederl\u00e4nderna",
      "Nederl\u00e4ndska Antillerna",
      "Nepal",
      "Nicaragua",
      "Niger",
      "Nigeria",
      "Niue",
      "Nordkorea",
      "Nordmarianerna",
      "Norfolk\u00f6n",
      "Norge",
      "Nya Kaledonien",
      "Nya Zeeland",
      "Oman",
      "Pakistan",
      "Palau",
      "Palestina",
      "Panama",
      "Papua Nya Guinea",
      "Paraguay",
      "Peru",
      "Pitcairn\u00f6arna",
      "Polen",
      "Portugal",
      "Qatar",
      "R\u00e9union",
      "Rum\u00e4nien",
      "Rwanda",
      "Ryssland",
      "Saint Kitts och Nevis",
      "Saint Lucia",
      "Saint-Pierre och Miquelon",
      "Saint Vincent och Grenadinerna",
      "Salomon\u00f6arna",
      "Samoa",
      "Sankta Helena",
      "San Marino",
      "S\u00e3o Tom\u00e9 och Pr\u00edncipe",
      "Saudiarabien",
      "Schweiz",
      "Senegal",
      "Serbien",
      "Seychellerna",
      "SierraLeone",
      "Singapore",
      "Sint Maarten",
      "Slovakien",
      "Slovenien",
      "Somalia",
      "Spanien",
      "Sri Lanka",
      "Storbritannien",
      "Sudan",
      "Surinam",
      "Sverige",
      "Swaziland",
      "Sydafrika",
      "Sydkorea",
      "Sydsudan",
      "Syrien",
      "Tadzjikistan",
      "Taiwan",
      "Tanzania",
      "Tchad",
      "Thailand",
      "Tjeckien",
      "Togo",
      "Tokelau\u00f6arna",
      "Tonga",
      "Trinidad och Tobago",
      "Tunisien",
      "Turkiet",
      "Turkmenistan",
      "Turks-och Caicos\u00f6arna",
      "Tuvalu",
      "Tyskland",
      "Uganda",
      "Ukraina",
      "Ungern",
      "Uruguay",
      "USA",
      "Uzbekistan",
      "Vanuatu",
      "Vatikanstaten",
      "Venezuela",
      "Vietnam",
      "Vitryssland",
      "Wake",
      "Wallis-och Futuna\u00f6arna",
      "Zambia",
      "Zimbabwe",
      "\u00d6sterrike",
      "\u00d6sttimor"
    ),

    states = c(
      "Stockholms l\u00e4n",
      "Uppsala l\u00e4n",
      "S\u00f6dermanlands l\u00e4n",
      "\u00d6sterg\u00f6tlands l\u00e4n",
      "J\u00f6nk\u00f6pings l\u00e4n",
      "Kronobergs l\u00e4n",
      "Kalmar l\u00e4n",
      "Gotlands l\u00e4n",
      "Blekinge l\u00e4n",
      "Sk\u00e5ne l\u00e4n",
      "Hallands l\u00e4n",
      "V\u00e4stra G\u00f6talands l\u00e4n",
      "V\u00e4rmlands l\u00e4n",
      "\u00d6rebro l\u00e4n",
      "V\u00e4stmanlands l\u00e4n",
      "Dalarnas l\u00e4n",
      "G\u00e4vleborgs l\u00e4n",
      "V\u00e4sternorrlands l\u00e4n",
      "J\u00e4mtlands l\u00e4n",
      "V\u00e4sterbottens l\u00e4n",
      "Norrbottens l\u00e4n"
    )
  ),

  public = list(
    street_prefix = function(){
      return(private$random_element(private$street_prefixes))
    },

    city_name = function(){
      return(private$random_element(private$cities))
    },

    state = function(){
      return(private$random_element(private$states))
    }
  )
)

# internet -------------------------------------------
internet_sv_SE = R6Class(
  "internet_sv_SE",
  inherit = internet_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_sv_SE$new())$.__enclos_env__$private$first_names,
    last_names = (person_sv_SE$new())$.__enclos_env__$private$last_names,
    first_name = (person_sv_SE$new())$first_name,
    last_name = (person_sv_SE$new())$last_name,
    free_email_domains = c(
      'telia.com', 'gmail.com', 'swipnet.se',
      'googlemail.com', 'live.se',
      'spray.se', 'yahoo.de'),
    tlds = c('com', 'com', 'com', 'se', 'se', 'se', 'net', 'org'),

    replacements = list(
      c('\u00e5', 'a'), c('\u00c5', 'A'),
      c('\u00e4', 'a'), c('\u00c4', 'A'),
      c('\u00f6', 'o'), c('\u00d6', 'O'),
      c("\u00e9", "e")
    )
  ),
  public = list(
    domain_word = function() {
      company = (company_sv_SE$new())$company()
      company_elements = str_split(company, " ")[[1]]
      company = private$to_ascii(company_elements[1])
      return(private$slugify(company, allow_unicode = TRUE))
    }
  )
)
# phone_number ---------------------------------------------
phone_number_sv_SE = R6Class(
  "phone_number_sv_SE",
  inherit = phone_number_init,
  cloneable = FALSE,
  private = list(
    formats = c(
      '+46 (0)8 ### ### ##',
      '+46 (0)## ## ## ##',
      '+46 (0)### ### ##',
      '08-### ### ##',
      '08-### ## ##',
      '08-## ## ##',
      '0##-### ## ##',
      '0##-## ## ##',
      '0###-## ## ##',
      '0###-### ##'
    )
  )
)

# ssn -----------------------------------------------
ssn_sv_SE = R6Class(
  "ssn_sv_SE",
  inherit = ssn_init,
  cloneable = FALSE,
  private = list(
    vat_id_formats = 'SE############',
    luhn_checksum = function(number) {
      digits = as.integer(str_split(number, "")[[1]])
      odd_digits = digits[seq(length(digits), 1, -2)]
      even_digits = digits[seq((length(digits) - 1), 1, -2)]
      checksum = sum(odd_digits)
      for (d in even_digits) {
        temp = as.integer(str_split(d * 2, "")[[1]])
        checksum = sum(checksum, temp)
      }
      return(checksum %% 10)
    },

    calculate_luhn = function(partial_number) {
      check_digit = private$luhn_checksum(
        as.integer(partial_number) * 10)
      return(ifelse(check_digit, 10 - check_digit, check_digit))
    }
  ),

  public = list(
    ssn = function(min_age = 18, max_age = 90){
      # Returns a 10 digit Swedish SSN, "Personnummer".
      # It consists of 10 digits in the form YYMMDD-SSGQ, where
      # YYMMDD is the date of birth, SSS is a serial number
      # and Q is a control character (Luhn checksum).
      # http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)

      age = ddays(private$random_int(min_age * 365, max_age * 365))
      birthday = today() - age
      pnr_date = str_sub(str_remove_all(birthday, "-"),3)
      suffix = sprintf("%03d", private$random_int(0, 998))
      luhn_checksum = private$calculate_luhn(str_c(pnr_date, suffix))
      pnr = str_c(pnr_date, "-", suffix, luhn_checksum)
      return(pnr)
    },

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

# profile   ------------
profile_sv_SE = R6Class(
  "profile_sv_SE",
  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_sv_SE$new())$name_female(),
                    (person_sv_SE$new())$name_male())
      temp = list(
        "username" = (internet_sv_SE$new())$user_name(),
        "name" = name,
        "sex" = sex,
        "address" = (address_sv_SE$new())$address(),
        "mail" = (internet_sv_SE$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_sv_SE$new())$company(),
        "ssn" = (ssn_sv_SE$new())$ssn(),
        "residence" = (address_sv_SE$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_sv_SE$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.