Class: Lobbyliste::Factories::PersonFactory
- Defined in:
- lib/lobbyliste/factories/person_factory.rb
Overview
This class is used to build a person from raw line data It has to split titles from the actual name
Constant Summary collapse
- REGEX =
A list of regular expressions that try to match any titles that might occur
[ # Prof titles /Prof\.?/, # Dr. titles /(PhD|Dr\.(([a-z]+\.?)+|(\-\w+\.?))*)/, # Dipl. titles /(Magister|(Dipl[\.|\-]+)([\w|ÖöÄäÜüß]*[\.|\-]*)*)/, # other academic abbreviations /\b([a-z|A-Z]{2,}\.)+/, # h.c. /h\.\s?c\./, # general abbreviations /\(?\b(M\.?Sc|B\.?Sc|B\.?sc|FH|fh|BA|Ba|TH|Th|VWA|univ|US|PD|RA|CCM|LD|Ing\.|OTL|CISA|CIA|CISM|CRISC|StB|vBP|StD|habil|med)\b\)?/, # job titles /((^\s*und)?(Mathematiker|(Bundes)?Vorstand|^Arzt|Assistent|Generalstabs[aä]rzt|Augenoptikermeister|Bankkauf|Bau-Ing\.|Betriebswirtschaftslehre|Mediziner|agrar|Schneidwerkzeugmechanikermeister|Studienassessor|Gesundheitsökonom|Syndikus|Straßenbaumeister|^Bruder|Pater|Prälat|Theologe|Jurist|\bmed|Ministerpräsident|(Medizin)?pädagog|Verwaltungs-Wirt|Veterinär|^Kauf|Generalleutnant|General|Generalarzt|Ergotherapeut|Fregattenkapitän|Agrarbiolog|Amtsanw[aä]lt|Apotheker|(Freie )?Architekt|(Berg-)?Assessor|Betriebswirt|^Bischof( von [a-z]+)?|Botschafter|(vereidigter )?Buchprüfer|Bundesbankoberamtsrat|Bundesinnungsmeister|Bundesminister|Bundespräsident|Bundestagspräsident|Bürgermeister|Chefapotheker|Diakon|Dompropst|Augenoptiker|Optometrist|Biolog|Brennmeister|Chemiker|((Kommunikations|Grafik)[\-\s]?)?Designer|Finanzwirt|Forstwirt|Geograph|Geolog|Geophysiker|Handelslehrer|Holzwirt|Informatiker|Jurist|Kauf|Mathematiker|Medizinpädagog|Meteorolog|physiker|Politolog|Psycholog|Pädagog|Rechtspfleger|Restaurator|Sachverständig|Sozialpädagog|Sozialwirt|Sozialwissenschaftler|Soziolog|Stomatolog|Verwaltungsbetriebswirt|Verwaltungswirt|Verwaltungswissenschaftler|Volkswirt|Wirtschafts(ing)?|Wirtschaftsjurist|Ökonom|Übersetzer|Domkapitular|Probst|Finanzfachwirt|(Forst|Bau)assessor|Hauptfeldwebel|Hauptmann|Honorar|Honorargeneralkonsul|Honorarkonsul|Justizminister|Kapitän(leutnant)?|Konsul|Land(es)?rat|Landwirtschaftsmeister|Lohnsteuerberater|Landwirtschaftsdirektor|Luftverkehrskauf|Magistratsr[aä]t|BreigGen|Generalmajor|Major|Minist|Ministerialdirektor|Ministerialdirigent|Monsignore|Notar|Oberamtsanw[aä]lt|Oberbürgermeister|Oberfeldarzt|Obermeister|Oberst|Oberstaatsanw[aä]lt|Oberstabsboots|Oberstabsfeldwebel|Oberstleutnant|Oberstudiendirektor|Staatssekretär|Parlamentarischer|Parlamentspräsident|Patentanw[aä]lt|(Landesjugend)?[Pp]farrer|Politikwissenschaftler|Privatdozent|Priv(\\.|at)-?Dozent|RA|Ran|Fachanwalt( für [a-z]+)?|Realschulrektor|Rechtsreferent|Regierungsamts(rat)?|Regionspräsident|Revieroberjäger|(Vorsitzender? )?Richter(in)?( am [a-zA-Z]+)?|Senator|Staats(minister|sekretär)|Stabsfeldwebel|Stabshauptmann|(Steuer|Wirtschafts)(berater|prüfer)|Stuckateurmeister|Studiendirektor|Studienrat|Uni(v(ersitäts)?)?|Verleger|Rechtsjournalist|Rechtsjurist|Veterinärdirektor|Vizepräsident des Verwaltungsgerichts|Visuelle Kommunikation|Zahntechnikermeister)(er|e|\s?in|mann|frau)?)(\s?am\s(Finanzgericht|Bundesverwaltungsgerichtshof|Verwaltungsgerichtshof))?(\bD\.)?(\s?a\.D\.)?([\.\-,\s\/]+|$)/, # Beamtenbezeichnung? /^D\.\s/, # more abbreviations /\b[A-ZÜÄÖ]{2,}\b/, # Everything after first colon /,.*$/ ]
Class Method Summary collapse
-
.build(raw_data) ⇒ Lobbylist::Person
Builds a new person, might be nil if the line does not represent a person.
Instance Method Summary collapse
-
#initialize(raw_data) ⇒ PersonFactory
constructor
A new instance of PersonFactory.
- #is_person? ⇒ Boolean
- #name ⇒ Object
- #titles ⇒ Object
Constructor Details
#initialize(raw_data) ⇒ PersonFactory
Returns a new instance of PersonFactory.
39 40 41 42 |
# File 'lib/lobbyliste/factories/person_factory.rb', line 39 def initialize(raw_data) @raw_data = raw_data @name = nil end |
Class Method Details
.build(raw_data) ⇒ Lobbylist::Person
Returns builds a new person, might be nil if the line does not represent a person.
34 35 36 37 |
# File 'lib/lobbyliste/factories/person_factory.rb', line 34 def self.build(raw_data) factory = new(raw_data) factory.is_person? ? ::Lobbyliste::Person.new(factory.name,factory.titles,raw_data) : nil end |
Instance Method Details
#is_person? ⇒ Boolean
59 60 61 |
# File 'lib/lobbyliste/factories/person_factory.rb', line 59 def is_person? !name.nil? && name.length > 2 && name.include?(" ") end |
#name ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/lobbyliste/factories/person_factory.rb', line 44 def name return @name if @name @name = @raw_data.dup REGEX.each do |regex| @name = clean(@name.gsub(regex,"")) end @name end |
#titles ⇒ Object
55 56 57 |
# File 'lib/lobbyliste/factories/person_factory.rb', line 55 def titles @raw_data.gsub(name,"").split(", ").map(&:squish).reject{|x| x==""} end |