def expand_partial( vars )
result = []
rest = []
defined = false
@variable_specs.each do | var, expand , max_length |
if vars.key? var
if Utils.def? vars[var]
if result.any? && !self.class::SEPARATOR.empty?
result.push( Literal.new(self.class::SEPARATOR) )
end
one = expand_one(var, vars[var], expand, max_length)
result.push( Literal.new(Array(one).join(self.class::SEPARATOR)) )
end
if expand
rest << [var, expand, max_length]
else
result.push( self.class::FOLLOW_UP.new([[var,expand,max_length]]) )
end
else
rest.push( [var,expand,max_length] )
end
end
if result.any?
unless self.class::PREFIX.empty? || empty_literals?( result )
result.unshift( Literal.new(self.class::PREFIX) )
end
result.push( self.class::BULK_FOLLOW_UP.new(rest) ) if rest.size != 0
return result
else
return [ self ]
end
end