From 1ea903422108dd3501a6e3cf7fff7de8ec51a34f Mon Sep 17 00:00:00 2001 From: Eyre_S Date: Mon, 27 Mar 2023 19:17:05 +0800 Subject: [PATCH] update with ph-Bookshelf --- .../enhanced-frontend/rolling-title.md | 6 + .../enhanced-frontend/test-code-highlight.md | 105 ++++++++++++++++++ .../enhanced-frontend/test-regex-highlight.md | 10 ++ bookshelf.xml | 5 +- ph-bookshelf | 2 +- 5 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 %root/test-collection/enhanced-frontend/test-code-highlight.md diff --git a/%root/test-collection/enhanced-frontend/rolling-title.md b/%root/test-collection/enhanced-frontend/rolling-title.md index 5497a50..3f5ca16 100644 --- a/%root/test-collection/enhanced-frontend/rolling-title.md +++ b/%root/test-collection/enhanced-frontend/rolling-title.md @@ -1,3 +1,9 @@ +--- +title: 这是一个正在滚动的网页标题 +configurations: + web-title.rolling: 'true' +--- + # 滚动标题 ↖ 看浏览器标题栏 diff --git a/%root/test-collection/enhanced-frontend/test-code-highlight.md b/%root/test-collection/enhanced-frontend/test-code-highlight.md new file mode 100644 index 0000000..db6a8b7 --- /dev/null +++ b/%root/test-collection/enhanced-frontend/test-code-highlight.md @@ -0,0 +1,105 @@ +代码纯手打,没有经过 IDE 查错,如发现错误还请立即 issue + +## 创建资源文件索引对象 + +要使用 ResourceTools,首先需要建立一个 ResourcesPackage 对象,它是你的项目的资源文件的索引对象。 + +```java +// 导入类 +import cc.sukazyo.restools.ResourcesPackage; + +/* ... */ + +//创建对象 +ResourcesPackage pack = new ResourcesPackage(Test.class, "assets"); +``` + +构造函数的第一个参数是一个 Class 对象,用于确定你的项目。 +第二个参数是在项目文件为根目录的路径下,你的资源文件的位置。 +一般来说,在IDE等项目管理环境下,一个项目的源文件路径如下: + +```tree +src + ╠═main + ║ ╟─java + ║ ╙─resources + ╚═test + ╟─java + ╙─resources +``` + +这个路径指的就是在{.lang-url}`src/main/resources`目录下的{.lang-url}`assets`文件夹。 + +## 获取资源文件 + +不同于 Java 中的 `java.io.File`{.lang-java} 的是,ResourceTools 使用了文件和文件夹对象分离的方式,因此,ResourcesPackage 对象拥有以下两个 get 方法: + +```java +// 获取文件 +public ResFile getResource (String path) throws IOException; + +// 获取目录 +public ResDir getResDir (String path) throws IOException; +``` + +前一个用于获取文件对象,后一个则是获取目录对象。 +其中的 `path` 参数为文件/目录相对于设置的资源文件根目录(`"assetes"`)的位置。 + +例如如果一个项目的 resources结构如下: + +```tree +resources + ╠═assets + ║ ╟─propertes.io + ║ ╚═lang + ║ ╚═default.lang + ╚═idn + ╟─ios + ╙─windows +``` + +若要获取`default.lang`文件,则使用以下方法: + +```java +/** 之前创建的资源文件索引类: + * ResourcesPackage pack = new ResourcesPackage(Test.class, "assets"); + */ +pack.getResource("/lang/default.lang"); +``` + +## ResFile 使用 + +```java +// 获取到一个文件 +ResFile res = pack.getResource("/lang/default.lang"); + +InputStream ins = res.read(); // 获取到这个文件的流 + +String content = res.readAsString(); // 直接获取这个文件的纯文本字符串 + // 没有测试如果将其应用在非纯文本文件上的效果, + // 同时 Sukazyo 认为也不会有硬读非纯文本文件的人 + // 硬读纯文本文件的话,后果请自负 +``` + +## ResDir 使用 + +```java +// 获取到一个目录 +ResFile res = pack.getResource("/"); + +ResFile[] reses = res.listFiles(); // 读取到直接属于这个目录下的文件 + // 不读间接属于目录的文件 + // 在这个例子中会读取到 properties.io + +ResDir[] dirs = res.listDirs(); // 和上文类似,读取直接属于此目录的子目录 + // 这个例子中会读到 lang 目录 + +File target = new File("./assets/"); // 一个 File 对象,指向的是程序运行目录下的 assets 子目录 +res.extract(target, false); // 将这个目录下的所有文件和文件夹解压到目标目录中 + // 会解压 properties.io lang/ lang/default.lang + // 如果 target 目录不存在的话会创建这个目录 + // 第二个参数决定是否覆盖已存在的文件,true为覆盖,false为不覆盖 + +res.extract(target); // 上一个方法的简略版 + // 覆盖开关始终为 true +``` diff --git a/%root/test-collection/enhanced-frontend/test-regex-highlight.md b/%root/test-collection/enhanced-frontend/test-regex-highlight.md index 10d3ae5..a782286 100644 --- a/%root/test-collection/enhanced-frontend/test-regex-highlight.md +++ b/%root/test-collection/enhanced-frontend/test-regex-highlight.md @@ -1,3 +1,13 @@ +--- +title: RegEx 着色 +configurations: + regex.highlight: 'true' +--- + +# regex highight + +[source](https://github.com/suk-ws/regex-colorizer) + ^(?:https?://)?((?:(?:c\\.)?vx|fx|www\\.)?twitter\\.com)/((\w{1,})/status/(\d+)(?:/photo/(\d+))?)/?(\?[\w&=-]+)?$ + 滚动标题栏 diff --git a/ph-bookshelf b/ph-bookshelf index c374b05..7f73bc1 160000 --- a/ph-bookshelf +++ b/ph-bookshelf @@ -1 +1 @@ -Subproject commit c374b0559ab0e1f4737d9c9e2e0b1036af144ace +Subproject commit 7f73bc1c1a79b86aa79c89365bab1f270f149b38