Skip to content

Commit 40edf82

Browse files
authored
fix: autocorrect config (#98)
* fix: autocorrect config * chore: apply autocorrect
1 parent 3e9a46f commit 40edf82

39 files changed

Lines changed: 210 additions & 208 deletions

.autocorrectrc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
file_types:
2-
smd: markdown
3-
shtml: html
4-
1+
# yaml-language-server: $schema=https://huacnlee.github.io/autocorrect/schema.json
52
rules:
63
space_word: 1
74
space_punctuation: 1
85
fullwidth: 1
6+
fileTypes:
7+
smd: markdown
8+
shtml: html
9+
context:
10+
codeblock: 1

content/contributing.smd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文
1414
## [供稿方式]($heading.id('contribute'))
1515

1616
1. Fork 仓库 https://github.com/zigcc/zigcc.github.io
17-
2. 在 `content/post` 内添加自己的文章(smd格式),文件命名为: `${YYYY}-${MM}-${DD}-${SLUG}.smd`
17+
2. 在 `content/post` 内添加自己的文章(smd 格式),文件命名为: `${YYYY}-${MM}-${DD}-${SLUG}.smd`
1818
3. 文件开始需要包含一些描述信息,例如:
1919

2020
```ziggy

content/learn/coding-in-zig.smd

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ pub fn main() !void {
135135
try stdout.print("Please enter a name: ", .{});
136136
if (try stdin.readUntilDelimiterOrEof(&buf, '\n')) |line| {
137137
var name = line;
138-
// Windows平台换行以`\r\n`结束
138+
// Windows 平台换行以 `\r\n` 结束
139139
// 所以需要截取\r以获取控制台输入字符
140140
if (builtin.os.tag == .windows) {
141141
name = @constCast(std.mem.trimRight(u8, name, "\r"));
@@ -222,7 +222,7 @@ defer {
222222

223223
现在你可以忘掉我们的 `IntList` 和我们创建的通用替代方案了。Zig 标准库中有一个动态数组实现:`std.ArrayList(T)`。
224224

225-
它是相当标准的东西,但由于它如此普遍需要和使用的数据结构,值得看看它的实际应用:
225+
它是相当标准的东西,但由于它如此普遍需要和使用的数据结构,值得看看它的实际应用
226226

227227
```zig
228228
const std = @import("std");
@@ -459,7 +459,7 @@ zig build install -Doptimize=ReleaseSmall -Dtarget=x86_64-windows-gnu
459459
除了默认的『安装』步骤外,可执行文件通常还会增加两个步骤:『运行』和『测试』。一个库可能只有一个『测试』步骤。对于基本的无参数即可运行的程序来说,只需要在构建文件的最后添加四行:
460460

461461
```zig
462-
// 在这行代码后添加下面的代码: b.installArtifact(exe);
462+
// 在这行代码后添加下面的代码b.installArtifact(exe);
463463

464464
const run_cmd = b.addRunArtifact(exe);
465465
run_cmd.step.dependOn(b.getInstallStep());
@@ -495,7 +495,7 @@ test "dummy build test" {
495495

496496
现在运行 `zig build test`时,应该会出现测试失败。如果你修复了测试,并再次运行 `zig build test`,你将不会得到任何输出。默认情况下,Zig 的测试运行程序只在失败时输出结果。如果你像我一样,无论成功还是失败,都想要一份总结,那就使用 `zig build test --summary all`。
497497

498-
这是启动和运行构建系统所需的最低配置。但是请放心,如果你需要构建你的程序,Zig 内置的功能大概率能覆盖你的需求。最后,你可以(也应该)在你的项目根目录下使用 `zig init`,让 Zig 为你创建一个文档齐全的 `build.zig` 文件。
498+
这是启动和运行构建系统所需的最低配置。但是请放心如果你需要构建你的程序,Zig 内置的功能大概率能覆盖你的需求。最后,你可以(也应该)在你的项目根目录下使用 `zig init`,让 Zig 为你创建一个文档齐全的 `build.zig` 文件。
499499

500500
## [第三方依赖]($heading.id('third-party-dependencies'))
501501

@@ -655,12 +655,12 @@ _ = b.addModule("calc", .{
655655
要使用这一依赖关系,我们需要对 `build.zig` 进行一处修改:
656656

657657
```zig
658-
// 将这些代码:
658+
// 将这些代码
659659
const calc_module = b.addModule("calc", .{
660660
.root_source_file = b.path("calc/calc.zig"),
661661
});
662662

663-
// 替换成:
663+
// 替换成
664664
const calc_dep = b.dependency("calc", .{.target = target,.optimize = optimize});
665665
const calc_module = calc_dep.module("calc");
666666
```

content/learn/heap-memory.smd

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ fn allocLower(allocator: Allocator, str: []const u8) ![]const u8 {
143143
}
144144
```
145145

146-
上面的代码没问题。但以下用法不是:
146+
上面的代码没问题。但以下用法不是
147147

148148
```zig
149149
// 对于这个特定的代码,我们应该使用 std.ascii.eqlIgnoreCase
@@ -290,7 +290,7 @@ pub fn main() !void {
290290
const T = std.heap.GeneralPurposeAllocator(.{});
291291
var gpa = T{};
292292

293-
// 等同于:
293+
// 等同于
294294

295295
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
296296
```
@@ -421,7 +421,7 @@ var larger = try self.allocator.alloc(i64, len * 2);
421421
self.allocator.free(self.items);
422422
```
423423

424-
将`items`复制到我们的 `larger` 切片中后, 添加最后一行`free`可以解决泄漏的问题。如果运行 `zig test learning.zig`,便不会再有错误。
424+
将`items`复制到我们的 `larger` 切片中后添加最后一行`free`可以解决泄漏的问题。如果运行 `zig test learning.zig`,便不会再有错误。
425425

426426
## [ArenaAllocator]($heading.id('arena-allocator'))
427427

@@ -504,7 +504,7 @@ defer list.deinit();
504504
...
505505
```
506506

507-
由于 `IntList` 接受的参数是 `std.mem.Allocator`, 因此我们不需要做什么改变。如果 `IntList`内部创建了自己的 `ArenaAllocator`,那也是可行的。允许在`ArenaAllocator`内部创建`ArenaAllocator`。
507+
由于 `IntList` 接受的参数是 `std.mem.Allocator`,因此我们不需要做什么改变。如果 `IntList`内部创建了自己的 `ArenaAllocator`,那也是可行的。允许在`ArenaAllocator`内部创建`ArenaAllocator`。
508508

509509
最后举个简单的例子,我上面提到的 HTTP 服务器在响应中暴露了一个 `ArenaAllocator`。一旦发送了响应,它就会被清空。由于`ArenaAllocator`的生命周期可以预测(从请求开始到请求结束),因此它是一种高效的选择。就性能和易用性而言,它都是高效的。
510510

content/learn/language-overview-1.smd

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ pub const User = struct {
3939

4040
## [模块引用]($heading.id('module-reference'))
4141

42-
很少有程序是在没有标准库或外部库的情况下以单个文件编写的。我们的第一个程序也不例外,它使用 Zig 的标准库来进行打印输出。 Zig 的模块系统非常简单,只依赖于 `@import` 函数和 `pub` 关键字(使代码可以在当前文件外部访问)。
42+
很少有程序是在没有标准库或外部库的情况下以单个文件编写的。我们的第一个程序也不例外,它使用 Zig 的标准库来进行打印输出。Zig 的模块系统非常简单,只依赖于 `@import` 函数和 `pub` 关键字(使代码可以在当前文件外部访问)。
4343

4444
> 以 `@` 开头的函数是内置函数。它们是由编译器提供的,而不是标准库提供的。
4545

46-
我们通过指定模块名称来引用它。 Zig 的标准库以 `std` 作为模块名。要引用特定文件,需要使用相对路径。例如,将 `User` 结构移动到它自己的文件中,比如 `models/user.zig`:
46+
我们通过指定模块名称来引用它。Zig 的标准库以 `std` 作为模块名。要引用特定文件,需要使用相对路径。例如,将 `User` 结构移动到它自己的文件中,比如 `models/user.zig`:
4747

4848
```zig
4949
// models/user.zig
@@ -295,7 +295,7 @@ const a = [_]i32{1, 2, 3, 4, 5};
295295
const b = a[1..4];
296296
```
297297

298-
在上述代码中, `b` 是一个长度为 3 的切片,并且是一个指向 `a` 的指针。但是因为我们使用编译时已知的值来对数组进行切片(即 `1` 和 `4`)所以长度 `3` 在编译时也是已知。 Zig 编译器能够分析出来这些信息,因此 `b` 不是一个切片,而是一个指向长度为 3 的整数数组的指针。具体来说,它的类型是 `*const [3]i32`。所以这个切片的示例被 Zig 编译器的强大推导能力挫败了。
298+
在上述代码中, `b` 是一个长度为 3 的切片,并且是一个指向 `a` 的指针。但是因为我们使用编译时已知的值来对数组进行切片(即 `1` 和 `4`)所以长度 `3` 在编译时也是已知。Zig 编译器能够分析出来这些信息,因此 `b` 不是一个切片,而是一个指向长度为 3 的整数数组的指针。具体来说,它的类型是 `*const [3]i32`。所以这个切片的示例被 Zig 编译器的强大推导能力挫败了。
299299

300300
在实际代码中,切片的使用可能会多于数组。无论好坏,程序的运行时信息往往多于编译时信息。不过,在下面这个例子中,我们必须欺骗 Zig 编译器才能得到我们想要的示例:
301301

content/learn/pointers.smd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ pub fn main() void {
130130
}
131131
```
132132

133-
我们最初的目标是通过`levelUp`函数将用户的`power`值增加 1 。我们已经让代码编译通过,但当我们打印`power`时,它仍然是原始值。虽然有点跳跃,但让我们修改代码,在 `main` 和 `levelUp` 中打印 `user`的地址:
133+
我们最初的目标是通过`levelUp`函数将用户的`power`值增加 1。我们已经让代码编译通过,但当我们打印`power`时,它仍然是原始值。虽然有点跳跃,但让我们修改代码,在 `main` 和 `levelUp` 中打印 `user`的地址:
134134

135135
```zig
136136
pub fn main() void {

content/learn/stack-memory.smd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ levelUp: user -> ------------- (id: 1043368ec) |
5757
-------------
5858
```
5959

60-
`levelUp` 紧接在 `main` 之后是有原因的:这是我们的简化版调用栈。当我们的程序启动时,`main` 及其局部变量被推入调用栈。当 `levelUp` 被调用时,它的参数和任何局部变量都会被添加到调用栈上。重要的是,当 `levelUp` 返回时,它会从栈中弹出。 在 `levelUp` 返回并且控制权回到 `main` 后,我们的调用栈如下所示:
60+
`levelUp` 紧接在 `main` 之后是有原因的:这是我们的简化版调用栈。当我们的程序启动时,`main` 及其局部变量被推入调用栈。当 `levelUp` 被调用时,它的参数和任何局部变量都会被添加到调用栈上。重要的是,当 `levelUp` 返回时,它会从栈中弹出。在 `levelUp` 返回并且控制权回到 `main` 后,我们的调用栈如下所示:
6161

6262
```
6363
main: user -> ------------- (id: 1043368d0)
@@ -128,7 +128,7 @@ User 1 has power of 10
128128
User 2 has power of 20
129129
```
130130

131-
但实际上:
131+
但实际上
132132

133133
```bash
134134
User 2 has power of 20

content/learn/style-guide.smd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
> 原文地址:<https://www.openmymind.net/learning_zig/style_guide>
1010

11-
本小节的主要内容是介绍 Zig 编译器强制遵守的 2 条规则,以及 Zig 标准库的命名惯例(naming convention)。
11+
本小节的主要内容是介绍 Zig 编译器强制遵守的 2 条规则,以及 Zig 标准库的命名惯例 (naming convention)。
1212

1313
## [未使用变量 Unused Variable]($heading.id('unused-variable'))
1414

@@ -27,7 +27,7 @@ fn add(a: i64, b: i64) i64 {
2727
}
2828
```
2929

30-
第一个编译错误,源自于`sum`是一个未使用的本地常量。第二个编译错误,在于在函数`add`的所有形参中,`b`是一个未使用的函数参数。对于这段代码来说,它们是比较明显的漏洞。但是在实际编程中,代码中包含未使用变量和函数形参并非完全不合理。在这种情况下,我们可以通过将未使用变量赋值给`_`(下划线)的方法,避免编译器报错:
30+
第一个编译错误,源自于`sum`是一个未使用的本地常量。第二个编译错误,在于在函数`add`的所有形参中,`b`是一个未使用的函数参数。对于这段代码来说,它们是比较明显的漏洞。但是在实际编程中,代码中包含未使用变量和函数形参并非完全不合理。在这种情况下,我们可以通过将未使用变量赋值给`_`(下划线)的方法,避免编译器报错
3131

3232
```zig
3333
const std = @import("std");

content/monthly/202209.smd

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
在 9/10 号左右,在 Twitter 上牵起了一小波关于 Zig VS Rust
1212
的小火花,以至于最后 Zig 创始人 Andrew Kelley
1313
[发推](https://twitter.com/andy_kelley/status/1568679389113757698)表示
14-
Let us exist。这里稍微整理下这件事情的过程: 本次事件主要涉及两个人:
14+
Let us exist。这里稍微整理下这件事情的过程:本次事件主要涉及两个人:
1515

16-
- Rust 核心贡献者: Patrick Walton
17-
- Zig 社区 VP: Loris Cro
16+
- Rust 核心贡献者:Patrick Walton
17+
- Zig 社区 VP:Loris Cro
1818

1919
## [时间线]($heading.id('timeline'))
2020

content/monthly/202308.smd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ Andrew 关于构建系统的视频,[B
210210

211211
[Wrap your NIF with Zig](https://rbino.com/posts/wrap-your-nif-with-zig/)
212212
NIF 是 Elixir 中进行 FFI 调用的方式,如果用原生 C
213-
接口来用,会需要写很多胶水代码, 作者这里用 comptime 特性来定义了一个
213+
接口来用,会需要写很多胶水代码,作者这里用 comptime 特性来定义了一个
214214
`make_nif_wrapper` 来简化 NIF 的实现,这个技巧在与 C
215215
项目交互时十分有用。
216216

0 commit comments

Comments
 (0)