def complexRender()

in runnable-hub/python/runnable_workers/processWorker/worker.py [0:0]


    def complexRender(self, data: Dict, target):
        if isinstance(target, dict):
            return {self.complexRender(data, key): self.complexRender(data, value) for key, value in target.items()}
        elif isinstance(target, list):
            return [self.complexRender(data, value) for value in target]
        elif isinstance(target, str):
            target = target.strip()
            # 如果整个字符串只有 ${{ ... }} 则直接取里面的内容,保留变量类型
            if target.startswith("${{") and target.endswith("}}"):
                fetchValue = {}
                self.jinjaNewEnv.from_string(target[:-2] + "|save(fetchValue)}}").render(fetchValue=fetchValue, **data)
                return fetchValue["save"]
            else:
                return self.jinjaNewEnv.from_string(target).render(**data)
        else:
            return target