Beschreibung
Beim Warten Snippets zum Skripteditor hinzufügen abgeschlossen werden möchte, habe ich schnell ein Add-In geschrieben, damit ich beim Skripting im Skripteditor zumindest eine Art Schnipsel haben kann. Das Add-In wurde ziemlich schnell zusammengestellt und hat immer noch Fehler und Probleme (insbesondere beim Fokussieren verschiedener Elemente in der Benutzeroberfläche). Dort können Änderungen an diesem Add-In sein, die die Funktionalität aktueller Snippets und/oder ihrer Speicherorte beeinträchtigen.
Was ist ein Snippet? Snippet ist ein Programmierbegriff für eine kleine Region mit wiederverwendbarem Quellcode, Maschinencode oder Text ( Wikipedia, Snippet_(Programmierung) ). Mit Snippets können Sie schnell wiederverwendbare Codeblöcke in Ihren Code einfügen. Dadurch sparen Sie Zeit und vermeiden Fehler, die Sie haben könnten, wenn Sie das Snippet manuell eingeben würden.
Installation
Add-In wurde mit gebaut Add-In-Manager , erfordert mindestens JMP16 und unterstützt Windows (möglicherweise unter OSX, aber ich kann das nicht testen, und der unterstützte Host wurde im Add-In-Manager als Win festgelegt).
Laden Sie das Add-In von dieser Seite herunter und installieren Sie es so, wie Sie normalerweise JMP-Add-Ins installieren würden (Doppelklick). Das Add-In verwendet (standardmäßig) Tastenkombinationen Strg+Umschalt+Leertaste . Wenn das Add-In zum ersten Mal ausgeführt wird, wird es Ordner für Benutzer $DOCUMENTS erstellen genannt jmp_script_editor_snippets welche Benutzer verwenden können, um benutzerdefinierte Snippets zu speichern (vollständiger Pfad ist so etwas wie C:\Benutzer\ \Dokumente\jmp_script_editor_snippets\). Die Snippet-Dateien sind im Grunde nur .jsl-Dateien, die im Snippet-Ordner der Add-Ins oder im Snippet-Ordner der Dokumente des Benutzers gefunden werden.
Verwendung:
Schreiben #snippet in Ihren Skripteditor. #snippet wird als Suchwert verwendet, und wenn Sie optionale Suchbegriffe angeben, werden diese verwendet, um die Suchleiste vorauszufüllen. Nachdem Sie #snippet in Ihrem Code haben, drücken Sie Strg+Umschalt+Leertaste, um das Snippet-Fenster des JMP-Skripteditors zu starten, suchen Sie nach dem richtigen Snippet und drücken Sie OK (manchmal können Sie auch einfach die Eingabetaste drücken/die Tabulatortaste verwenden, um zur Eingabe zu gelangen). Die #snippet-Zeile wird durch das ausgewählte Snippet ersetzt. Unten sehen Sie ein Bild des Snippet-Fensters

Snippet-Fenster
Wenn der Benutzer das Add-In ausführt und im Skriptfeld kein #Snippet gefunden wird, passiert nichts. Wenn Sie kein Snippet einfügen möchten, drücken Sie Esc. Wenn Sie versehentlich ein Snippet einfügen, können Sie versuchen, Strg+Z zu drücken, um die Änderung rückgängig zu machen.
Vorinstallierte Snippets
Die Namen dieser Snippets sind absichtlich kurz gehalten, sodass der Benutzer problemlos den ganzen Namen schreiben kann nach #schnipsel. Die Verwendung von Snippets auf diese Weise ermöglicht es dem Benutzer, sofort die Eingabetaste zu drücken, um das gewünschte Snippet zu verwenden.
neu_bg
Mehr sehen...
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
neu_bg_gb
Mehr sehen...
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
wenn
Mehr sehen...
If(condition1,
//code1
, //condition2,
//code2
, //else
//code3
);
Funk
Mehr sehen...
function1 = function({param1, param2, param3 = .}, {Default Local},
/*"""function1 which returns missing.
More description regarding the function
Args:
param1 (displaybox):
param2 (char):
param3 (num):
Returns:
num: missing
Raises:
exception_msg
"""*/
return(.);
);
Neu
Mehr sehen...
/*"""One sentence description for this script
Author:
Creation Date:
Creation JMP Version:
Description:
Todo:
*
*
"""*/
Names Default To Here(1);
nw
Mehr sehen...
nw = New Window("name",
V List Box(align("Center"),
)
, << Set Window Icon("JMP")
);
sql
Mehr sehen...
dsn_string = "";
sql_template = "\[
select 1
from dual
]\";
dbc = Create Database Connection(dsn_string);
sql = Eval Insert(sql_template, "¤"); // use ¤ to avoid issues with regex when using ^
dt = Execute SQL(dbc, sql, "NewTable");
Close Database Connection(dbc);
Versuchen
Mehr sehen...
Try(
Show(a);
, // Catch
show(exception_msg);
);
Ich habe auch hinzugefügt community_template.jsl in meinem Snippet-Ordner $DOCUMENTS gespeichert, in dem ich meine Skriptlösungen aus der JMP Community speichere
Mehr sehen...
/*"""
author: jthi
date: YYYY-MM-DD
url: https://community.jmp.com/t5/Discussions/
keywords/tags: []
"""*/
Names Default To Here(1);
Beispiel
In diesem einfachen Beispiel werde ich ein neues Skript erstellen. Das Skript hat eine Funktion, die eine SQL-Abfrage durchführt und dann die Ergebnistabelle zurückgibt.
Zuerst werde ich eine neue .jsl-Skriptdatei erstellen. Ich werde mit dem Schreiben beginnen
#snippet new
Als Nächstes führe ich das Add-In aus, um dieses Snippet zu ersetzen. Da ich den gesamten Snippet-Namen vorab in die #snippet-Zeile geschrieben habe, wird er für mich vorausgewählt

und ich kann direkt nach dem Öffnen des Add-Ins einfach die Eingabetaste drücken, um dieses Snippet zu verwenden.
Als nächstes werde ich eine neue Funktion mit func snippet hinzufügen
#snippet func
und dann füge ich darin ein SQL-Snippet hinzu
#snippet sql
Mein aktueller Code sieht so aus:
Mehr sehen...
/*"""This Add-In provides Snippet functionality to JMP Script Editor.
Author:
Creation Date:
Creation JMP Version:
Description:
Todo:
*
*
"""*/
Names Default To Here(1);
function1 = function({param1, param2, param3 = .}, {Default Local},
/*"""function1 which returns missing.
More description regarding the function
Args:
param1 (displaybox):
param2 (char):
param3 (num):
Returns:
num: missing
Raises:
exception_msg
"""*/
sql_template = "\[
select 1
from dual
]\";
dbc = Create Database Connection(dsnstring);
sql = Eval Insert(sql_template, "¤"); // use ¤ to avoid issues with regex when using ^
dt = Execute SQL(dbc, sql, "NewTable");
Close Database Connection(dbc);
return(.);
);
Ich werde es bereinigen, indem ich der Funktion eine Absicht hinzufüge und die Dokumentationszeichenfolgen ausfülle, und schließlich sieht mein Skript so aus:
Mehr sehen...
/*"""Example on the usage of JMP Script Editor Snippets
Author: jthi
Creation Date: 2022-12-19
Creation JMP Version: JMP Pro 16
"""*/
Names Default To Here(1);
get_data = function({duration = 1}, {Default Local},
/*"""Function to query data from sql
Args:
duration (num): days to query
Returns:
datatable: queried data table
"""*/
dsn_string = "DSN=dBASE Files;DBQ=C:/Program Files/SAS/JMPPRO/16/Samples/Import Data/;"
sql_template = "\[
select *
from tables
where
data > sysdate - ¤duration¤
]\";
dbc = Create Database Connection(dsn_string);
sql = Eval Insert(sql_template, "¤");
dt = Execute SQL(dbc, sql, "Query Result");
Close Database Connection(dbc);
return(dt);
);
Unten sehen Sie ein kurzes Video der Add-In-Nutzung basierend auf dem obigen Beispiel
Mögliche zukünftige Arbeit
- Behandlung für Leerzeichen/Tabs vor dem Snippet hinzufügen, damit der eingefügte Code die richtige Einrückung hat
- Fügen Sie eine Hilfeschaltfläche und eine Schaltfläche hinzu, um den Snippet-Ordner des Benutzers im Menü des Add-Ins zu öffnen
- Erfordert auch die Erstellung einer "Hilfe"-Seite. Die Hilfeseite kann aus .md erstellt werden, die in .html konvertiert wurde, oder indem Sie diese Community-Seite verwenden.
- Versuchen Sie, Fokussierungsprobleme zu beheben
- Einstellungsoption hinzufügen
- deaktivierte Schnipsel, snippet_str, Listenfeld nlines
- Möglichkeit, Snippets an das Ende des Skriptfensters anzuhängen, ohne dass #snippet erforderlich ist
- Andere Abkürzung für "Snippet anhängen"?
- Denken Sie möglicherweise an eine kompliziertere Syntax, die es ermöglichen würde, einige Werte in Snippets vorab auszufüllen
- #snippet !param1 !param2 (oder etwas Ähnliches)
- Vielleicht sogar die Auswertung von Werten aus Variablen im Skript zulassen? Würde dies eine andere Syntax erfordern oder ist dies bereits der Fall Merkmal Kriechen ?
- Möglichkeit zum Einbetten von Snippet-Listen neben dem Skript-Editor
- Fügen Sie weitere vorgefertigte Snippets hinzu
- Fügen Sie die Möglichkeit hinzu, Beschreibungen zu Snippets hinzuzufügen