def value_by_path2(path, data, pdata, rdata, plugin)
if( path.is_a?(String) )
if( path =~ /([\?\|])/ )
case $1[0]
when ?|
paths = path.split(PathUnion)
return paths.collect{|path|
path.strip!
value_by_path2(path, data, pdata, rdata, plugin)
}.flatten
when ??
paths = path.split(PathIfNot)
for path in paths
path.strip!
vals = value_by_path2(path, data, pdata, rdata, plugin)
if( vals.nil? || vals.empty? )
next
end
break
end
return vals
end
end
ids = path_split(path)
else
ids = path.dup
end
x = value_by_path(ids, data, pdata, rdata, plugin)
if( x )
case x
when Array
x.reject!{|e|e.nil?}
if( x.size == 1 )
x[0]
else
x
end
else
x
end
else
[]
end
end