module ParseUtil
Public Class Methods
capitalize(string)
click to toggle source
# File lib/oddb2xml/parslet_compositions.rb, line 61 def self.capitalize(string) string.split(/\s+/u).collect { |word| word.capitalize }.join(" ").strip end
nr_saved_parsed_used()
click to toggle source
# File lib/oddb2xml/parslet_compositions.rb, line 65 def self.nr_saved_parsed_used @@nr_saved_parsed_used end
parse_compositions(composition_text, active_agents_string = "")
click to toggle source
# File lib/oddb2xml/parslet_compositions.rb, line 69 def self.parse_compositions(composition_text, active_agents_string = "") active_agents = active_agents_string ? active_agents_string.delete("[").downcase.split(/,\s+/) : [] key = [composition_text, active_agents] saved_value = @@saved_parsed[key] if saved_value @@nr_saved_parsed_used += 1 return saved_value end comps = [] lines = composition_text.gsub(/\r\n?/u, "\n").split(/\n/u) lines.select do |line| composition = ParseComposition.from_string(line) if composition.is_a?(ParseComposition) composition.substances.each do |substance_item| active_substance_name = substance_item.name.downcase.sub(/^cum\s/, "") substance_item.is_active_agent = !active_agents.find { |x| /#{x.downcase .gsub('(', '\(') .gsub(')', '\)') .gsub('[', '\[') .gsub(']', '\]') }($|\s)/ .match(active_substance_name) }.nil? substance_item.is_active_agent = true if substance_item.chemical_substance && active_agents.find { |x| x.downcase.eql?(substance_item.chemical_substance.name.downcase) } end comps << composition end end comps << ParseComposition.new(composition_text.split(/,|:|\(/)[0]) if comps.size == 0 @@saved_parsed[key] = comps comps rescue => error puts "error #{error}" # binding.pry end