我希望得到一些帮助,将一个相对简单的称为boolean.py (包执行布尔代数操作)的python包转到javascript中,使用transcrypt作为我的选择。
我迄今所做的事情:
inspect支持的transcrypt模块删除SuperClassName.__init__()调用而不是super(SuperClassName, self).__init__(),因为transcrypt只支持简单的单用例继承(和python 3语法)。您可以在这个github分支机构中找到名为transcrypt的当前代码。
现在,好消息是boolean.py本质上是boolean/boolean.py下的单个.py文件,其他一切都只是project结构。坏消息是,boolean.py运行在python2和python3上,我不知道这是否是造成我将要描述的当前问题的原因:
在阅读了跨隐窝文档的相关部分之后,我传输了该文件:
cd boolean/ && transcrypt boolean.py这给了我一个关于basestring的无害警告,并使用boolean.js和boolean.min.js创建了__javascript__文件夹。到现在为止还好。
在__javascript__文件夹旁边创建要测试的boolean.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>transcrypt boolean.py</title>
</head>
<body>
<script src="__javascript__/boolean.js"></script>
</body>
</html>但是,当我在火狐中加载boolean.html时,控制台会发出警告:
TypeError: can't assign to properties of (new String("all_feature_namesnested_scopes,generators,division,absolute_import,with_statement,print_function,unicode_literals,barry_as_FLUFL,generator_stop")): not an object相反,我期待看到的是一个具有boolean子对象的BooleanAlgebra对象。参考hello和pong的transcrypt示例,可以看到它相应地在window上创建了hello和pong对象。
你能帮我解释一下我做错了什么吗?
发布于 2017-06-10 11:20:14
我花了很长时间试图让您的库与Transcrypt一起工作,遇到了几个问题:
boolean.py库使用来自CPython发行版的一些模块,如__future__和unittest,这些模块还不能用于Transcrypt。这是一个很容易解决的问题。您可以使用Transcrypt的自动测试工具对Transcrypt和CPython版本的boolean.py进行背靠背测试。编写一个非常调优的unittest版本,等等。TypeError)尚未在Transcrypt中实现。type函数目前只定义了一个参数,类似于return type(base_class.__name__, (base_class,), {})这样的函数现在无法工作。__hash__算子函数。这是由于需要与JavaScript的互操作性。类似于{‘鸟’:‘蛋’,‘人’:‘婴儿’}被编译成一个JavaScript对象文本,这有助于像许多JavaScript库中一样使用对象文字进行初始化。values ()方法dict。它将在下一次提交Transcrypt时添加。这些都是我能找到的问题。也许还有更多,但我缺乏boolean.py的理解,以便在合理的时间内找到它们。
对我来说,最终的结果是我可以让它编译,但是在解析阶段开始后,我无法让它正常运行。
我的期望是,对于熟悉您的库的人来说,这一切都可以通过可行的解决办法来解决,因为我在您的库中没有看到任何代码是真正超出了Transcrypt的范围。
Transcrypt永远不会是100% CPython兼容的,因为生成的代码应该与本地JavaScript一样快速和紧凑。但如果你遇到明显的遗漏,如dict.values,他们将被添加。也有像string.isalpha这样的边境病例。只要它们是小函数,我就没有理由不添加它们。只需向https://github.com/qquick/Transcrypt上的问题添加一个特性请求即可。
像frozenset这样的东西不太可能被添加到核心代码中,尽管这样的数据结构在库中的贡献当然是值得欢迎的。
注意,如果需要,还可以在任何地方插入JavaScript代码的任意片段。
https://stackoverflow.com/questions/44463861
复制相似问题