74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/oddb2xml/parslet_compositions.rb', line 74
def ParseUtil.parse_compositions(composition_text, active_agents_string = '')
active_agents = active_agents_string ? active_agents_string.gsub('[', '').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 and 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}"
end
|