'Evaluate the entire expression in the environment, returning
a Unicode string.'

def evaluate(self, env):

    out = []
    for part in self.parts:
        if isinstance(part, six.string_types):
            out.append(part)
        else:
            out.append(part.evaluate(env))
    return u''.join(map(six.text_type, out))
