nestly.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:tripl 作者: metasoarous 项目源码 文件源码
def _translate_target(self, c, a, v):
        # Set some things up
        target = self.targets[a]
        def relative_path(p):
            p = str(p)
            if p[0:1] != '/':
                return os.path.relpath(p, c['_output_wrt'])
            else:
                return p
        # recurse for list like things
        if isinstance(v, list) or isinstance(v, SCons.Node.NodeList):
            return [self._translate_target(c, a, v_) for v_ in v]
        elif isinstance(v, dict):
            v = copy.deepcopy(v)
        elif isinstance(v, SCons.Node.FS.Entry) or isinstance(v, SCons.Node.FS.File):
            # Can add more metadata here as needed
            ident = uuid.uuid3(c[self.nest_levels[self.current_nest]['ident_attr']], str(v))
            self.file_idents[str(v)] = ident
            v = {'db:ident': ident,
                 'tripl.file:path': relative_path(v),
                 # This will be super cool...
                 'tripl.file:sources': [{'tripl.file:path': relative_path(p)} for p in v.sources]}
        # This is where the metadata function gets called if it is callable
        metadata = target['metadata'](c, v) if callable(target['metadata']) else (target['metadata'] or {})
        if isinstance(v, dict):
            # Here we merge in the metadata
            v.update(metadata)
        elif metadata:
            metadata['tripl.nestly.target:value'] = v
            v = metadata
        # TODO namespace all keywords
        return v
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号