diff --git a/README.md b/README.md deleted file mode 120000 index 14300ad..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -book-src/intro.md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c3df6b --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# Zig Cookbook + +[![](https://img.shields.io/discord/1155469703846834187?label=Chat%20on%20Discord)](https://discord.gg/bAehMGPb2R) +[![](https://img.shields.io/github/stars/zigcc/zig-cookbook?style=square&color=#30a14e)](https://github.com/zigcc/zig-cookbook/stargazers) +[![](https://github.com/zigcc/zig-cookbook/actions/workflows/ci.yml/badge.svg)](https://github.com/zigcc/zig-cookbook/actions/workflows/ci.yml) +[![](https://github.com/zigcc/zig-cookbook/actions/workflows/pages.yml/badge.svg)](https://github.com/zigcc/zig-cookbook/actions/workflows/pages.yml) + +![Zig Cookbook Logo](./assets/images/logo.webp) + +[Zig cookbook](https://github.com/zigcc/zig-cookbook) is a collection of simple Zig programs that demonstrate good practices to accomplish common programming tasks. + +> - Main branch tracks Zig 0.14.0 and master, and are tested on Linux and macOS via GitHub actions. +> - Earlier Zig support could be found in [other branches](https://github.com/zigcc/zig-cookbook/branches). + +# How to use + +[The website](https://cookbook.ziglang.cc/) is generated by [zine-ssg](https://zine-ssg.io), a static site generator for Zig. `zine` will start a server at `http://localhost:1990` for preview. + +Each recipe is accompanied by an illustrative example named after its corresponding sequence number. These examples can be executed using the command `zig build run-{chapter-num}-{sequence-num}`, or `zig build run-all` to execute all. + +> ## Note +> +> Some recipes may depend on system libraries +> +> - Use `make install-deps` to install client libraries, and +> - `docker-compose up -d` to start required databases. + +# Contributing + +This cookbook is a work in progress, and we welcome contributions from the community. If you have a favorite recipe that you'd like to share, please submit a [pull request](https://github.com/zigcc/zig-cookbook/pulls). + +## Localization + +Create corresponding recipe in the language folder, localize it, and submit a [pull request](https://github.com/zigcc/zig-cookbook/pulls). + +# Acknowledgment + +The **initial** version of the Zig Cookbook was inspired by several other similar projects. We would like to thank the following projects, thanks for their awesome work. + +- [Rust Cookbook](https://github.com/rust-lang-nursery/rust-cookbook) + +The **current** version of the Zig Cookbook is based on [zine-ssg](https://zine-ssg.io), thanks for their awesome work. + +# Star History + +```=html + + Star History + +``` + +# License + +The markdown files are licensed under [CC BY-NC-ND 4.0 DEED](https://creativecommons.org/licenses/by-nc-nd/4.0/), and zig files are under MIT. diff --git a/assets/style.css b/assets/style.css index d5bfde4..e50c7e6 100644 --- a/assets/style.css +++ b/assets/style.css @@ -70,28 +70,8 @@ body { } #prev-next { - display: flex; - justify-content: space-between; - flex-wrap: wrap; - align-items: center; - margin-top: 20px; - padding-top: 5px; - border-top: 2px solid var(--border); -} - -#prev-next a { - text-decoration: none; -} -#prev-next > :last-child { - margin-left: auto; - text-align: right; -} -#prev-next > :first-child span::before { - content: "←"; -} - -#prev-next > :last-child span::after { - content: "→"; + padding: 15px 0; + border-bottom: 1px solid var(--border); } a { @@ -165,6 +145,20 @@ html { max-width: 50rem; } +article { + border-bottom: 1px solid var(--border); +} + +#footer { + margin: 15px 0; + text-align: center; + font-size: 0.85rem; +} + +#footer .langs * { + margin: 0 5px; +} + .toc { width: var(--toc-width); min-width: var(--toc-width); @@ -176,12 +170,11 @@ html { /* word-break: normal; */ } .toc a { - text-decoration: none; line-break: auto; } .toc a:hover { - text-decoration: underline; + color: #5eafcd; } .toc a[aria-current="page"] { @@ -291,4 +284,9 @@ html { h1{ margin-bottom: 0; +} +#content-header{ + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid var(--border) } \ No newline at end of file diff --git a/i18n/en-US.ziggy b/i18n/en-US.ziggy new file mode 100644 index 0000000..abb9b56 --- /dev/null +++ b/i18n/en-US.ziggy @@ -0,0 +1,11 @@ +{ + "site_title": "Zig Cookbook", + "introduction": "Introduction", + "contributing": "Contributing", + "license": "License", + "toggle_toc": "Toggle Table of Contents", + "prev": "Previous: ", + "next": "Next: ", + "languages_menu": "This page is available in the following languages", + "footer_copyright": "License: text: CC BY-SA 4.0; code: MIT", +} diff --git a/i18n/zh-CN.ziggy b/i18n/zh-CN.ziggy new file mode 100644 index 0000000..e5ba3dd --- /dev/null +++ b/i18n/zh-CN.ziggy @@ -0,0 +1,11 @@ +{ + "site_title": "Zig Cookbook", + "introduction": "介绍", + "contributing": "贡献", + "license": "许可证", + "toggle_toc": "切换目录", + "prev": "上一示例:", + "next": "下一示例:", + "languages_menu": "此页面提供以下语言的版本", + "footer_copyright": "许可证: 文字:CC BY-NC-SA 4.0;代码:MIT", +} diff --git a/layouts/section.shtml b/layouts/section.shtml index f5a7eae..d81cfdd 100644 --- a/layouts/section.shtml +++ b/layouts/section.shtml @@ -4,8 +4,8 @@
- - + +
@@ -13,21 +13,30 @@
-

+
+

+
-
-
- - - + +
+
+ +
+
+ +
-
- \ No newline at end of file + diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml index a260d01..26e2c2a 100644 --- a/layouts/templates/base.shtml +++ b/layouts/templates/base.shtml @@ -3,7 +3,7 @@ - + diff --git a/src/01-01-read-file-line-by-line.smd b/src/en-US/01-01-read-file-line-by-line.smd similarity index 100% rename from src/01-01-read-file-line-by-line.smd rename to src/en-US/01-01-read-file-line-by-line.smd diff --git a/src/01-02-mmap-file.smd b/src/en-US/01-02-mmap-file.smd similarity index 100% rename from src/01-02-mmap-file.smd rename to src/en-US/01-02-mmap-file.smd diff --git a/src/01-03-file-modified-24h-ago.smd b/src/en-US/01-03-file-modified-24h-ago.smd similarity index 100% rename from src/01-03-file-modified-24h-ago.smd rename to src/en-US/01-03-file-modified-24h-ago.smd diff --git a/src/01-04-file-exists.smd b/src/en-US/01-04-file-exists.smd similarity index 100% rename from src/01-04-file-exists.smd rename to src/en-US/01-04-file-exists.smd diff --git a/src/01-05-iterate-dir.smd b/src/en-US/01-05-iterate-dir.smd similarity index 100% rename from src/01-05-iterate-dir.smd rename to src/en-US/01-05-iterate-dir.smd diff --git a/src/02-01-sha-digest.smd b/src/en-US/02-01-sha-digest.smd similarity index 100% rename from src/02-01-sha-digest.smd rename to src/en-US/02-01-sha-digest.smd diff --git a/src/02-02-pbkdf2.smd b/src/en-US/02-02-pbkdf2.smd similarity index 100% rename from src/02-02-pbkdf2.smd rename to src/en-US/02-02-pbkdf2.smd diff --git a/src/03-01-elapsed-time.smd b/src/en-US/03-01-elapsed-time.smd similarity index 100% rename from src/03-01-elapsed-time.smd rename to src/en-US/03-01-elapsed-time.smd diff --git a/src/04-01-tcp-server.smd b/src/en-US/04-01-tcp-server.smd similarity index 100% rename from src/04-01-tcp-server.smd rename to src/en-US/04-01-tcp-server.smd diff --git a/src/04-02-tcp-client.smd b/src/en-US/04-02-tcp-client.smd similarity index 100% rename from src/04-02-tcp-client.smd rename to src/en-US/04-02-tcp-client.smd diff --git a/src/04-03-udp-echo.smd b/src/en-US/04-03-udp-echo.smd similarity index 100% rename from src/04-03-udp-echo.smd rename to src/en-US/04-03-udp-echo.smd diff --git a/src/05-01-http-get.smd b/src/en-US/05-01-http-get.smd similarity index 100% rename from src/05-01-http-get.smd rename to src/en-US/05-01-http-get.smd diff --git a/src/05-02-http-post.smd b/src/en-US/05-02-http-post.smd similarity index 100% rename from src/05-02-http-post.smd rename to src/en-US/05-02-http-post.smd diff --git a/src/05-03-http-server-std.smd b/src/en-US/05-03-http-server-std.smd similarity index 100% rename from src/05-03-http-server-std.smd rename to src/en-US/05-03-http-server-std.smd diff --git a/src/06-01-rand.smd b/src/en-US/06-01-rand.smd similarity index 100% rename from src/06-01-rand.smd rename to src/en-US/06-01-rand.smd diff --git a/src/07-01-spawn.smd b/src/en-US/07-01-spawn.smd similarity index 100% rename from src/07-01-spawn.smd rename to src/en-US/07-01-spawn.smd diff --git a/src/07-02-shared-data.smd b/src/en-US/07-02-shared-data.smd similarity index 100% rename from src/07-02-shared-data.smd rename to src/en-US/07-02-shared-data.smd diff --git a/src/07-03-threadpool.smd b/src/en-US/07-03-threadpool.smd similarity index 100% rename from src/07-03-threadpool.smd rename to src/en-US/07-03-threadpool.smd diff --git a/src/07-04-run-once.smd b/src/en-US/07-04-run-once.smd similarity index 100% rename from src/07-04-run-once.smd rename to src/en-US/07-04-run-once.smd diff --git a/src/08-01-cpu-count.smd b/src/en-US/08-01-cpu-count.smd similarity index 100% rename from src/08-01-cpu-count.smd rename to src/en-US/08-01-cpu-count.smd diff --git a/src/08-02-external.smd b/src/en-US/08-02-external.smd similarity index 100% rename from src/08-02-external.smd rename to src/en-US/08-02-external.smd diff --git a/src/09-01-semver.smd b/src/en-US/09-01-semver.smd similarity index 100% rename from src/09-01-semver.smd rename to src/en-US/09-01-semver.smd diff --git a/src/10-01-json.smd b/src/en-US/10-01-json.smd similarity index 100% rename from src/10-01-json.smd rename to src/en-US/10-01-json.smd diff --git a/src/10-02-zon.smd b/src/en-US/10-02-zon.smd similarity index 100% rename from src/10-02-zon.smd rename to src/en-US/10-02-zon.smd diff --git a/src/10-03-base64.smd b/src/en-US/10-03-base64.smd similarity index 100% rename from src/10-03-base64.smd rename to src/en-US/10-03-base64.smd diff --git a/src/11-01-complex-numbers.smd b/src/en-US/11-01-complex-numbers.smd similarity index 100% rename from src/11-01-complex-numbers.smd rename to src/en-US/11-01-complex-numbers.smd diff --git a/src/12-01-bitfield.smd b/src/en-US/12-01-bitfield.smd similarity index 100% rename from src/12-01-bitfield.smd rename to src/en-US/12-01-bitfield.smd diff --git a/src/12-02-singly-linked-list.smd b/src/en-US/12-02-singly-linked-list.smd similarity index 100% rename from src/12-02-singly-linked-list.smd rename to src/en-US/12-02-singly-linked-list.smd diff --git a/src/12-03-doubly-linked-list.smd b/src/en-US/12-03-doubly-linked-list.smd similarity index 100% rename from src/12-03-doubly-linked-list.smd rename to src/en-US/12-03-doubly-linked-list.smd diff --git a/src/13-01-argparse.smd b/src/en-US/13-01-argparse.smd similarity index 100% rename from src/13-01-argparse.smd rename to src/en-US/13-01-argparse.smd diff --git a/src/14-01-sqlite.smd b/src/en-US/14-01-sqlite.smd similarity index 100% rename from src/14-01-sqlite.smd rename to src/en-US/14-01-sqlite.smd diff --git a/src/14-02-postgres.smd b/src/en-US/14-02-postgres.smd similarity index 100% rename from src/14-02-postgres.smd rename to src/en-US/14-02-postgres.smd diff --git a/src/14-03-mysql.smd b/src/en-US/14-03-mysql.smd similarity index 100% rename from src/14-03-mysql.smd rename to src/en-US/14-03-mysql.smd diff --git a/src/15-01-regex.smd b/src/en-US/15-01-regex.smd similarity index 100% rename from src/15-01-regex.smd rename to src/en-US/15-01-regex.smd diff --git a/src/15-02-string.smd b/src/en-US/15-02-string.smd similarity index 100% rename from src/15-02-string.smd rename to src/en-US/15-02-string.smd diff --git a/src/database.smd b/src/en-US/database.smd similarity index 100% rename from src/database.smd rename to src/en-US/database.smd diff --git a/src/index.smd b/src/en-US/index.smd similarity index 90% rename from src/index.smd rename to src/en-US/index.smd index 5e9020b..7d16fdc 100644 --- a/src/index.smd +++ b/src/en-US/index.smd @@ -20,7 +20,7 @@ ``` -![Zig Cookbook Logo](/images/logo.webp) +![](/images/logo.webp) [Zig cookbook](https://github.com/zigcc/zig-cookbook) is a collection of simple Zig programs that demonstrate good practices to accomplish common programming tasks. @@ -29,7 +29,7 @@ # How to use -[The website](https://cookbook.ziglang.cc/) is generated by [zine-ssg](https://zine-ssg.io), a static site generator for Zig.`zine` will start a server at `http://localhost:1990` for preview. +[The website](https://cookbook.ziglang.cc/) is generated by [zine-ssg](https://zine-ssg.io), a static site generator for Zig. `zine` will start a server at `http://localhost:1990` for preview. Each recipe is accompanied by an illustrative example named after its corresponding sequence number. These examples can be executed using the command `zig build run-{chapter-num}-{sequence-num}`, or `zig build run-all` to execute all. @@ -42,6 +42,10 @@ Each recipe is accompanied by an illustrative example named after its correspond This cookbook is a work in progress, and we welcome contributions from the community. If you have a favorite recipe that you'd like to share, please submit a [pull request](https://github.com/zigcc/zig-cookbook/pulls). +## Localization + +Create corresponding recipe in the language you want to localize, localize it, and submit a pull request. + # Acknowledgment The **initial** version of the Zig Cookbook was inspired by several other similar projects. We would like to thank the following projects, thanks for their awesome work. diff --git a/src/toc.smd b/src/en-US/toc.smd similarity index 98% rename from src/toc.smd rename to src/en-US/toc.smd index 34edadb..661089e 100644 --- a/src/toc.smd +++ b/src/en-US/toc.smd @@ -1,12 +1,10 @@ --- -.title = "introduction", +.title = "toc", .date = "2024-01-01", .author = "ZigCC", .layout = "section.shtml", --- -# Summary - [Introduction](/) - File System diff --git a/src/zh-CN/index.smd b/src/zh-CN/index.smd new file mode 100644 index 0000000..7597631 --- /dev/null +++ b/src/zh-CN/index.smd @@ -0,0 +1,67 @@ +--- +.title = "介绍", +.date = "2024-01-01", +.author = "ZigCC", +.layout = "section.shtml", +--- + +```=html + + 在Discord上聊天 + + + 星标数量 + + + CI + + + Pages + +``` + +![](/images/logo.webp) + +[Zig Cookbook](https://github.com/zigcc/zig-cookbook) 是一系列简单的 Zig 程序集合,用于展示完成常见编程任务的最佳实践。 + +> - 主分支跟踪 Zig 0.14.0 及 master 版本,并通过 GitHub Actions 在 Linux 和 macOS 上进行测试。 +> - 更早版本的 Zig 支持可在 [其他分支](https://github.com/zigcc/zig-cookbook/branches) 中找到。 + +# 如何使用 + +[网站](https://cookbook.ziglang.cc/) 由 [zine-ssg](https://zine-ssg.io) 生成,这是一个 Zig 编写的静态网站生成器。运行 `zine` 将在 `http://localhost:1990` 启动一个预览服务器。 + +每个示例都附带一个以对应序号命名的示例程序。可以使用命令 `zig build run-{章节号}-{序号}` 来运行单个示例,或使用 `zig build run-all` 运行所有示例。 + +> ## 注意 +> 某些示例可能依赖系统库: +> - 使用 `make install-deps` 安装客户端库; +> - 使用 `docker-compose up -d` 启动所需的数据库。 + +# 贡献 + +本 cookbook 仍在持续完善中,我们欢迎社区贡献。如果你有想要分享的示例,请 [Pull Request](https://github.com/zigcc/zig-cookbook/pulls)。 + +## 翻译 + +在对应语言目录下创建相应的要翻译的示例,翻译后 [Pull Request](https://github.com/zigcc/zig-cookbook/pulls) 即可。 + +# 致谢 + +**初始版本**的 Zig Cookbook 受到多个类似项目的启发。我们向以下项目致以诚挚感谢,感谢它们的杰出工作: + +- [Rust Cookbook](https://github.com/rust-lang-nursery/rust-cookbook) + +**当前版本**的 Zig Cookbook 基于 [zine-ssg](https://zine-ssg.io),在此感谢其卓越的贡献! + +# 星标历史 + +```=html + + 星标历史 + +``` + +# 许可证 + +Markdown 文件采用 [CC BY-NC-ND 4.0 DEED](https://creativecommons.org/licenses/by-nc-nd/4.0/) 许可,Zig 源码文件采用 MIT 许可。 diff --git a/src/zh-CN/toc.smd b/src/zh-CN/toc.smd new file mode 100644 index 0000000..211c314 --- /dev/null +++ b/src/zh-CN/toc.smd @@ -0,0 +1,8 @@ +--- +.title = "目录", +.date = "2024-01-01", +.author = "ZigCC", +.layout = "section.shtml", +--- + +[介绍](/) diff --git a/zine.ziggy b/zine.ziggy index d770804..7caae46 100644 --- a/zine.ziggy +++ b/zine.ziggy @@ -1,9 +1,23 @@ -Site { - .title = "Zig cookbook", +Multilingual { .host_url = "https://cookbook.ziglang.cc", - .content_dir_path = "src", + .i18n_dir_path = "i18n", .layouts_dir_path = "layouts", .assets_dir_path = "assets", .static_assets = [ ], + .locales = [ + { + .code = "en-US", + .name = "English", + .site_title = "Zig Cookbook", + .content_dir_path = "src/en-US", + .output_prefix_override = "", + }, + { + .code = "zh-CN", + .name = "中文", + .site_title = "Zig Cookbook", + .content_dir_path = "src/zh-CN", + }, + ], }