Class: DwcAgent::Cleaner
- Inherits:
-
Object
- Object
- DwcAgent::Cleaner
- Defined in:
- lib/dwc_agent/cleaner.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#clean(parsed_namae) ⇒ Hash
Cleans the passed-in namae object from the parse method and re-organizes it to better match expected Darwin Core output.
Class Method Details
.instance ⇒ Object
5 6 7 |
# File 'lib/dwc_agent/cleaner.rb', line 5 def instance Thread.current[:dwc_agent_cleaner] ||= new end |
Instance Method Details
#clean(parsed_namae) ⇒ Hash
Cleans the passed-in namae object from the parse method and re-organizes it to better match expected Darwin Core output.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/dwc_agent/cleaner.rb', line 15 def clean(parsed_namae) blank_name = { given: nil, family: nil } if parsed_namae.family && parsed_namae.family.length < 3 return blank_name end if parsed_namae.family && parsed_namae.family.length == 3 && parsed_namae.family.count('.') == 1 return blank_name end if parsed_namae.given && parsed_namae.given.length > 15 return blank_name end if parsed_namae.given && parsed_namae.given.count('.') >= 3 && /\.\s*[a-zA-Z]{4,}\s+[a-zA-Z]{1,}\./.match(parsed_namae.given) return blank_name end if parsed_namae.family && /[a-zA-Z]{2,}\.?\s+[a-zA-Z]{2,}/.match(parsed_namae.family) return blank_name end if parsed_namae.display_order =~ BLACKLIST return blank_name end if parsed_namae.given && parsed_namae.family && parsed_namae.family.count(".") > 0 && parsed_namae.family.length - parsed_namae.family.count(".") <= 3 given = parsed_namae.given family = parsed_namae.family parsed_namae.family = given parsed_namae.given = family end if parsed_namae.given && (parsed_namae.given == parsed_namae.given.upcase || parsed_namae.given == parsed_namae.given.downcase) && !parsed_namae.given.include?(".") && parsed_namae.given.length >= 4 parsed_namae.given = CapitalizeNames.capitalize(parsed_namae.given) end if parsed_namae.given && /[A-Za-z]\./.match(parsed_namae.given) parsed_namae.given = CapitalizeNames.capitalize(parsed_namae.given).sub(/[a-z]\./, &:upcase) end parsed_namae.normalize_initials family = parsed_namae.family.gsub(/\.\z/, '').strip rescue nil given = parsed_namae.given.strip rescue nil particle = parsed_namae.particle.strip rescue nil if family.nil? && !given.nil? && !given.include?(".") family = given given = nil end if !family.nil? && given.nil? && !particle.nil? given = particle.sub(/[a-z]\./, &:upcase).sub(/^(.)/) { $1.capitalize } particle = nil end if !family.nil? && (family == family.upcase || family == family.downcase) family = family.mb_chars.capitalize.to_s rescue nil end if !family.nil? && family.length <= 4 && family !~ /[aeiouy]/ return blank_name end if !family.nil? && family.match(/[A-Z]$/) return blank_name end if !family.nil? && family.match(/^[A-Z]{2}/) return blank_name end { given: given, family: family } end |