class Ladyboy::Parser
Attributes
first_name[R]
full_name[R]
gender[R]
sex[R]
Public Class Methods
new(full_name)
click to toggle source
# File lib/ladyboy/parser.rb, line 6 def initialize(full_name) @full_name = full_name parse! end
Private Instance Methods
major_name_and_sex_for_full_name(full_name)
click to toggle source
# File lib/ladyboy/parser.rb, line 31 def major_name_and_sex_for_full_name(full_name) tokens = full_name.to_s.scan(/[[:word:]]+/) [2, 1].map do |size| tokens.each_cons(size).map.with_index do |slice, i| token = slice * " " name = normalize_name(token) if name sex = Ladyboy.sexes[name] || Ladyboy.sexes_es[name] || Ladyboy.sexes_es[token] || [nil, Float::INFINITY] [name, *sex, -size, i] end end end.flatten(1).compact.sort_by{ |n| [n[4], n[3]] }.first end
normalize_name(name)
click to toggle source
# File lib/ladyboy/parser.rb, line 13 def normalize_name(name) name = Unicode.downcase(name.to_s).gsub(/\d+/, '').tr( "ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž", "AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz" ) # .gsub("ё", "е") (Ladyboy.sexes[Ladyboy.names[name]] && Ladyboy.names[name]) or (Ladyboy.sexes[name] && name) or (Ladyboy.sexes_es[name] && name) end
parse!()
click to toggle source
# File lib/ladyboy/parser.rb, line 23 def parse! major = major_name_and_sex_for_full_name(@full_name) return unless major @first_name = major[0].split(" ").map{|m| Unicode.capitalize(m) } * " " if major[0] @gender = SEX[major[1]] end