JMP 插件是 JMP 核心功能的重要补充,有时,您可能会发现自己需要使用 JSL 自动创建插件。我在构建 JMP 插件时使用了自动插件创建, JMP 到 R 自定义插件生成器. 这是一个用于自动创建加载项的漂亮 JSL 技巧。
本教程中的代码改编自作者编写的精彩脚本@Justin_Chilton ,谁建造了自定义插件生成器.
JMP 插件 (.jmpaddin) 是一个 Zip 文件 (.zip)。JMP 插件的三个最小组件是 addin.def 和 addin.jmpcust 文件,以及在使用插件时将运行的 JSL 脚本。您可以根据需要添加其他文件 - 例如,其他 JSL 脚本、JMP 表、PDF 或 Word 文档(通常用于文档)和图片(通常用于加载项缩略图)。
在以下脚本摘录中,任何可自定义的内容都以大写字母表示(例如 YOUR_ADDIN_NAME)。
首先,创建在 addin.def 文件中使用的字符串。您将需要您的加载项名称和 ID。名称是将在加载项菜单上显示的内容,ID 是加载项的唯一标识符,常见格式为 com.companyname.username.addinname。
//create string for addin.def file
addinDefString = "id=com.YOUR_COMPANY.YOUR_ID.YOUR_ADDIN_NAME
name=YOUR ADDIN NAME
supportJmpSE=0";
如果您知道您的加载项分别仅在 Windows 或 Mac 上受支持,那么您应该在此字符串的末尾添加一行:
"host=Win"
或者
“host=Mac”
接下来,为您的 addin.jmpcust 文件创建字符串:
addinjmpcustString = "\[<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>Add-Ins</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>YOUR ADDIN NAME</NAME>
Your Addin Name
<ACTION type="path">$ADDIN_HOME(com.YOUR_COMPANY.YOUR_ID.YOUR_ADDIN_NAME)\YOUR_SCRIPT.jsl</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>]\";
然后,为了将您的 JSL 脚本打包为文件,首先将其作为文本文件加载:
addinScript = Load Text File("$SOME_PATH\YOUR_ADDIN_NAME.jsl");
然后,将所有文件写入 zip 存档:
//create a ZipArchive to write files to
za = Open("$DOCUMENTS\YOUR_ADDIN_NAME.jmpaddin", zip);
//write all necessary files to ZipArchive (which can also be binary blobs)
za << write("addin.def", addinDefString);
za << write("addin.jmpcust", addinjmpcustString);
za << write("YOUR_ADDIN_NAME.jsl", addinScript);
最后,您可以导航到保存文件的文件夹并查看加载项,双击即可安装。
我还创建了一个更“填空”的脚本版本,以防您想自动创建加载项(如果您需要为加载项名称、文件、目录等),如下所示。
脚本中用到的两个变量名是addinName和dir,定义如下:
插件名称:作为字符串的加载项名称,带有空格和标题大写,您希望它出现在加载项菜单中(例如“JMP to R Add-In Builder”)
目录:要保存加载项的目录
addinDefStr = "id=com.YOUR_COMPANY.YOUR_ID" || addinName || "\!n name=" || addinName || "\!n supportJmpSE=0";
addinjmpcustStr = "\[<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>Add-Ins</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>]\" || uppercase(addinName) || "\[</NAME>
]\" || addinName || "\[
<ACTION type="path">$ADDIN_HOME(com.jmp.]\" || lowercase(regex(addinName, "\s", "", globalreplace)) || "\[)\]\" || addinName || "\[.jsl</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>]\";
addinScript = Load Text File("$SOME_PATH\YOUR_ADDIN_NAME.jsl");
//create a ZipArchive to write files to
za = Open(dir || "/" || addinName || ".jmpaddin", zip);
//write all necessary files to ZipArchive (which can also be binary blobs)
za << write("addin.def", addinDefStr);
za << write("addin.jmpcust", addinjmpcustStr);
za << write(addinName || ".jsl", addinScript);
希望这些脚本可以帮助您的插件创建项目更顺畅!
@vince_faller ,“supportJmpSE”中的“SE”代表“Student Edition”,因此如果您需要加载项与 JMP Student Edition 一起使用,则只需将其设置为 1。
谢谢你把这些放在一起,朱莉娅!
我只是想添加一些您可以添加到 addin.def 文件的选项。
- addinVersion - 出现在 View > Add-Ins... 中的版本号 对话。
- minJmpVersion - 可以安装插件的最低 JMP 版本。
- maxJmpVersion - JMP 的最大版本可以安装插件。
addinVersion=1.3
minJmpVersion=12
maxJmpVersion=13
如果您有兴趣将 JMP 的内置图标之一用于加载项中的菜单项,请查看我的内置 JMP 图标图标名称的插件并在 addin.jmpcust 文件中使用以下格式。
<jm:icon type="builtin">JMPProSmall</jm:icon>