From 8a5e2639d349402ad66d838ed45a124b53c35b7e Mon Sep 17 00:00:00 2001 From: Dania Rifki Date: Sat, 7 Feb 2026 18:40:56 +0800 Subject: Format docs with prettier Also adjust custom.css a little --- doc/docs/.vitepress/config.mts | 780 ++++++----- doc/docs/.vitepress/env.d.ts | 18 +- .../.vitepress/grammars/yuescript.tmLanguage.json | 1374 ++++++++++---------- .../.vitepress/theme/components/CompilerModal.vue | 37 +- .../.vitepress/theme/components/HomeFooter.vue | 4 +- .../.vitepress/theme/components/YueCompiler.vue | 760 ++++++----- .../.vitepress/theme/components/YueDisplay.vue | 20 +- doc/docs/.vitepress/theme/custom.css | 63 +- doc/docs/.vitepress/theme/index.ts | 30 +- doc/docs/de/doc/advanced/do.md | 3 + doc/docs/de/doc/advanced/line-decorators.md | 3 + doc/docs/de/doc/advanced/macro.md | 6 + doc/docs/de/doc/advanced/module.md | 8 + doc/docs/de/doc/advanced/try.md | 2 + doc/docs/de/doc/assignment/assignment.md | 5 + .../de/doc/assignment/destructuring-assignment.md | 11 + doc/docs/de/doc/assignment/if-assignment.md | 4 + ...ng-clause-controlling-destructive-assignment.md | 3 + doc/docs/de/doc/assignment/varargs-assignment.md | 1 + doc/docs/de/doc/control-flow/conditionals.md | 7 + doc/docs/de/doc/control-flow/continue.md | 2 + doc/docs/de/doc/control-flow/for-loop.md | 6 + doc/docs/de/doc/control-flow/switch.md | 11 + doc/docs/de/doc/control-flow/while-loop.md | 3 + doc/docs/de/doc/data-structures/comprehensions.md | 16 + doc/docs/de/doc/data-structures/table-literals.md | 9 + doc/docs/de/doc/functions/backcalls.md | 4 + doc/docs/de/doc/functions/function-literals.md | 27 +- doc/docs/de/doc/functions/function-stubs.md | 1 + doc/docs/de/doc/getting-started/usage.md | 88 +- doc/docs/de/doc/language-basics/attributes.md | 3 + doc/docs/de/doc/language-basics/comment.md | 1 + doc/docs/de/doc/language-basics/literals.md | 5 + doc/docs/de/doc/language-basics/operator.md | 16 +- doc/docs/de/doc/language-basics/whitespace.md | 2 + .../de/doc/objects/object-oriented-programming.md | 22 + doc/docs/de/doc/objects/with-statement.md | 6 + doc/docs/de/doc/reference/the-yuescript-library.md | 319 +++-- doc/docs/de/index.md | 1 + doc/docs/de/try/index.md | 1 + doc/docs/doc/advanced/do.md | 3 + doc/docs/doc/advanced/line-decorators.md | 3 + doc/docs/doc/advanced/macro.md | 9 + doc/docs/doc/advanced/module.md | 8 + doc/docs/doc/advanced/try.md | 2 + doc/docs/doc/assignment/assignment.md | 9 + .../doc/assignment/destructuring-assignment.md | 11 + doc/docs/doc/assignment/if-assignment.md | 5 + ...ng-clause-controlling-destructive-assignment.md | 3 + doc/docs/doc/assignment/varargs-assignment.md | 3 +- doc/docs/doc/control-flow/conditionals.md | 7 + doc/docs/doc/control-flow/continue.md | 2 + doc/docs/doc/control-flow/for-loop.md | 6 + doc/docs/doc/control-flow/switch.md | 11 + doc/docs/doc/control-flow/while-loop.md | 3 + doc/docs/doc/data-structures/comprehensions.md | 16 + doc/docs/doc/data-structures/table-literals.md | 9 + doc/docs/doc/functions/backcalls.md | 4 + doc/docs/doc/functions/function-literals.md | 27 +- doc/docs/doc/functions/function-stubs.md | 1 + doc/docs/doc/getting-started/introduction.md | 2 +- doc/docs/doc/getting-started/usage.md | 101 +- doc/docs/doc/language-basics/attributes.md | 3 + doc/docs/doc/language-basics/comment.md | 1 + doc/docs/doc/language-basics/literals.md | 5 + doc/docs/doc/language-basics/operator.md | 15 + doc/docs/doc/language-basics/whitespace.md | 2 + .../doc/objects/object-oriented-programming.md | 42 +- doc/docs/doc/objects/with-statement.md | 7 +- doc/docs/doc/reference/the-yuescript-library.md | 329 ++--- doc/docs/id-id/doc/advanced/do.md | 3 + doc/docs/id-id/doc/advanced/line-decorators.md | 3 + doc/docs/id-id/doc/advanced/macro.md | 9 + doc/docs/id-id/doc/advanced/module.md | 8 + doc/docs/id-id/doc/advanced/try.md | 2 + doc/docs/id-id/doc/assignment/assignment.md | 9 + .../doc/assignment/destructuring-assignment.md | 11 + doc/docs/id-id/doc/assignment/if-assignment.md | 5 + ...ng-clause-controlling-destructive-assignment.md | 3 + .../id-id/doc/assignment/varargs-assignment.md | 1 + doc/docs/id-id/doc/control-flow/conditionals.md | 7 + doc/docs/id-id/doc/control-flow/continue.md | 2 + doc/docs/id-id/doc/control-flow/for-loop.md | 6 + doc/docs/id-id/doc/control-flow/switch.md | 11 + doc/docs/id-id/doc/control-flow/while-loop.md | 3 + .../id-id/doc/data-structures/comprehensions.md | 16 + .../id-id/doc/data-structures/table-literals.md | 9 + doc/docs/id-id/doc/functions/backcalls.md | 4 + doc/docs/id-id/doc/functions/function-literals.md | 27 +- doc/docs/id-id/doc/functions/function-stubs.md | 1 + doc/docs/id-id/doc/getting-started/usage.md | 100 +- doc/docs/id-id/doc/language-basics/attributes.md | 3 + doc/docs/id-id/doc/language-basics/comment.md | 1 + doc/docs/id-id/doc/language-basics/literals.md | 5 + doc/docs/id-id/doc/language-basics/operator.md | 15 + doc/docs/id-id/doc/language-basics/whitespace.md | 2 + .../doc/objects/object-oriented-programming.md | 22 + doc/docs/id-id/doc/objects/with-statement.md | 6 + .../id-id/doc/reference/the-yuescript-library.md | 317 +++-- doc/docs/id-id/try/index.md | 1 + doc/docs/pt-br/doc/advanced/do.md | 3 + doc/docs/pt-br/doc/advanced/line-decorators.md | 3 + doc/docs/pt-br/doc/advanced/macro.md | 9 + doc/docs/pt-br/doc/advanced/module.md | 8 + doc/docs/pt-br/doc/advanced/try.md | 2 + doc/docs/pt-br/doc/assignment/assignment.md | 9 + .../doc/assignment/destructuring-assignment.md | 11 + doc/docs/pt-br/doc/assignment/if-assignment.md | 5 + ...ng-clause-controlling-destructive-assignment.md | 3 + .../pt-br/doc/assignment/varargs-assignment.md | 1 + doc/docs/pt-br/doc/control-flow/conditionals.md | 7 + doc/docs/pt-br/doc/control-flow/continue.md | 2 + doc/docs/pt-br/doc/control-flow/for-loop.md | 6 + doc/docs/pt-br/doc/control-flow/switch.md | 11 + doc/docs/pt-br/doc/control-flow/while-loop.md | 3 + .../pt-br/doc/data-structures/comprehensions.md | 16 + .../pt-br/doc/data-structures/table-literals.md | 9 + doc/docs/pt-br/doc/functions/backcalls.md | 4 + doc/docs/pt-br/doc/functions/function-literals.md | 27 +- doc/docs/pt-br/doc/functions/function-stubs.md | 1 + doc/docs/pt-br/doc/getting-started/usage.md | 88 +- doc/docs/pt-br/doc/language-basics/attributes.md | 3 + doc/docs/pt-br/doc/language-basics/comment.md | 1 + doc/docs/pt-br/doc/language-basics/literals.md | 5 + doc/docs/pt-br/doc/language-basics/operator.md | 15 + doc/docs/pt-br/doc/language-basics/whitespace.md | 2 + .../doc/objects/object-oriented-programming.md | 42 +- doc/docs/pt-br/doc/objects/with-statement.md | 6 + .../pt-br/doc/reference/the-yuescript-library.md | 333 ++--- doc/docs/pt-br/index.md | 1 + doc/docs/pt-br/try/index.md | 1 + doc/docs/try/index.md | 1 + doc/docs/zh/doc/advanced/do.md | 3 + doc/docs/zh/doc/advanced/line-decorators.md | 3 + doc/docs/zh/doc/advanced/macro.md | 7 + doc/docs/zh/doc/advanced/module.md | 8 + doc/docs/zh/doc/advanced/try.md | 2 + doc/docs/zh/doc/assignment/assignment.md | 5 + .../zh/doc/assignment/destructuring-assignment.md | 12 +- doc/docs/zh/doc/assignment/if-assignment.md | 4 + ...ng-clause-controlling-destructive-assignment.md | 3 + doc/docs/zh/doc/assignment/varargs-assignment.md | 1 + doc/docs/zh/doc/control-flow/conditionals.md | 8 +- doc/docs/zh/doc/control-flow/continue.md | 2 + doc/docs/zh/doc/control-flow/for-loop.md | 6 + doc/docs/zh/doc/control-flow/switch.md | 11 + doc/docs/zh/doc/control-flow/while-loop.md | 3 + doc/docs/zh/doc/data-structures/comprehensions.md | 17 +- doc/docs/zh/doc/data-structures/table-literals.md | 9 + doc/docs/zh/doc/functions/backcalls.md | 4 + doc/docs/zh/doc/functions/function-literals.md | 23 + doc/docs/zh/doc/functions/function-stubs.md | 1 + doc/docs/zh/doc/getting-started/introduction.md | 2 + doc/docs/zh/doc/getting-started/usage.md | 88 +- doc/docs/zh/doc/language-basics/attributes.md | 3 + doc/docs/zh/doc/language-basics/comment.md | 1 + doc/docs/zh/doc/language-basics/literals.md | 6 +- doc/docs/zh/doc/language-basics/operator.md | 15 +- doc/docs/zh/doc/language-basics/whitespace.md | 2 + .../zh/doc/objects/object-oriented-programming.md | 27 +- doc/docs/zh/doc/objects/with-statement.md | 7 +- doc/docs/zh/doc/reference/license-mit.md | 2 +- doc/docs/zh/doc/reference/the-yuescript-library.md | 303 +++-- doc/docs/zh/try/index.md | 1 + 164 files changed, 3767 insertions(+), 2403 deletions(-) diff --git a/doc/docs/.vitepress/config.mts b/doc/docs/.vitepress/config.mts index 9491a8d..cae1d89 100644 --- a/doc/docs/.vitepress/config.mts +++ b/doc/docs/.vitepress/config.mts @@ -1,338 +1,388 @@ -import { readFileSync } from 'fs'; -import { - dirname, - resolve, -} from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'vitepress'; +import { readFileSync } from "fs"; +import { dirname, resolve } from "path"; +import { fileURLToPath } from "url"; +import { defineConfig } from "vitepress"; -import darkPlus from '@shikijs/themes/dark-plus'; -import lightPlus from '@shikijs/themes/light-plus'; +import darkPlus from "@shikijs/themes/dark-plus"; +import lightPlus from "@shikijs/themes/light-plus"; -const __dirname = dirname(fileURLToPath(import.meta.url)) -const yuescriptGrammarPath = resolve(__dirname, 'grammars/yuescript.tmLanguage.json') -const yuescriptGrammar = JSON.parse(readFileSync(yuescriptGrammarPath, 'utf-8')) +const __dirname = dirname(fileURLToPath(import.meta.url)); +const yuescriptGrammarPath = resolve( + __dirname, + "grammars/yuescript.tmLanguage.json", +); +const yuescriptGrammar = JSON.parse( + readFileSync(yuescriptGrammarPath, "utf-8"), +); const yuescriptLanguage = { ...yuescriptGrammar, - name: 'yuescript', - scopeName: 'source.yuescript', - aliases: ['yue'], -} + name: "yuescript", + scopeName: "source.yuescript", + aliases: ["yue"], +}; const sidebarText = { de: { - introduction: 'Einführung', - installation: 'Installation', - usage: 'Verwendung', - macro: 'Makro', - operator: 'Operatoren', - module: 'Modul', - assignment: 'Zuweisung', - destructuringAssignment: 'Destrukturierende Zuweisung', - ifAssignment: 'If-Zuweisung', - varargsAssignment: 'Varargs-Zuweisung', - whitespace: 'Leerraum', - comment: 'Kommentare', - try: 'Try/Catch', - attributes: 'Attribute', - literals: 'Literale', - functionLiterals: 'Funktionsliterale', - backcalls: 'Backcalls', - tableLiterals: 'Tabellenliterale', - comprehensions: 'Comprehensions', - forLoop: 'For-Schleife', - whileLoop: 'While-Schleife', - continueStatement: 'Continue-Anweisung', - conditionals: 'Bedingungen', - lineDecorators: 'Zeilen-Dekoratoren', - switch: 'Switch', - objectOrientedProgramming: 'Objektorientierte Programmierung', - withStatement: 'With-Anweisung', - do: 'Do', - functionStubs: 'Funktions-Stubs', - usingClause: 'Die Using-Klausel; Kontrolle destruktiver Zuweisung', - yuescriptLibrary: 'Die YueScript-Bibliothek', - licenseMit: 'Lizenz: MIT', + introduction: "Einführung", + installation: "Installation", + usage: "Verwendung", + macro: "Makro", + operator: "Operatoren", + module: "Modul", + assignment: "Zuweisung", + destructuringAssignment: "Destrukturierende Zuweisung", + ifAssignment: "If-Zuweisung", + varargsAssignment: "Varargs-Zuweisung", + whitespace: "Leerraum", + comment: "Kommentare", + try: "Try/Catch", + attributes: "Attribute", + literals: "Literale", + functionLiterals: "Funktionsliterale", + backcalls: "Backcalls", + tableLiterals: "Tabellenliterale", + comprehensions: "Comprehensions", + forLoop: "For-Schleife", + whileLoop: "While-Schleife", + continueStatement: "Continue-Anweisung", + conditionals: "Bedingungen", + lineDecorators: "Zeilen-Dekoratoren", + switch: "Switch", + objectOrientedProgramming: "Objektorientierte Programmierung", + withStatement: "With-Anweisung", + do: "Do", + functionStubs: "Funktions-Stubs", + usingClause: "Die Using-Klausel; Kontrolle destruktiver Zuweisung", + yuescriptLibrary: "Die YueScript-Bibliothek", + licenseMit: "Lizenz: MIT", }, en: { - introduction: 'Introduction', - installation: 'Installation', - usage: 'Usage', - macro: 'Macro', - operator: 'Operator', - module: 'Module', - assignment: 'Assignment', - destructuringAssignment: 'Destructuring Assignment', - ifAssignment: 'If Assignment', - varargsAssignment: 'Varargs Assignment', - whitespace: 'Whitespace', - comment: 'Comment', - try: 'Try', - attributes: 'Attributes', - literals: 'Literals', - functionLiterals: 'Function Literals', - backcalls: 'Backcalls', - tableLiterals: 'Table Literals', - comprehensions: 'Comprehensions', - forLoop: 'For Loop', - whileLoop: 'While Loop', - continueStatement: 'Continue Statement', - conditionals: 'Conditionals', - lineDecorators: 'Line Decorators', - switch: 'Switch', - objectOrientedProgramming: 'Object Oriented Programming', - withStatement: 'With Statement', - do: 'Do', - functionStubs: 'Function Stubs', - usingClause: 'The Using Clause; Controlling Destructive Assignment', - yuescriptLibrary: 'The YueScript Library', - licenseMit: 'License: MIT', + introduction: "Introduction", + installation: "Installation", + usage: "Usage", + macro: "Macro", + operator: "Operator", + module: "Module", + assignment: "Assignment", + destructuringAssignment: "Destructuring Assignment", + ifAssignment: "If Assignment", + varargsAssignment: "Varargs Assignment", + whitespace: "Whitespace", + comment: "Comment", + try: "Try", + attributes: "Attributes", + literals: "Literals", + functionLiterals: "Function Literals", + backcalls: "Backcalls", + tableLiterals: "Table Literals", + comprehensions: "Comprehensions", + forLoop: "For Loop", + whileLoop: "While Loop", + continueStatement: "Continue Statement", + conditionals: "Conditionals", + lineDecorators: "Line Decorators", + switch: "Switch", + objectOrientedProgramming: "Object Oriented Programming", + withStatement: "With Statement", + do: "Do", + functionStubs: "Function Stubs", + usingClause: "The Using Clause; Controlling Destructive Assignment", + yuescriptLibrary: "The YueScript Library", + licenseMit: "License: MIT", }, idId: { - introduction: 'Pendahuluan', - installation: 'Instalasi', - usage: 'Penggunaan', - macro: 'Makro', - operator: 'Operator', - module: 'Modul', - assignment: 'Penugasan', - destructuringAssignment: 'Penugasan Destrukturisasi', - ifAssignment: 'Penugasan If', - varargsAssignment: 'Penugasan Varargs', - whitespace: 'Spasi Kosong', - comment: 'Komentar', - try: 'Coba', - attributes: 'Atribut', - literals: 'Literal', - functionLiterals: 'Literal Fungsi', - backcalls: 'Pemanggilan Mundur', - tableLiterals: 'Literal Tabel', - comprehensions: 'Kompresi', - forLoop: 'Perulangan For', - whileLoop: 'Perulangan While', - continueStatement: 'Pernyataan Lanjutkan', - conditionals: 'Percabangan', - lineDecorators: 'Dekorator Baris', - switch: 'Switch', - objectOrientedProgramming: 'Pemrograman Berorientasi Objek', - withStatement: 'Pernyataan With', - do: 'Do', - functionStubs: 'Fungsi Sementara', - usingClause: 'Klausa Using; Mengontrol Penugasan Destruktif', - yuescriptLibrary: 'Pustaka YueScript', - licenseMit: 'Lisensi: MIT', + introduction: "Pendahuluan", + installation: "Instalasi", + usage: "Penggunaan", + macro: "Makro", + operator: "Operator", + module: "Modul", + assignment: "Penugasan", + destructuringAssignment: "Penugasan Destrukturisasi", + ifAssignment: "Penugasan If", + varargsAssignment: "Penugasan Varargs", + whitespace: "Spasi Kosong", + comment: "Komentar", + try: "Coba", + attributes: "Atribut", + literals: "Literal", + functionLiterals: "Literal Fungsi", + backcalls: "Pemanggilan Mundur", + tableLiterals: "Literal Tabel", + comprehensions: "Kompresi", + forLoop: "Perulangan For", + whileLoop: "Perulangan While", + continueStatement: "Pernyataan Lanjutkan", + conditionals: "Percabangan", + lineDecorators: "Dekorator Baris", + switch: "Switch", + objectOrientedProgramming: "Pemrograman Berorientasi Objek", + withStatement: "Pernyataan With", + do: "Do", + functionStubs: "Fungsi Sementara", + usingClause: "Klausa Using; Mengontrol Penugasan Destruktif", + yuescriptLibrary: "Pustaka YueScript", + licenseMit: "Lisensi: MIT", }, ptBr: { - introduction: 'Introdução', - installation: 'Instalação', - usage: 'Uso', - macro: 'Macro', - operator: 'Operadores', - module: 'Módulo', - assignment: 'Atribuição', - destructuringAssignment: 'Atribuição com desestruturação', - ifAssignment: 'Atribuição com if', - varargsAssignment: 'Atribuição de varargs', - whitespace: 'Espaços em branco', - comment: 'Comentários', - try: 'Try/Catch', - attributes: 'Atributos', - literals: 'Literais', - functionLiterals: 'Literais de função', - backcalls: 'Backcalls', - tableLiterals: 'Literais de tabela', - comprehensions: 'Compreensões', - forLoop: 'Laço for', - whileLoop: 'Laço while', - continueStatement: 'Instrução continue', - conditionals: 'Condicionais', - lineDecorators: 'Decoradores de linha', - switch: 'Switch', - objectOrientedProgramming: 'Programação orientada a objetos', - withStatement: 'Instrução with', - do: 'Do', - functionStubs: 'Stubs de função', - usingClause: 'Cláusula using; controlando atribuição destrutiva', - yuescriptLibrary: 'A biblioteca do YueScript', - licenseMit: 'Licença: MIT', + introduction: "Introdução", + installation: "Instalação", + usage: "Uso", + macro: "Macro", + operator: "Operadores", + module: "Módulo", + assignment: "Atribuição", + destructuringAssignment: "Atribuição com desestruturação", + ifAssignment: "Atribuição com if", + varargsAssignment: "Atribuição de varargs", + whitespace: "Espaços em branco", + comment: "Comentários", + try: "Try/Catch", + attributes: "Atributos", + literals: "Literais", + functionLiterals: "Literais de função", + backcalls: "Backcalls", + tableLiterals: "Literais de tabela", + comprehensions: "Compreensões", + forLoop: "Laço for", + whileLoop: "Laço while", + continueStatement: "Instrução continue", + conditionals: "Condicionais", + lineDecorators: "Decoradores de linha", + switch: "Switch", + objectOrientedProgramming: "Programação orientada a objetos", + withStatement: "Instrução with", + do: "Do", + functionStubs: "Stubs de função", + usingClause: "Cláusula using; controlando atribuição destrutiva", + yuescriptLibrary: "A biblioteca do YueScript", + licenseMit: "Licença: MIT", }, zh: { - introduction: '介绍', - installation: '安装', - usage: '使用方法', - macro: '宏', - operator: '操作符', - module: '模块', - assignment: '赋值', - destructuringAssignment: '解构赋值', - ifAssignment: 'if 赋值', - varargsAssignment: '可变参数赋值', - whitespace: '空白', - comment: '注释', - try: '错误处理', - attributes: '属性', - literals: '字面量', - functionLiterals: '函数字面量', - backcalls: '反向回调', - tableLiterals: '表格字面量', - comprehensions: '推导式', - forLoop: 'for 循环', - whileLoop: 'while 循环', - continueStatement: 'continue 语句', - conditionals: '条件语句', - lineDecorators: '代码行修饰符', - switch: 'switch 语句', - objectOrientedProgramming: '面向对象编程', - withStatement: 'with 语句', - do: 'do 语句', - functionStubs: '函数存根', - usingClause: '使用 using 语句:防止破坏性赋值', - yuescriptLibrary: '月之脚本语言库', - licenseMit: 'MIT 许可证', + introduction: "介绍", + installation: "安装", + usage: "使用方法", + macro: "宏", + operator: "操作符", + module: "模块", + assignment: "赋值", + destructuringAssignment: "解构赋值", + ifAssignment: "if 赋值", + varargsAssignment: "可变参数赋值", + whitespace: "空白", + comment: "注释", + try: "错误处理", + attributes: "属性", + literals: "字面量", + functionLiterals: "函数字面量", + backcalls: "反向回调", + tableLiterals: "表格字面量", + comprehensions: "推导式", + forLoop: "for 循环", + whileLoop: "while 循环", + continueStatement: "continue 语句", + conditionals: "条件语句", + lineDecorators: "代码行修饰符", + switch: "switch 语句", + objectOrientedProgramming: "面向对象编程", + withStatement: "with 语句", + do: "do 语句", + functionStubs: "函数存根", + usingClause: "使用 using 语句:防止破坏性赋值", + yuescriptLibrary: "月之脚本语言库", + licenseMit: "MIT 许可证", }, -} as const +} as const; -type SidebarLocale = keyof typeof sidebarText +type SidebarLocale = keyof typeof sidebarText; type SidebarGroupText = { - gettingStarted: string - languageBasics: string - assignment: string - functions: string - controlFlow: string - dataStructures: string - objects: string - advancedFeatures: string - reference: string -} + gettingStarted: string; + languageBasics: string; + assignment: string; + functions: string; + controlFlow: string; + dataStructures: string; + objects: string; + advancedFeatures: string; + reference: string; +}; const sidebarGroups: Record = { de: { - gettingStarted: 'Erste Schritte', - languageBasics: 'Sprachgrundlagen', - assignment: 'Zuweisung', - functions: 'Funktionen', - controlFlow: 'Kontrollfluss', - dataStructures: 'Datenstrukturen', - objects: 'Objekte', - advancedFeatures: 'Erweiterte Funktionen', - reference: 'Referenz', + gettingStarted: "Erste Schritte", + languageBasics: "Sprachgrundlagen", + assignment: "Zuweisung", + functions: "Funktionen", + controlFlow: "Kontrollfluss", + dataStructures: "Datenstrukturen", + objects: "Objekte", + advancedFeatures: "Erweiterte Funktionen", + reference: "Referenz", }, en: { - gettingStarted: 'Getting Started', - languageBasics: 'Language Basics', - assignment: 'Assignment', - functions: 'Functions', - controlFlow: 'Control Flow', - dataStructures: 'Data Structures', - objects: 'Objects', - advancedFeatures: 'Advanced Features', - reference: 'Reference', + gettingStarted: "Getting Started", + languageBasics: "Language Basics", + assignment: "Assignment", + functions: "Functions", + controlFlow: "Control Flow", + dataStructures: "Data Structures", + objects: "Objects", + advancedFeatures: "Advanced Features", + reference: "Reference", }, idId: { - gettingStarted: 'Memulai', - languageBasics: 'Dasar-dasar Bahasa', - assignment: 'Penugasan', - functions: 'Fungsi', - controlFlow: 'Alur Kontrol', - dataStructures: 'Struktur Data', - objects: 'Objek', - advancedFeatures: 'Fitur Lanjutan', - reference: 'Referensi', + gettingStarted: "Memulai", + languageBasics: "Dasar-dasar Bahasa", + assignment: "Penugasan", + functions: "Fungsi", + controlFlow: "Alur Kontrol", + dataStructures: "Struktur Data", + objects: "Objek", + advancedFeatures: "Fitur Lanjutan", + reference: "Referensi", }, ptBr: { - gettingStarted: 'Primeiros passos', - languageBasics: 'Fundamentos da linguagem', - assignment: 'Atribuição', - functions: 'Funções', - controlFlow: 'Controle de fluxo', - dataStructures: 'Estruturas de dados', - objects: 'Objetos', - advancedFeatures: 'Recursos avançados', - reference: 'Referência', + gettingStarted: "Primeiros passos", + languageBasics: "Fundamentos da linguagem", + assignment: "Atribuição", + functions: "Funções", + controlFlow: "Controle de fluxo", + dataStructures: "Estruturas de dados", + objects: "Objetos", + advancedFeatures: "Recursos avançados", + reference: "Referência", }, zh: { - gettingStarted: '起步', - languageBasics: '语言基础', - assignment: '赋值', - functions: '函数', - controlFlow: '控制流', - dataStructures: '数据结构', - objects: '面向对象', - advancedFeatures: '高级特性', - reference: '参考', + gettingStarted: "起步", + languageBasics: "语言基础", + assignment: "赋值", + functions: "函数", + controlFlow: "控制流", + dataStructures: "数据结构", + objects: "面向对象", + advancedFeatures: "高级特性", + reference: "参考", }, -} +}; function createSidebar(basePath: string, locale: SidebarLocale) { - const text = sidebarText[locale] - const group = sidebarGroups[locale] + const text = sidebarText[locale]; + const group = sidebarGroups[locale]; return [ { text: group.gettingStarted, items: [ - { text: text.introduction, link: `${basePath}/getting-started/introduction` }, - { text: text.installation, link: `${basePath}/getting-started/installation` }, + { + text: text.introduction, + link: `${basePath}/getting-started/introduction`, + }, + { + text: text.installation, + link: `${basePath}/getting-started/installation`, + }, { text: text.usage, link: `${basePath}/getting-started/usage` }, - ] + ], }, { text: group.languageBasics, collapsed: true, items: [ - { text: text.whitespace, link: `${basePath}/language-basics/whitespace` }, + { + text: text.whitespace, + link: `${basePath}/language-basics/whitespace`, + }, { text: text.comment, link: `${basePath}/language-basics/comment` }, { text: text.literals, link: `${basePath}/language-basics/literals` }, { text: text.operator, link: `${basePath}/language-basics/operator` }, - { text: text.attributes, link: `${basePath}/language-basics/attributes` }, - ] + { + text: text.attributes, + link: `${basePath}/language-basics/attributes`, + }, + ], }, { text: group.assignment, collapsed: true, items: [ { text: text.assignment, link: `${basePath}/assignment/assignment` }, - { text: text.destructuringAssignment, link: `${basePath}/assignment/destructuring-assignment` }, - { text: text.ifAssignment, link: `${basePath}/assignment/if-assignment` }, - { text: text.varargsAssignment, link: `${basePath}/assignment/varargs-assignment` }, - { text: text.usingClause, link: `${basePath}/assignment/the-using-clause-controlling-destructive-assignment` }, - ] + { + text: text.destructuringAssignment, + link: `${basePath}/assignment/destructuring-assignment`, + }, + { + text: text.ifAssignment, + link: `${basePath}/assignment/if-assignment`, + }, + { + text: text.varargsAssignment, + link: `${basePath}/assignment/varargs-assignment`, + }, + { + text: text.usingClause, + link: `${basePath}/assignment/the-using-clause-controlling-destructive-assignment`, + }, + ], }, { text: group.functions, collapsed: true, items: [ - { text: text.functionLiterals, link: `${basePath}/functions/function-literals` }, + { + text: text.functionLiterals, + link: `${basePath}/functions/function-literals`, + }, { text: text.backcalls, link: `${basePath}/functions/backcalls` }, - { text: text.functionStubs, link: `${basePath}/functions/function-stubs` }, - ] + { + text: text.functionStubs, + link: `${basePath}/functions/function-stubs`, + }, + ], }, { text: group.controlFlow, collapsed: true, items: [ - { text: text.conditionals, link: `${basePath}/control-flow/conditionals` }, + { + text: text.conditionals, + link: `${basePath}/control-flow/conditionals`, + }, { text: text.forLoop, link: `${basePath}/control-flow/for-loop` }, { text: text.whileLoop, link: `${basePath}/control-flow/while-loop` }, - { text: text.continueStatement, link: `${basePath}/control-flow/continue` }, + { + text: text.continueStatement, + link: `${basePath}/control-flow/continue`, + }, { text: text.switch, link: `${basePath}/control-flow/switch` }, - ] + ], }, { text: group.dataStructures, collapsed: true, items: [ - { text: text.tableLiterals, link: `${basePath}/data-structures/table-literals` }, - { text: text.comprehensions, link: `${basePath}/data-structures/comprehensions` }, - ] + { + text: text.tableLiterals, + link: `${basePath}/data-structures/table-literals`, + }, + { + text: text.comprehensions, + link: `${basePath}/data-structures/comprehensions`, + }, + ], }, { text: group.objects, collapsed: true, items: [ - { text: text.objectOrientedProgramming, link: `${basePath}/objects/object-oriented-programming` }, - { text: text.withStatement, link: `${basePath}/objects/with-statement` }, - ] + { + text: text.objectOrientedProgramming, + link: `${basePath}/objects/object-oriented-programming`, + }, + { + text: text.withStatement, + link: `${basePath}/objects/with-statement`, + }, + ], }, { text: group.advancedFeatures, @@ -340,46 +390,104 @@ function createSidebar(basePath: string, locale: SidebarLocale) { items: [ { text: text.macro, link: `${basePath}/advanced/macro` }, { text: text.module, link: `${basePath}/advanced/module` }, - { text: text.lineDecorators, link: `${basePath}/advanced/line-decorators` }, + { + text: text.lineDecorators, + link: `${basePath}/advanced/line-decorators`, + }, { text: text.do, link: `${basePath}/advanced/do` }, { text: text.try, link: `${basePath}/advanced/try` }, - ] + ], }, { text: group.reference, collapsed: true, items: [ - { text: text.yuescriptLibrary, link: `${basePath}/reference/the-yuescript-library` }, + { + text: text.yuescriptLibrary, + link: `${basePath}/reference/the-yuescript-library`, + }, { text: text.licenseMit, link: `${basePath}/reference/license-mit` }, - ] + ], }, - ] + ]; } export default defineConfig({ - title: 'YueScript', - description: 'A language that compiles to Lua', - base: '/', + title: "YueScript", + description: "A language that compiles to Lua", + base: "/", head: [ - ['meta', { name: 'theme-color', content: '#b4ac8f' }], - ['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }], - ['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }], - ['meta', { property: 'og:title', content: 'YueScript' }], - ['meta', { property: 'og:description', content: 'A language that compiles to Lua' }], - ['meta', { property: 'og:type', content: 'website' }], - ['meta', { property: 'og:image', content: '/image/yuescript.png' }], - ['meta', { property: 'og:image:secure_url', content: '/image/yuescript.png' }], - ['meta', { property: 'og:image:type', content: 'image/png' }], - ['meta', { property: 'og:image:width', content: '1200' }], - ['meta', { property: 'og:image:height', content: '1200' }], - ['link', { rel: 'icon', href: '/image/favicon/favicon-16x16.png', sizes: '16x16', type: 'image/png' }], - ['link', { rel: 'icon', href: '/image/favicon/favicon-32x32.png', sizes: '32x32', type: 'image/png' }], - ['link', { rel: 'apple-touch-icon', href: '/image/favicon/apple-touch-icon.png', sizes: '180x180', type: 'image/png' }], - ['link', { rel: 'android-chrome', href: '/image/favicon/android-chrome-192x192.png', sizes: '192x192', type: 'image/png' }], - ['link', { rel: 'android-chrome', href: '/image/favicon/android-chrome-512x512.png', sizes: '512x512', type: 'image/png' }], - ['script', {}, 'window.global = window;'], + ["meta", { name: "theme-color", content: "#b4ac8f" }], + ["meta", { name: "apple-mobile-web-app-capable", content: "yes" }], + [ + "meta", + { name: "apple-mobile-web-app-status-bar-style", content: "black" }, + ], + ["meta", { property: "og:title", content: "YueScript" }], + [ + "meta", + { + property: "og:description", + content: "A language that compiles to Lua", + }, + ], + ["meta", { property: "og:type", content: "website" }], + ["meta", { property: "og:image", content: "/image/yuescript.png" }], + [ + "meta", + { property: "og:image:secure_url", content: "/image/yuescript.png" }, + ], + ["meta", { property: "og:image:type", content: "image/png" }], + ["meta", { property: "og:image:width", content: "1200" }], + ["meta", { property: "og:image:height", content: "1200" }], + [ + "link", + { + rel: "icon", + href: "/image/favicon/favicon-16x16.png", + sizes: "16x16", + type: "image/png", + }, + ], [ - 'script', + "link", + { + rel: "icon", + href: "/image/favicon/favicon-32x32.png", + sizes: "32x32", + type: "image/png", + }, + ], + [ + "link", + { + rel: "apple-touch-icon", + href: "/image/favicon/apple-touch-icon.png", + sizes: "180x180", + type: "image/png", + }, + ], + [ + "link", + { + rel: "android-chrome", + href: "/image/favicon/android-chrome-192x192.png", + sizes: "192x192", + type: "image/png", + }, + ], + [ + "link", + { + rel: "android-chrome", + href: "/image/favicon/android-chrome-512x512.png", + sizes: "512x512", + type: "image/png", + }, + ], + ["script", {}, "window.global = window;"], + [ + "script", {}, `var Module = { onRuntimeInitialized: function() { @@ -400,16 +508,14 @@ export default defineConfig({ s.src = '/js/yuescript.js'; s.async = true; document.head.appendChild(s); -})();` - ] +})();`, + ], ], vite: { - publicDir: resolve(__dirname, 'public'), + publicDir: resolve(__dirname, "public"), }, markdown: { - languages: [ - yuescriptLanguage, - ], + languages: [yuescriptLanguage], theme: { light: lightPlus, dark: darkPlus, @@ -417,74 +523,74 @@ export default defineConfig({ }, locales: { root: { - label: 'English', - lang: 'en-US', - description: 'A language that compiles to Lua', + label: "English", + lang: "en-US", + description: "A language that compiles to Lua", themeConfig: { nav: [ - { text: 'Documentation', link: '/doc/' }, - { text: 'Try yue!', link: '/try/' }, - { text: 'GitHub', link: 'https://github.com/IppClub/Yuescript' } + { text: "Documentation", link: "/doc/" }, + { text: "Try yue!", link: "/try/" }, + { text: "GitHub", link: "https://github.com/IppClub/Yuescript" }, ], - sidebar: createSidebar('/doc', 'en'), - } + sidebar: createSidebar("/doc", "en"), + }, }, - 'id-id': { - label: 'Bahasa Indonesia', - lang: 'id-ID', - description: 'Bahasa yang dikompilasi ke Lua', + "id-id": { + label: "Bahasa Indonesia", + lang: "id-ID", + description: "Bahasa yang dikompilasi ke Lua", themeConfig: { nav: [ - { text: 'Dokumentasi', link: '/id-id/doc/' }, - { text: 'Coba Yue!', link: '/id-id/try/' }, - { text: 'GitHub', link: 'https://github.com/IppClub/Yuescript' } + { text: "Dokumentasi", link: "/id-id/doc/" }, + { text: "Coba Yue!", link: "/id-id/try/" }, + { text: "GitHub", link: "https://github.com/IppClub/Yuescript" }, ], - sidebar: createSidebar('/id-id/doc', 'idId'), - } + sidebar: createSidebar("/id-id/doc", "idId"), + }, }, de: { - label: 'Deutsch', - lang: 'de-DE', - description: 'Eine Sprache, die zu Lua kompiliert', + label: "Deutsch", + lang: "de-DE", + description: "Eine Sprache, die zu Lua kompiliert", themeConfig: { nav: [ - { text: 'Dokumentation', link: '/de/doc/' }, - { text: 'Yue ausprobieren!', link: '/de/try/' }, - { text: 'GitHub', link: 'https://github.com/IppClub/Yuescript' } + { text: "Dokumentation", link: "/de/doc/" }, + { text: "Yue ausprobieren!", link: "/de/try/" }, + { text: "GitHub", link: "https://github.com/IppClub/Yuescript" }, ], - sidebar: createSidebar('/de/doc', 'de'), - } + sidebar: createSidebar("/de/doc", "de"), + }, }, - 'pt-br': { - label: 'Português (Brasil)', - lang: 'pt-BR', - description: 'Uma linguagem que compila para Lua', + "pt-br": { + label: "Português (Brasil)", + lang: "pt-BR", + description: "Uma linguagem que compila para Lua", themeConfig: { nav: [ - { text: 'Documentação', link: '/pt-br/doc/' }, - { text: 'Experimente Yue!', link: '/pt-br/try/' }, - { text: 'GitHub', link: 'https://github.com/IppClub/Yuescript' } + { text: "Documentação", link: "/pt-br/doc/" }, + { text: "Experimente Yue!", link: "/pt-br/try/" }, + { text: "GitHub", link: "https://github.com/IppClub/Yuescript" }, ], - sidebar: createSidebar('/pt-br/doc', 'ptBr'), - } + sidebar: createSidebar("/pt-br/doc", "ptBr"), + }, }, zh: { - label: '简体中文', - lang: 'zh-CN', - description: '一门编译到 Lua 的语言', + label: "简体中文", + lang: "zh-CN", + description: "一门编译到 Lua 的语言", themeConfig: { nav: [ - { text: '文档', link: '/zh/doc/' }, - { text: '试一试!', link: '/zh/try/' }, - { text: 'GitHub', link: 'https://github.com/IppClub/Yuescript' } + { text: "文档", link: "/zh/doc/" }, + { text: "试一试!", link: "/zh/try/" }, + { text: "GitHub", link: "https://github.com/IppClub/Yuescript" }, ], - sidebar: createSidebar('/zh/doc', 'zh'), - } + sidebar: createSidebar("/zh/doc", "zh"), + }, }, }, themeConfig: { search: { - provider: 'local' - } - } -}) + provider: "local", + }, + }, +}); diff --git a/doc/docs/.vitepress/env.d.ts b/doc/docs/.vitepress/env.d.ts index 0f28852..f01ea51 100644 --- a/doc/docs/.vitepress/env.d.ts +++ b/doc/docs/.vitepress/env.d.ts @@ -1,19 +1,19 @@ /// -declare module '*.vue' { - import type { DefineComponent } from 'vue' - const component: DefineComponent<{}, {}, any> - export default component +declare module "*.vue" { + import type { DefineComponent } from "vue"; + const component: DefineComponent<{}, {}, any>; + export default component; } declare global { interface Window { yue?: { - version: () => string - tolua: (code: string, ...args: unknown[]) => [string, string] - exec: (code: string) => string - } + version: () => string; + tolua: (code: string, ...args: unknown[]) => [string, string]; + exec: (code: string) => string; + }; } } -export {} +export {}; diff --git a/doc/docs/.vitepress/grammars/yuescript.tmLanguage.json b/doc/docs/.vitepress/grammars/yuescript.tmLanguage.json index 62ac5fb..3a57344 100644 --- a/doc/docs/.vitepress/grammars/yuescript.tmLanguage.json +++ b/doc/docs/.vitepress/grammars/yuescript.tmLanguage.json @@ -1,689 +1,687 @@ { - "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - "scopeName": "source.yue", - "name": "YueScript", - "fileTypes": [ - "yue" - ], - "patterns": [ - { - "match": "\\A(#!).*$\\n?", - "name": "comment.line.shebang.yue", - "captures": { - "1": { - "name": "punctuation.definition.comment.yue" - } - } - }, - { - "match": "(\\(.*?\\))?\\s*([=-]>)", - "name": "meta.inline.function.yue", - "captures": { - "1": { - "name": "variable.parameter.function.yue" - }, - "2": { - "name": "storage.type.function.yue" - } - } - }, - { - "match": "(?<=^|\\bdo\\b|[=-]>)\\s*(\\(.*?\\))?\\s*(<[=-]\\s*(?=[a-zA-Z_]))", - "name": "meta.inline.function.yue", - "captures": { - "1": { - "name": "variable.parameter.function.yue" - }, - "2": { - "name": "storage.type.function.yue" - } - } - }, - { - "match": "(\\b[A-Z]\\w*)\\s*", - "name": "entity.name.type.class.yue", - "captures": { - "1": { - "name": "entity.name.type.class" - } - } - }, - { - "begin": "\\[(=*)\\[", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.yue" - } - }, - "end": "\\]\\1\\]", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.yue" - } - }, - "name": "string.quoted.other.multiline.yue" - }, - { - "begin": "(?", - "name": "constant.language.yue" - }, - { - "match": "<>", - "name": "constant.language.yue" - }, - { - "match": "<(\"(?:\\\\\"|[^\"])*\")>", - "name": "constant.language.yue", - "captures": { - "1": { - "name": "string.quoted.double.yue" - } - } - }, - { - "match": "<('(?:\\\\'|[^'])*')>", - "name": "constant.language.yue", - "captures": { - "1": { - "name": "string.quoted.single.yue" - } - } - }, - { - "match": "<\\w+>", - "name": "invalid.illegal.yue" - } - ] - }, - { - "match": "(\\+|\\-|\\*|/|%|\\^|//|\\||\\&|>>|<<|(?|>=|<|<=", - "name": "keyword.operator.yue" - }, - { - "match": "#|\\-|~|\\?|!", - "name": "keyword.operator.yue" - }, - { - "match": "\\|>|=|:=|(?)", - "name": "variable.language.yue" - }, - { - "match": "(?x)\n\t\t\t\t(?<=^|\\s)\n\t\t\t\t(?=@?[a-zA-Z\\$_]\\??)\n\t\t\t\t(\n\t\t\t\t\t@?[a-zA-Z\\$_]\\??(\\w|\\$|:|\\.)*\\s*\n\t\t\t\t\t(?=[:=](\\s*\\(.*\\))?\\s*([=-]>))\n\t\t\t\t)\n\t\t\t", - "name": "meta.function.yue", - "captures": { - "1": { - "name": "entity.name.function.yue" - }, - "2": { - "name": "entity.name.function.yue" - }, - "3": { - "name": "variable.parameter.function.yue" - }, - "4": { - "name": "storage.type.function.yue" - } - } - }, - { - "match": "\\b__(class|base|init|inherited|mode|name|add|sub|mul|div|mod|pow|unm|idiv|band|bor|bxor|bnot|shl|shr|concat|len|eq|lt|le|index|newindex|call|metatable|gc|close|tostring|pairs|ipairs)\\b", - "name": "entity.name.function.yue" - }, - { - "match": "(?:\\bclass\\b)\\s+(@?[a-zA-Z\\$_][\\w\\.]*)?(?:\\s+(?:\\bextends\\b)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*))?", - "name": "meta.class.yue", - "captures": { - "1": { - "name": "storage.type.class.yue" - }, - "2": { - "name": "entity.name.type.class.yue" - }, - "3": { - "name": "keyword.control.inheritance.yue" - }, - "4": { - "name": "entity.other.inherited-class.yue" - } - } - }, - { - "match": "(?x)\\b(?>|<<|(?>|<<|(?)", + "name": "meta.inline.function.yue", + "captures": { + "1": { + "name": "variable.parameter.function.yue" + }, + "2": { + "name": "storage.type.function.yue" + } + } + }, + { + "match": "(?<=^|\\bdo\\b|[=-]>)\\s*(\\(.*?\\))?\\s*(<[=-]\\s*(?=[a-zA-Z_]))", + "name": "meta.inline.function.yue", + "captures": { + "1": { + "name": "variable.parameter.function.yue" + }, + "2": { + "name": "storage.type.function.yue" + } + } + }, + { + "match": "(\\b[A-Z]\\w*)\\s*", + "name": "entity.name.type.class.yue", + "captures": { + "1": { + "name": "entity.name.type.class" + } + } + }, + { + "begin": "\\[(=*)\\[", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.yue" + } + }, + "end": "\\]\\1\\]", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.yue" + } + }, + "name": "string.quoted.other.multiline.yue" + }, + { + "begin": "(?", + "name": "constant.language.yue" + }, + { + "match": "<>", + "name": "constant.language.yue" + }, + { + "match": "<(\"(?:\\\\\"|[^\"])*\")>", + "name": "constant.language.yue", + "captures": { + "1": { + "name": "string.quoted.double.yue" + } + } + }, + { + "match": "<('(?:\\\\'|[^'])*')>", + "name": "constant.language.yue", + "captures": { + "1": { + "name": "string.quoted.single.yue" + } + } + }, + { + "match": "<\\w+>", + "name": "invalid.illegal.yue" + } + ] + }, + { + "match": "(\\+|\\-|\\*|/|%|\\^|//|\\||\\&|>>|<<|(?|>=|<|<=", + "name": "keyword.operator.yue" + }, + { + "match": "#|\\-|~|\\?|!", + "name": "keyword.operator.yue" + }, + { + "match": "\\|>|=|:=|(?)", + "name": "variable.language.yue" + }, + { + "match": "(?x)\n\t\t\t\t(?<=^|\\s)\n\t\t\t\t(?=@?[a-zA-Z\\$_]\\??)\n\t\t\t\t(\n\t\t\t\t\t@?[a-zA-Z\\$_]\\??(\\w|\\$|:|\\.)*\\s*\n\t\t\t\t\t(?=[:=](\\s*\\(.*\\))?\\s*([=-]>))\n\t\t\t\t)\n\t\t\t", + "name": "meta.function.yue", + "captures": { + "1": { + "name": "entity.name.function.yue" + }, + "2": { + "name": "entity.name.function.yue" + }, + "3": { + "name": "variable.parameter.function.yue" + }, + "4": { + "name": "storage.type.function.yue" + } + } + }, + { + "match": "\\b__(class|base|init|inherited|mode|name|add|sub|mul|div|mod|pow|unm|idiv|band|bor|bxor|bnot|shl|shr|concat|len|eq|lt|le|index|newindex|call|metatable|gc|close|tostring|pairs|ipairs)\\b", + "name": "entity.name.function.yue" + }, + { + "match": "(?:\\bclass\\b)\\s+(@?[a-zA-Z\\$_][\\w\\.]*)?(?:\\s+(?:\\bextends\\b)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*))?", + "name": "meta.class.yue", + "captures": { + "1": { + "name": "storage.type.class.yue" + }, + "2": { + "name": "entity.name.type.class.yue" + }, + "3": { + "name": "keyword.control.inheritance.yue" + }, + "4": { + "name": "entity.other.inherited-class.yue" + } + } + }, + { + "match": "(?x)\\b(?>|<<|(?>|<<|(? diff --git a/doc/docs/.vitepress/theme/components/HomeFooter.vue b/doc/docs/.vitepress/theme/components/HomeFooter.vue index 5ee116c..640b4a7 100644 --- a/doc/docs/.vitepress/theme/components/HomeFooter.vue +++ b/doc/docs/.vitepress/theme/components/HomeFooter.vue @@ -1,7 +1,7 @@