然而,生态下,并没有类似或者生态的格式化工具库,所以我们需要手动实现一个格式化工具库,或者让社区的或者代码能够在我们的程序中运行,内化为我们程序的一部分 。
相比较前者,后者的代码实现更少一些,实现速度更快一些,所以我们就用这个方式来玩吧 。
实战:询问 GPT 如何实现基础功能
在前文中,我们提到了开源社区现在的各种实现,以及我们计划使用的方案 。在实际的时候,我们可以借助来完成逻辑 。
为了演示最低成本的实现,这里我们虽然能够使用 GPT-4,但是考虑到多数人还是有使用限制,我们用 GPT 3.5 来实现我们所需要的东西 。
调整版的格式化程序实现
虽然版的格式化程序有用户吐槽,但其实,只要我们修正其中的“ cases”,程序还是能够使用的 。完整代码在项目中的 /nginx-///.js,两百行出头 。整体结构如下:
/*** - Soulteary Modify the JavaScript version for golang execution, under [Apache-2.0 license], 18/04/2023:*- simplify the program, fix bugs, improve running speed, and allow running in golang*- https://github.com/soulteary/nginx-formatter** History:* - Yosef Ported the JavaScript beautifier under [Apache-2.0 license], 24/08/2016*- https://github.com/vasilevich/nginxbeautifier* - Slomkowski Created a beautifier for nginx config files with Python under [Apache-2.0 license], 24/06/2016*- https://github.com/1connect/nginx-config-formatter (https://github.com/slomkowski/nginx-config-formatter)*//*** Grabs text in between two seperators seperator1 thetextIwant seperator2* @param {string} input String to seperate* @param {string} seperator1 The first seperator to use* @param {string} seperator2 The second seperator to use* @return {string}*/function extractTextBySeperator(input, seperator1, seperator2) {...}/*** Grabs text in between two seperators seperator1 thetextIwant seperator2* @param {string} input String to seperate* @param {string} seperator1 The first seperator to use* @param {string} seperator2 The second seperator to use* @return {object}*/function extractAllPossibleText(input, seperator1, seperator2) {...}/*** @param {string} single_line the whole nginx config* @return {string} stripped out string without multi spaces*/function strip_line(single_line) {...}/*** @param {string} configContents the whole nginx config*/function clean_lines(configContents) {...}function join_opening_bracket(lines) {...}function fold_empty_brackets(lines) {...}function add_empty_line_after_nginx_directives(lines) {...}function fixDollarVar(lines) {...}var options = { INDENTATION: "\t" };function perform_indentation(lines) {...}function FormatNginxConf(text, indentSize = 2, indentChar = " ") {...}
在实现的过程中,你有任何懒得动手的地方,都可以交给,比如张贴之前的老代码,询问它这段代码的含义:
尤其是对于陈旧的老代码(特别是别人写的),我们可以通过来进行含义解读,并且要求它来一些代码的单元测试 。这样可以极大的缩短我们在阅读代码上花费的时间 。
文章插图
当然,很多时候,它生成的内容是有问题的,需要我们进行仔细甄别或进行额外的测试验证 。但即使如此,也会比我们从零到一自己搞来的快 。
让能够在中运行
前文提到,因为中没有类似或者类似的工具库,所以最快完成我们需求的方式,除了切换技术栈之外,就是将这些不同语言的程序,在中直接运行 。
这里我们询问下 :“如何在中运行代码” 。
能够看到,在的回答中,推荐我们使用 goja,并给出了最简单的实现 。这个项目确实是一个有趣的项目,使用纯 Go 实现的 ECMA 5.1 解析引擎,能让我们在中直接运行代码 。
- 小学生暑假必看|一口气整理18部高分纪录片 附片源 小学生需要知道的中国之最
- 《我的世界》打破12项吉尼斯记录 mc中的吉尼斯记录
- 世界上最高且在世的人,入选世界吉尼斯记录,身高2米51 史上最高的人吉尼斯记录
- 旭旭宝宝即将完成一项新的成就目前全斗鱼仅有四人能达到这高度 大司马破吉尼斯记录
- 适合集体表演的节目
- 世界上名字最长的城市,竟被列入吉尼斯纪录,翻译成中文仅2字 哪个城市有吉尼斯记录
- 雅加达是哪个国家的
- 推荐三部讲述蛇类的纪录片 世界蛇王奥斯汀吉尼斯记录
- 中国第一巨人鲍喜顺:不听医生忠告执意生子,如今儿子身高1.69米 中国吉尼斯记录最多的人
- 五一节放假