Skip to content

优化 load 函数,使其能够识别相对路径。

License

Notifications You must be signed in to change notification settings

yeungchie/skill-loader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

skill-loader

优化 load 函数,使其能够识别相对路径。

对以前写的一篇博客中的例程进行一些兼容性优化和功能加强:load 函数优化,识别相对路径 - YEUNGCHIE - 博客园

下载代码

git clone --depth 1 https://github.com/yeungchie/skill-loader.git

加载配置

~/.cdsinit 中添加:

load("<path to skill-loader>/load.il")

使用方法

ycLoad

可正确识别以文件本身路径为参考的相对路径。

ycLoad("./script.il")
; END

ycLoadi

ycLoad 相同,不同之处在于 ycLoadi 忽略加载过程中遇到的错误,只打印错误信息,然后继续加载。

ycLoadi("./script.il")
; END

用法与 loadloadi 一致。

函数拓展

假设如下场景:

  1. 有一个脚本文件路径为 /home/yeungchie/skill/script.il
  2. /home/yuengchie/project/ 下启动 virtuoso 工具。
  3. 使用 load("../skill/script.il") 语句来加载这个脚本文件。

ycGetFileName

  • 获取当前文件的路径。

    fileName = ycGetFileName()
    println(fileName)
    ; END

    "/home/yeungchie/skill/script.il"

ycGetBaseName

  • 获取文件名。

    baseName = ycGetBaseName(fileName)
    println(baseName)
    ; END

    "script.il"

ycGetDirName

  • 获取文件父目录名。

    dirName = ycGetDirName(fileName)
    println(dirName)
    ; END

    "/home/yeungchie/skill/"

ycRealPath

  • 读取相对路径,返回绝对路径。

    filePath = ycRealPath("../skill/script.il")
    println(filePath)
    ; END

    "/home/yeungchie/skill/script.il"

注意事项

上述的函数调用注意不能位于当前文本的最后一行 ; END,否则可能会出现路径获取错误的问题。 原因不详,猜测是 Skill 的 bug。

这个现象是我的脚本文件路径位于 NFS 挂载的远程存储的时候发现的,复现率极高。

ycLoad("xxx")
; 特意空一行

About

优化 load 函数,使其能够识别相对路径。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published