common.py 文件源码

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

项目:metapensiero.pj 作者: azazel75 项目源码 文件源码
def _build_call_isinstance(tgt, cls_or_seq):
    """Helper to build the translate the equivalence of ``isinstance(foo, Bar)``
    to ``foo instanceof Bar`` and ``isinstance(Foo, (Bar, Zoo))`` to
    ``foo instanceof Bar || foo instanceof Zoo``.
    """
    if isinstance(cls_or_seq, (ast.Tuple, ast.List, ast.Set)):
        classes = cls_or_seq.elts
        args = tuple((tgt, c) for c in classes)
        return JSMultipleArgsOp(JSOpInstanceof(), JSOpOr(), *args)
    else:
        cls = cls_or_seq
        if isinstance(cls, ast.Name) and cls.id == 'str':
            return JSMultipleArgsOp(
                (JSOpStrongEq(), JSOpInstanceof()),
                JSOpOr(),
                (JSUnaryOp(JSOpTypeof(), tgt), JSStr('string')),
                (tgt, JSName('String'))
            )
        elif isinstance(cls, ast.Name) and cls.id in ['int', 'float']:
            return JSMultipleArgsOp(
                (JSOpStrongEq(), JSOpInstanceof()),
                JSOpOr(),
                (JSUnaryOp(JSOpTypeof(), tgt), JSStr('number')),
                (tgt, JSName('Number'))
            )
        else:
            return JSBinOp(tgt, JSOpInstanceof(), cls)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号