`
marlonyao
  • 浏览: 253242 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Javascript代码格式化器

阅读更多
JsBeautifier是一个用Javascript写的在线Javascript代码格式化工具。用javascript写的好处是只要一个浏览器就可以运行,很方便,坏处在于若是想通过命令行(例如需要脚本化)去运行时就会比较困难。之所以说比较困难,是因为JsBeautifier是可以通过Rhino来运行的,Rhino是一个用java写的javascript解释器。但是我还是闲得无聊,将这个javascript程序转化成了python。

javascript和python语言上很相近,所以将javascript程序转到python最麻烦的地方就是转换语法,例如将{...}块转换成python的缩进块,&&转成and,||转换成or,去掉if、while中多余的括号,语句中多余的冒号。

我碰到的一个困难是javascript嵌套函数可以直接改变外围函数的局部变量引用,而python嵌套函数虽然可以访问外围函数的局部变量,但却不能直接修改引用,这会使python认为它是嵌套函数的局部变量。为了解决这个问题,我创建了ctx对象,它包含嵌套函数需要直接修改的变量。

另外一个问题是python中没有switch语句,这一般不是问题,因为这可以用if...elif...else语句来模拟。问题在于javascript中switch语句可以有break,这导致控制流程直接跳到switch语句结尾处,而python中if...elif...else语句却没有相应流程跳转功能,一个容易想到的方法是使用一个flag变量来控制流程,但是这十分麻烦,尤其当中转发生在许多嵌套的if...else语句中时,flag需要一层一层地往外传递,每个分支处都需要检查flag的值。另一种方法是使用异常,用一个try...except包含整个if...elif...else语句,凡是switch中的break用raise FlowException来替代。用异常来控制流程是一种反模式,但是我实现想不出比这更妙的方法了。

代码见附件或者这里


P.S. 最近在《系统程序员成长计划》上看到用do...while(0)来实现流程跳转的方法,觉得很不错,可以用来替代用异常实现流程控制的方法。python中没有do...while语句,但很容易用while(True)来模拟。
while(True):
	# some code here...
	if not cond:
		break

可以用来替换C语言中的:do {...} while(cond)。
分享到:
评论

相关推荐

    JavaScript代码格式化工具

    JavaScript代码格式化工具是开发过程中不可或缺的辅助软件,主要用于整理和优化JS(JavaScript)源代码的格式,使得代码更易读、易维护。在实际工作中,我们常常会遇到从网络上下载或者他人分享的JavaScript代码,...

    源代码格式化工具源代码格式化软件

    JavaScript的`Prettier`是另一款流行的代码格式化器,支持多种前端技术栈,包括JS、TS、CSS、HTML等。它的配置灵活,可以通过`.prettierrc`或`.prettierignore`文件来定制格式化规则。在VS Code等编辑器中,安装相应...

    css html javascript 代码格式化源码

    5. **JavaScript代码格式化**: JavaScript是网页动态功能的核心,其代码格式化同样重要。工具如Prettier或ESLint可以帮助开发者统一代码风格,提高代码质量。这些工具可以处理括号对齐、变量命名规则、导入顺序等...

    javascript代码格式化工具

    JavaScript代码格式化工具是开发过程中不可或缺的辅助软件,主要用于整理和优化手写代码的格式,使其保持整洁、规范,提高代码可读性和团队协作效率。这类工具能够自动按照一定的编码风格对JavaScript代码进行缩进、...

    JavaScript代码格式化工具JavaScript Code Improver

    JavaScript代码格式化工具,如"JavaScript Code Improver",在编程世界中扮演着重要的角色,尤其是在JavaScript开发中。这类工具的主要目标是使代码保持整洁、规范,提高代码可读性和团队协作效率。JavaScript,作为...

    任意代码格式化(c++,c,java,c#,html,javascript,php,asp)

    任意代码格式化工具(c++代码格式化工具,c代码格式化工具,java代码格式化工具,c#代码格式化工具工具,htm代码格式化l工具,javascript代码格式化工具,php代码格式化工具,asp代码格式化工具,c++代码整理工具,c代码整理...

    代码格式化工具

    `formatCodeSegment.js` 文件则是实现代码格式化的功能主体,它包含JavaScript代码来处理用户的输入、调用相应的代码格式化库(如Prettier或ESLint)并更新预览区域的显示。JavaScript在这里起到了关键的作用,它...

    EXTJS Javascript HTML 代码格式化 工具

    4. CodeMirror:一个轻量级的在线代码编辑器,可以用于构建自己的代码格式化工具。 使用这些工具,开发者可以轻松地管理和维护EXTJS、JavaScript和HTML代码,提升开发效率和代码质量。记得定期更新工具,以获取最新...

    dreamweaver javascript代码格式化插件

    dreamweaver javascript代码格式化插件 最高可用于dw cc 2015 使用方法 把所有文件复制到 DW安装目录下 configuration/commands/ 里 使用方法 菜单-命今-jsbuautier

    javascript 代码格式化

    JavaScript代码格式化,对凌乱的JavaScript代码进行格式化,保持代码的整洁,挺好用的一个工具,虽然对于一些正则表达式的格式化效果有点不太好,但整体还是比较清晰的,毕竟我们的程序也只有那某个脚本文件是正则吧...

    Sublime Text 2 的javascript代码格式化插件JsFormat

    总的来说,JsFormat是Sublime Text 2中一款强大且实用的JavaScript代码格式化插件,通过其简洁的操作和灵活的配置,能够极大地提高JavaScript开发者的生产力。无论是初学者还是经验丰富的开发者,都应该考虑将其纳入...

    EditPlus代码格式化

    3. **JavaScript代码格式化**:对于JavaScript代码,EditPlus可以智能地识别函数、变量、条件语句等,并按标准格式重新排列,使得JS代码结构清晰,便于理解和调试。 4. **代码高亮**:除了格式化,EditPlus还支持...

    阿里代码格式化idea插件

    阿里代码格式化插件集成在IDEA中,可以方便地对Java、JavaScript、Python等多种语言的代码进行自动格式化。它遵循阿里巴巴内部制定的编码规范,这些规范涵盖了命名、注释、空格、括号、引号、导入等多个方面,确保了...

    Eclipse设置Java代码格式化(包含阿里格式化脚本).zip

    本教程将指导你如何在Eclipse中配置Java、JavaScript、CSS、HTML和XML等语言的代码格式化,特别引入了阿里集团的代码规范,以提升代码质量和可读性。 首先,我们需要了解`Java代码规范`。Java编程规范通常包括命名...

    javascript-HTML代码格式化工具

    在网上下载的很多javascript代码或者html代码,大多都是经过压缩过的,很难看懂,但是别怕,因为现在有了“javascript-HTML代码专业格式化工具”--------------------------------赶快了下载吧!

    JS代码格式化工具

    JavaScript代码格式化工具是开发过程中不可或缺的辅助软件,主要用于整理和优化手写的代码,使其保持整洁、规范的格式。在编程工作中,代码的可读性和维护性至关重要,而手动保持代码格式一致性的任务繁重且易出错。...

    很实用的JavaScript代码格式化软件

    Dreamweaver可以对HTML进行格式化,但缺乏对JS的支持,上网搜索一番,还真有我们所要的软件:JavaScript Code Improver!使用方法也非常的简单:找到(加载)所要格式化的JS文件,选择保存位置,点击运行按钮即可完成...

    Sublime Text 2 的javascript代码格式化插件zencoding

    在本话题中,我们将讨论如何在Sublime Text 2中安装和使用JavaScript代码格式化插件——Zen Coding。 Zen Coding,后来更名为Emmet,是前端开发者必备的工具之一,它提供了快速编写HTML和CSS的方法。通过简洁的缩写...

Global site tag (gtag.js) - Google Analytics