文章
· 9 hr 前 阅读大约需 3 分钟

如何在 ObjectScript 中查找特定文本

您可能知道这种情况:
前段时间,你发现了一个非常特殊的 $ZU 函数,可以解决一种非常特殊的问题。某种神秘的公式。它变得很流行,被许多开发人员在您的代码和所有安装中使用。

几个版本和更新之后,ISC 通知你,你的神秘 $ZU 已经过时,不再支持。建议您用新的 $something() 替换它。

那么,如何找到并记录这段神秘代码的用法呢?
它可能位于类、MAC、INT 或 INC 代码中。
它也可能分布在多个命名空间中。
在过去,Studio 还不够完善:它不适用、速度慢、不准确。

我在不同的安装中不止一次遇到过这种情况。
当时还没有源代码控制功能,即使最终引入了源代码控制功能,也很少有人使用。

由于 ObjectScript 是应对这一挑战的唯一可能选择,我编写了自己的实用程序
我的解决方案经过了多年的发展,一旦计划迁移到 IRIS,我就会再次检查它的实用性。
由于它是用纯 ObjectScript 编写的,因此在 IRIS 中无需修改任何字符即可运行。
如您所知,在 ObjectScript 中搜索特定文本的问题一直没有改变。

我设计这个工具的个人目标是

  • 仅限 ObjectScript
  • 没有花哨、神奇或脆弱的结构
  • 尽可能少的高级函数
  • 为了将来的维护,使可读性优于优雅性
  • 显示每个命名空间和每个代码元素的出现次数
  • 对于类,还要区分
    • 参数
    • 属性(如果经过计算)
    • 方法
    • 索引
  • 显示包含出现内容的行的选项
  • 无需考虑列表输出:
    • 任何终端程序都可以写日志
    • bash 的 STDOUT 就可以实现这一目的

因此,您可以在Open ExchangeGitHub 上使用该工具。
我还制作了一段视频来演示该工具的操作。
演示服务器上也有该视频。

只需从终端启动即可:
user>DO^rcc.find

然后系统会提示你几个问题:

  • 您要搜索什么文本?
  • 详细?
    • 是否要查看包含文本的每一行?
    • 警告:这可能会成为一个很大的列表
    • 最近的一次测试发现了 90,000 多条匹配信息
    • 如果 verbose=1,您将看到 90,000 多行内容
  • 只能使用大写字母?
    • 这解决了函数以
    • 大写、小写或混合大小写的问题
    • "Uppercase=1 "确保不会遗漏任何出现的情况
  • 您想扫描哪种代码类型(CLS、MAC、INT、INC、ALL)
  • 要搜索哪个命名空间?
    • 列表中的特定名称空间或 ALL
    • 如果是 ALL,您会得到一个浓缩的命名空间和类型列表
    • (视频中看不到)

选择namespace后,扫描开始。
Let’s dance!

USER> do ^rcc.find
----------------

enter search string [$ZU] <blank> to exit: RCC
          Verbose? (0,1) [0]:
          Force UpperCase? (1,0) [1]:

enter code type (CLS,MAC,INT,INC,ALL) [ALL]: CLS

select namespace (ALL,%SYS,DOCBOOK,ENSDEMO,ENSEMBLE,SAMPLES,USER) [USER]:

** Scan Namespace: USER **

** CLS **
** 2      User.ConLoad
** 15     User.Main
** 3      csp.form
** 3      csp.winner
** 2      dc.rcc.Contest
** 37     dc.rcc.Main
** 1      dc.rcc.Prize
** 63 CLS **
----------------

希望你们喜欢我的故事。
我尽量避免列出枯燥的代码,这正是 Open Exchange 和 GitHub 的用武之地。

请原谅我生疏的法语。
我是多年前在学校学的法语,当时的重点是文学(莫里哀、萨特、奎菲莱克、阿努伊勒、尤内斯库)而不是技术。

讨论 (0)1
登录或注册以继续