2 个不稳定版本
0.2.0 | 2022年9月29日 |
---|---|
0.1.0 | 2022年9月6日 |
#163 in 值格式化
44KB
1K SLoC
QML 格式化器
该仓库是一个简单的项目,实现了基本的 qml 格式化器,该格式化器用于我内部的项目中。
它是默认 QML 格式化器的替代品,有时会破坏我们的代码,因此我们想要创建自己的应用程序来仅使用所需规则来格式化文件。
我不期望在运行时添加任何配置选项。
目前格式化器可以
- 从文件开始和结束处删除空行
- 将多个空行连接成一行
- 在末尾添加空行
- 在 ? 前后添加空格
- 格式化 if/else/for 单行语句
- 处理 ', " 和 ` 内部的字符串
- 格式化其他类内部的类
用法
格式化器在提供的文件夹内递归地检查 qml 文件
qml_formatter folder_with_files_to_check folder_with_files_to_check2 -efolder_with_excluded_files -efolder_with_excluded_files2
例如。
qml_formatter /home/a /home/b -e/home/a/not_to_check -e/home/a/completelly
将列出 /home/a
和 /home/b
文件夹内所有不在 /home/a/not_to_check
和 /home/a/completelly
内的文件。
默认情况下,应用程序以交互模式运行,需要确认格式化,但还有一个额外的参数 NO_QUESTION
,它可以在不提问的情况下格式化文件,例如。
qml_formatter /home/a NO_QUESTION
转换示例
之前
import QtQuick
import "../../commons/elements"
import "../preparationScreen" as ExamCommons
Text {
id : root
property var able: is_able? no_able: very_able
signal pressed()
image : "qrc://image.svg"
layer.effect: ElevationEffect
{
elevation: elevation
}
}
之后
import QtQuick
import "../../commons/elements"
import "../preparationScreen" as ExamCommons
Text {
id: root
property var able: is_able ? no_able : very_able
signal pressed()
image: "qrc://image.svg"
layer.effect: ElevationEffect {
elevation: elevation
}
}
待办事项
- 支持 JavaScript/HTML/C++ 注释
- switch/case
- 更好的多行支持
局限性
没有 {} 的多行 for/if/else
for(abcd)
if(abcd)
DBCC()
将被格式化为
for(abcd)
if(abcd)
DBCC()
作为解决方案,始终使用完全支持的括号
for(abcd) {
if(abcd) {
DBCC()
}
}
它适用于简单的单行语句
for(ABCD)
BCDF()
将成为
for(ABCD)
BCDF()
依赖项
~0.1–7MB
~42K SLoC