豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 430 行 · 23871 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。
寻观「包配置」之「包依赖」之书。
寻观「批量发布」之「发布工具」之书。
寻观「网页客户端」之「核心」之书。
寻观「癸象工具」之「癸象数据结构」之书。

「:文言:独档备其所依,重建不问原地。汉语:在独立暂存目录实际构建,发行材料不依赖原工作树的绝对路径。:」
「包存径」乃化「包记录」而「字符串」也。
「包存径」者会「记录」而
  『软件/』附(「记录」中「零」)附『/』附(「记录」中「一」)
也。

「:文言:工具链唯网页汇编之模:编译器与豫构,由 Node 宿主行之。汉语:工具链只有 Wasm 模块:编译器 yy4_bs.wasm 与豫构 yy豫构.wasm,用 Node 宿主(随 豫言操作系统 目录一起复制)运行。:」
「备运行时」乃化「字符串」而化「字符串」而「有」也。
「备运行时」者会「工具链」而会「根」而
  虑「无」者
    「复制文件」于(「路径合并」于「工具链」于『yy4_bs.wasm』)
    于(「路径合并」于「根」于『yy4_bs.wasm』)
  而
  虑「无」者
    「复制文件」于(「路径合并」于「工具链」于『yy豫构.wasm』)
    于(「路径合并」于「根」于『yy豫构.wasm』)
  而
  若「文件存在」于(「路径合并」于「工具链」于『LICENSE』)则
    「复制文件」于(「路径合并」于「工具链」于『LICENSE』)
    于(「路径合并」于「根」于『LICENSE』)
  否则
    「发生事故」授以「有」于『工具链缺少 LICENSE,不能再分发』
也。

「:文言:重建唯需节点宿主三文与同代之值桥,同于工具链包之 yy稳定节点宿主;故惟复此四者,不复全目,免裸机试具之链与无用之巨文。值桥为构建之产,先取宿主之旁者,无则取工具链包者。汉语:独立构建树重建时只需 Node 宿主的三个文件和同代值桥(与 Wasm 工具链包里的 yy稳定节点宿主 相同),所以只把这四个文件复制到 豫言操作系统/宿主/节点/,不再复制整个 豫言操作系统/(其中有裸机测试夹具的符号链接和许多无关文件)。值桥是构建产物:先取工具链里宿主旁的那份,没有时取 yy稳定节点宿主 里的。:」
「节点宿主文件们」乃「列」于「字符串」也。
「节点宿主文件们」者「列」【『宿主.cjs』,『进程桥接.cjs』,『编译线程.cjs』】也。

「备操作系统」乃化「字符串」而化「字符串」而「有」也。
「备操作系统」者会「工具链」而会「根」而
  虑「源目录」者「路径合并」于「工具链」于『豫言操作系统/宿主/节点』而
  虑「目的目录」者「路径合并」于「根」于『豫言操作系统/宿主/节点』而
  虑「无」者
    「态射」授以「字符串」授以「有」
    于「节点宿主文件们」
    于(会「名」而「复制文件」于(「路径合并」于「源目录」于「名」)于(「路径合并」于「目的目录」于「名」))
  而
  虑「旁桥」者「路径合并」于「源目录」于『yy节点值桥接.wasm』而
  虑「包桥」者
    「路径合并」于「工具链」于『yy稳定节点宿主/yy节点值桥接.wasm』而
    虑「目的桥」者「路径合并」于「目的目录」于『yy节点值桥接.wasm』而
    若「文件存在」于「旁桥」则
      「复制文件」于「旁桥」于「目的桥」
    否则若「文件存在」于「包桥」则
      「复制文件」于「包桥」于「目的桥」
    否则
      「发生事故」授以「有」
      于『工具链缺少节点值桥 yy节点值桥接.wasm;请先在工具链目录运行 yy豫构.wasm 目标 值桥』
也。

「备文档资源」乃化「字符串」而化「字符串」而「有」也。
「备文档资源」者会「工具链」而会「根」而
  虑「无」者
    「态射」授以「字符串」授以「有」
    于(「列」【
      『应用/文档站/库/文档界面/主题.css』,
      『应用/文档站/库/文档界面/界面.js』,
      『应用/文档站/文档网站生成器/界面.css』,
      『应用/文档站/源码树浏览器/资源/界面.css』,
      『应用/文档站/源码树浏览器/资源/浏览.js』
    】)于(会「径」而「复制文件」于(「路径合并」于「工具链」于「径」)于(「路径合并」于「根」于「径」))
  而
  「元」
也。

「补阅读导航」乃化「字符串」而化「字符串」而「有」也。
「补阅读导航」者会「目录」而会「导航」而
  虑「无」者
    「态射」授以「字符串」授以「有」
    于(「读文件夹」于「目录」)
    于(会「名」而
      若「串结尾是它吗」于『.html』于「名」则
        虑「径」者「路径合并」于「目录」于「名」而
        「写文件」
          于「径」
          于(「串查找替换」于(「读文件」于「径」)于『</body>』于(「导航」附『</body>』))
      否则
        「元」
    )
  而
  「元」
也。

「编码文串列表」乃化(「列」于「字符串」)而「字符串」也。
「编码文串列表」者会「列值」而
  『[』附(「间合」
    于『,』
    于(「态射」授以「字符串」授以「字符串」于「列值」于(会「文」而『"』附(「癸象字符串转义」于「文」)附『"』)))附
      『]』
也。

「生成文档」乃化「字符串」而化「包记录」而化「包」而化「字符串」而「有」也。
「生成文档」者会「工具链」而会「记录」而会「配置」而会「输出」而
  虑「根」者「包存径」于「记录」而
  虑「包文件」者
    「路径合并」于「根」于(「获取文件名」于(「记录」中「二」))而
    虑「暂接口」者
      「路径合并」于(「获取当前路径」于「元」)于『接口文档暂存』而
      虑「无」者「建目录」于「输出」而
      「:文言:包之说明与所依,另录为静态籍。汉语:门户只读取 JSON 元数据和转义说明,不加载上传者 HTML。:」
  虑「依赖名」者
    「态射」授以「包引用」授以「字符串」
    于(「配置数据」之「包依赖」于「配置」)
    于(会「引用」而
      (鉴「引用」中「零」而
      有「可无」则「包所有者」于「配置」
      或有(「可有」于「主」)则「主」)附『 / 』附(「引用」中「一」))而
      虑「无」者
        「写文件」
          于(「路径合并」于「输出」于『包信息.json』)
          于(『{"dependencies":』附(「编码文串列表」于「依赖名」)附『,"readmes":』附(「编码文串列表」
            于(「包说明」于「配置」))附『}』)而
      「:文言:接口之败明记,源码之览不废;残篇留于构建暂地,不入发行。汉语:API 失败不冒充成功,也不把部分生成物装入 ZIP。:」
  虑「接口成」者
    「尝试运行」授以「爻」
    于(会「无」而
    虑「无」者
      「行步骤」于(「路径合并」于「工具链」于『yy文档网站生成器』)
      于(「列」【『构建包』,「包文件」,「暂接口」】)而
      虑「无」者
        「须」
          于(「文件存在」于(「路径合并」于「暂接口」于『index.html』))
          于『接口文档缺少首页』
      而
      「阳」
    )
    于(会「错」而(「打印行」
      于(『API 文档生成失败,保留源码阅读:』附「错」);
      「阴」))而
      虑「无」者
        若「接口成」则「行步骤」
          于『mv』
          于(「列」【「暂接口」,(「路径合并」于「输出」于『接口』)】)
        否则
          「元」
      而
      虑「源码页」者「路径合并」于「输出」于『源码浏览』
      而
      虑「无」者
        「行步骤」于(「路径合并」于「工具链」于『yy源码树浏览器』)
        于(「列」【『构建源码』,「根」,「源码页」】)
      而
      虑「无」者
        「须」于(「文件存在」于(「路径合并」于「源码页」于『index.html』))于『源码浏览缺少首页』
      而
      虑「导航」者
        『<nav aria-label="包文档导航" style="position:fixed;bottom:1rem;right:1rem;z-index:100;padding:.6rem;background:white;color:#222;border:1px solid #888;border-radius:.4rem;writing-mode:horizontal-tb"><a href="../index.html">包说明 / 阅读首页</a> · <a href="../源码浏览/index.html">源码浏览</a>』
          附(若「接口成」则『 · <a href="../接口/index.html">API 文档</a>』否则『 · API 文档生成失败』)附『</nav>』
      而
      虑「无」者「补阅读导航」于「源码页」于「导航」
      而
      虑「无」者
        若「接口成」则「补阅读导航」于(「路径合并」于「输出」于『接口』)于「导航」否则「元」
      而
      虑「说明」者
        「串组合并」于(「态射」授以「字符串」授以「字符串」
          于(「包说明」于「配置」)
          于(会「径」而
            『<section><h2>』附(「转义网页文字」于「径」)附『</h2><pre>』附(「转义网页文字」
              于(「读文件」于(「路径合并」于「根」于「径」)))附『</pre></section>』))
      而
      虑「无」者
        「写文件」
          于(「路径合并」于「输出」于『index.html』)
          于(『<!doctype html><html lang="zh-CN"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>包阅读首页</title><style>body{max-width:64rem;margin:2rem auto;padding:1rem;font:18px/1.7 system-ui}pre{white-space:pre-wrap;overflow-wrap:anywhere}nav{margin:1rem 0}</style><body><h1>』
            附
              (「转义网页文字」于((「包所有者」于「配置」)附『 / 』附(「包名」于「配置」)附『 @ 』附(「包版本」
                于「配置」)))附
                  『</h1><p>』附(「转义网页文字」于(「包简介」于「配置」))附
                    『</p><nav><a href="源码浏览/index.html">览源码 / 源码浏览</a> · 』附
                      (
                        若「接口成」则
                          『<a href="接口/index.html">览接口 / API 文档</a>(已生成)』
                        否则
                          『接口未成 / API 文档生成失败;源码仍可阅读。』
                      )附
                        『</nav><p>源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。</p>』附「说明」附
                          『</body></html>』)
      而
      「写文件」
        于(「路径合并」于「输出」于『生成状态.json』)
        于(『{"源码浏览":"已生成","API文档":"』附(
          若「接口成」则『已生成』否则『生成失败』)附『"}』)
也。

「:文言:构建之树唯载所依之闭包,父与兄弟不在,故去其「包含在」「包含包」,免豫构两向之校败之;发行之源码仍存原文。汉语:独立构建树只含依赖闭包,父包与兄弟包不在其中,所以删去暂存包描述里的「包含在」「包含包」两个字段(语句自行首起,到以“也。”结尾的行为止),免得豫构的两向校验失败;发行源码里的包描述保持原样。:」
「去层级行们」乃化(「列」于「字符串」)而化「爻」而(「列」于「字符串」)也。
「去层级行们」者会「行们」而会「跳过中」而
  鉴「行们」而
    有「罄」则「罄」授以「字符串」
    或有(「缀」于「此行」于「余」)则
      若「跳过中」则
        「去层级行们」于「余」于(「非」于(「串结尾是它吗」于『也。』于「此行」))
      否则若「或者」于(「串开头是它吗」于『「包含在」者』于「此行」)
      于(「串开头是它吗」于『「包含包」者』于「此行」)则
        「去层级行们」
          于「余」
          于(「非」于(「串结尾是它吗」于『也。』于「此行」))
      否则
        「缀」于「此行」于(「去层级行们」于「余」于「阴」)
也。

「暂存包去层级」乃化「字符串」而「有」也。
「暂存包去层级」者会「包文件」而
  虑「行们」者
    「按字符分段」于『「:换行:」』于(「读文件」于「包文件」)
  而
  「写文件」于「包文件」于(「间合」于『「:换行:」』于(「去层级行们」于「行们」于「阴」))
也。

「:文言:纯接口之包,其源唯「。接口。豫」「。应用接口。豫」声明之文,常编译器不能以之为模而检之,故独立构建时略其类型检查,惟打包源码与文档。汉语:纯接口包的源文件只有 。接口。豫/。应用接口。豫 声明文件,普通编译器不能把它们当模块检查(见豫言操作系统接口总纲),所以独立构建时跳过类型检查,只打包源码与文档。:」
「纯接口包吗」乃化「字符串」而「爻」也。
「纯接口包吗」者会「目录」而
  虑「源码们」者「收集包源码」于「目录」于「阳」而
  虑「普通们」者
    「滤」授以「字符串」
    于(会「文」而「且」
      于(「非」于(「串结尾是它吗」于『。接口。豫』于「文」))
      于(「非」于(「串结尾是它吗」于『。应用接口。豫』于「文」)))
      于「源码们」
  而
  「且」
    于(「大于」于(「长度」授以「字符串」于「源码们」)于「零」)
    于(「等于」于(「长度」授以「字符串」于「普通们」)于「零」)
也。

「制作归档」乃
  化「包索引」而
  化「包记录」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  「字符串」
也。
「制作归档」者会「索引」而会「记录」而会「工具链」而会「输出根」而会「系统」而会「架构」而
  虑「配置」者「解析包文件」于(「记录」中「二」)而
  虑「目录」者
    「路径合并」于「输出根」于((「记录」中「零」)附『/』附(「记录」中「一」)附『/』附(「包版本」于「配置」))而
    虑「无」者「建目录」于「目录」而
    虑「归档」者「路径合并」于「目录」于『发布.zip』而
    若「且」于(「文件存在」于「归档」)于(「非」于(「包内含名」于(「获取参数」于「元」)于『--重新打包』))则
      虑「无」者「行步骤」于『unzip』于(「列」【『-tqq』,「归档」】)而
      虑「旧声明」者
        「求输出」于『unzip』于(「列」【『-p』,「归档」,(『源码/』附(「获取文件名」于(「记录」中「二」)))】)而
        虑「无」者
          「须」
            于(「串相等」于「旧声明」于(「去尾」于(「读文件」于(「记录」中「二」))))
            于『已有 ZIP 的包声明与工作树不同,请更新版本或使用新的输出目录』
        而
        (「打印行」于(『复用已生成 ZIP:』附「归档」);
          「归档」)
    否则
      虑「原目录」者「获取当前路径」于「元」
      而
      虑「暂根」者
        「求输出」于『mktemp』于(「列」【『-d』,『/tmp/yy发行材料.XXXXXX』】)
      而
      虑「构建根」者「路径合并」于「暂根」于『构建树』
      而
      虑「发行根」者「路径合并」于「暂根」于『发行』
      而
      虑「图」者「解析包图」于「索引」于(「包身份」于「记录」)
      而
      虑「无」者「打印行」于(『暂存材料:』附「暂根」)
      而
      虑「无」者
        「态射」授以「包标识」授以「有」
        于(「图」中「一」)
        于(会「身份」
  而
  虑「包记」者「查包」于(「图」中「零」)于「身份」而
  虑「暂目」者「路径合并」于「构建根」于(「包存径」于「包记」)而
  虑「无」者「复制包」于「索引」于「包记」于「暂目」而
  「暂存包去层级」于(「路径合并」于「暂目」于(「获取文件名」于(「包记」中「二」))))而
  虑「无」者
    「复制包」于「索引」于「记录」于(「路径合并」于「发行根」于『源码』)而
    虑「无」者「备运行时」于「工具链」于「构建根」而
    虑「无」者「备操作系统」于「工具链」于「构建根」而
    虑「无」者「备文档资源」于「工具链」于「构建根」而
    虑「无」者
      「复制文件」于(「路径合并」于「工具链」于『LICENSE』)
      于(「路径合并」于「发行根」于『源码/工具链许可』)
    而
    虑「命令」者
      『node 豫言操作系统/宿主/节点/宿主.cjs ./yy豫构.wasm 』附(
        若「包为库」于「配置」则『类型检查』否则『构建』)附『 』附(「壳引」于(「包名」于「配置」))附
          『 --所有者 』附(「壳引」于(「包所有者」于「配置」))附『 --编译器 ./yy4_bs.wasm』
    而
    虑「无」者
      「写文件」
        于(「路径合并」于「构建根」于『重建.sh』)
        于(『#!/bin/sh
set -eu
cd "$(dirname "$0")"
』附「命令」附『
』)而
  虑「无」者
    「行步骤」于『chmod』于(「列」【『u+x』,(「路径合并」于「构建根」于『重建.sh』)】)而
    虑「结果」者
      「尝试运行」授以「字符串」
      于(会「无」
        而
  虑「无」者「换目录」于「构建根」而
  虑「无」者
    「生成文档」于「工具链」于「记录」于「配置」于(「路径合并」于「发行根」于『文档』)而
    虑「无」者
      若「包为库」于「配置」则(
        若「纯接口包吗」于(「包目录」于「记录」)则
          「打印行」于(『纯接口包,跳过类型检查:』附(「包名」于「配置」))
        否则
          「行步骤」
            于『./yy豫构.wasm』
            于(「列」【
              『类型检查』,
              (「包名」于「配置」),
              『--所有者』,
              (「包所有者」于「配置」),
              『--编译器』,
              『./yy4_bs.wasm』
            】)
      )
      否则
        虑「程序径」者「路径合并」于「暂根」于(「包程序」于「配置」)
        而
        虑「无」者
          「行步骤」
            于『./yy豫构.wasm』
            于(「列」【
              『构建』,
              (「包名」于「配置」),
              『--所有者』,
              (「包所有者」于「配置」),
              『--编译器』,
              『./yy4_bs.wasm』,
              『--输出』,
              「程序径」
            】)
        而
        虑「运行根」者「路径合并」于「暂根」于『运行树』
        而
        虑「无」者
          「复制文件」
            于「程序径」
            于(「路径合并」于「运行根」于(「包程序」于「配置」))
        而
        虑「无」者「建目录」于(「路径合并」于「发行根」于『运行』)而
        「行步骤」
          于『tar』
          于(「列」【
            『-czf』,
            (「路径合并」于「发行根」于(『运行/』附「系统」附『-』附「架构」附『.tar.gz』)),
            『-C』,
            「运行根」,
            『.』
          】)
    而
    虑「无」者「建目录」于(「路径合并」于「发行根」于『构建』)而
    虑「无」者
      「行步骤」
        于『tar』
        于(「列」【
          『-czf』,
          (「路径合并」于「发行根」于(『构建/』附「系统」附『-』附「架构」附『.tar.gz』)),
          『软件』,
          『豫言操作系统』,
          『yy4_bs.wasm』,
          『yy豫构.wasm』,
          『重建.sh』,
          『LICENSE』
        】)
    而
    虑「无」者「确认发行限制」于「系统」于「发行根」而
    虑「无」者「换目录」于「发行根」而
    虑「临时档」者「路径合并」于「暂根」于『发布.zip』而
    虑「无」者
      「行步骤」
        于『env』
        于(「列」【
          (若「串相等」于「系统」于『Darwin』则『LC_ALL=en_US.UTF-8』否则『LC_ALL=C.UTF-8』),
          『zip』,
          『-q』,
          『-r』,
          『-D』,
          『-X』,
          「临时档」,
          『.』
        】)
    而
    虑「无」者
      「须」
        于(「非」于(「大于」于(「文件字节数」于「系统」于「临时档」)于「一六七七七二一六」))
        于『ZIP 超过服务器 16 MiB 上限』而
    「:文言:新档既成,乃藏其旧。汉语:构建失败不动旧 ZIP,成功后先保留可恢复的本地备份,再替换当前归档。:」
        虑「无」者
          若「文件存在」于「归档」则
            虑「旧目录」者
              「求输出」
                于『mktemp』
                于(「列」【『-d』,(「路径合并」于「目录」于『旧档.XXXXXX』)】)
            而
            「行步骤」
              于『mv』
              于(「列」【「归档」,(「路径合并」于「旧目录」于『发布.zip』)】)
          否则
            「元」
        而
        虑「无」者「行步骤」于『mv』于(「列」【「临时档」,「归档」】)而
        「归档」
      )
      于(会「错」而(「换目录」于「原目录」;
          (「发生事故」授以「字符串」于「错」)))
    而
    虑「无」者「换目录」于「原目录」而
    「结果」
也。