설명
기다리는 동안 스크립트 편집기에 스니펫 추가 완료되길 바라며 스크립트 편집기에서 스크립팅하는 동안 적어도 어떤 종류의 스니펫을 가질 수 있도록 추가 기능을 신속하게 작성했습니다. 추가 기능은 상당히 빠르게 구성되었으며 여전히 버그와 문제가 있습니다(특히 UI의 다른 요소에 초점을 맞추는 경우). 거기 현재 스니펫 및/또는 해당 위치의 기능을 손상시키는 이 추가 기능의 변경 사항일 수 있습니다.
스니펫이란 무엇입니까? 스니펫은 재사용 가능한 소스 코드, 기계 코드 또는 텍스트의 작은 영역에 대한 프로그래밍 용어입니다( wikipedia, Snippet_(프로그래밍) ). 스니펫을 사용하면 재사용 가능한 코드 블록을 코드에 빠르게 삽입할 수 있습니다. 이렇게 하면 스니펫을 수동으로 입력하는 경우 시간을 절약하고 실수를 줄일 수 있습니다.
설치
애드인은 다음과 같이 구축되었습니다. 추가 기능 관리자 , 최소 JMP16이 필요하고 Windows를 지원합니다(OSX에서 작동할 수도 있지만 테스트할 수 없으며 추가 기능 관리자에서 지원되는 호스트가 Win으로 설정됨).
이 페이지에서 추가 기능을 다운로드하고 일반적으로 JMP 추가 기능을 설치하는 것처럼 설치합니다(더블 클릭). 추가 기능은 (기본적으로) 바로 가기 키 바인딩을 사용합니다. Ctrl+Shift+스페이스 . 추가 기능이 처음 실행되면 $DOCUMENTS 사용자에게 폴더 생성 ~라고 불리는 jmp_script_editor_snippets 사용자 지정 스니펫을 저장하는 데 사용할 수 있는 사용자(전체 경로는 C:\Users\ <사용자 이름> \Documents\jmp_script_editor_snippets\). 스니펫 파일은 기본적으로 추가 기능의 스니펫 폴더 또는 사용자의 문서 스니펫 폴더에서 찾을 수 있는 .jsl 파일입니다.
용법:
쓰다 #snippet <선택적 검색어> 스크립트 편집기로. #snippet은 조회 값으로 사용되며 선택적 검색어를 포함하면 검색창을 미리 채우는 데 사용됩니다. 코드에 #snippet이 있으면 Ctrl+Shift+Space를 눌러 JMP Script Editor Snippet 창을 실행하고 올바른 스니펫을 검색한 다음 확인을 누릅니다(경우에 따라 Enter를 누르거나 Tab을 사용하여 Enter로 이동할 수도 있음). #snippet 줄은 선택한 스니펫으로 대체됩니다. 아래는 스니펫 창의 이미지입니다.

스니펫 창
사용자가 추가 기능을 실행하고 스크립트 상자에 #snippet이 없으면 아무 일도 일어나지 않습니다. 스니펫을 삽입하지 않으려면 Esc를 누르십시오. 실수로 스니펫을 삽입한 경우 Ctrl+Z를 눌러 변경 사항을 취소할 수 있습니다.
사전 설치된 스니펫
이러한 스니펫의 이름은 의도적으로 짧게 유지되므로 사용자는 전체 이름을 다음과 같이 쉽게 작성할 수 있습니다. <선택 검색어> #스니펫 후. 이러한 방식으로 스니펫을 사용하면 사용자가 즉시 Enter 키를 눌러 원하는 스니펫을 사용할 수 있습니다.
new_bg
더보기...
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
new_bg_gb
더보기...
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)))
);
만약
더보기...
If(condition1,
//code1
, //condition2,
//code2
, //else
//code3
);
기능
더보기...
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(.);
);
새로운
더보기...
/*"""One sentence description for this script
Author:
Creation Date:
Creation JMP Version:
Description:
Todo:
*
*
"""*/
Names Default To Here(1);
nw
더보기...
nw = New Window("name",
V List Box(align("Center"),
)
, << Set Window Icon("JMP")
);
SQL
더보기...
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);
노력하다
더보기...
Try(
Show(a);
, // Catch
show(exception_msg);
);
나는 또한 추가 community_template.jsl JMP Community의 스크립팅 솔루션을 저장하는 데 사용하는 $DOCUMENTS 스니펫 폴더에 저장
더보기...
/*"""
author: jthi
date: YYYY-MM-DD
url: https://community.jmp.com/t5/Discussions/
keywords/tags: []
"""*/
Names Default To Here(1);
예시
이 간단한 예에서는 새 스크립트를 만들 것입니다. 스크립트에는 SQL 쿼리를 수행한 다음 결과 테이블을 반환하는 하나의 기능이 있습니다.
먼저 새 .jsl 스크립트 파일을 시작합니다. 글을 시작하겠습니다
#snippet new
다음으로 추가 기능을 실행하여 해당 스니펫을 대체합니다. 전체 스니펫 이름을 #snippet 줄에 미리 작성했기 때문에 미리 선택됩니다.

해당 스니펫을 사용하려면 추가 기능을 연 직후 Enter 키를 누르기만 하면 됩니다.
다음으로 func 스니펫으로 새 기능을 추가하겠습니다.
#snippet func
그런 다음 그 안에 SQL 스니펫을 추가합니다.
#snippet sql
내 현재 코드는 다음과 같습니다.
더보기...
/*"""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(.);
);
함수 내부에 의도를 추가하여 정리하고 문서 문자열을 채우면 최종적으로 스크립트가 다음과 같이 표시됩니다.
더보기...
/*"""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);
);
아래는 위의 예를 기반으로 한 애드인 사용법에 대한 짧은 비디오입니다.
가능한 미래 작업
- 삽입된 코드가 올바른 들여쓰기를 갖도록 스니펫 앞에 공백/탭에 대한 처리를 추가합니다.
- 추가 기능 메뉴에 사용자 스니펫 폴더를 여는 도움말 버튼 및 버튼 추가
- 또한 "도움말" 페이지 작성이 필요합니다. 도움말 페이지는 .md를 .html로 변환하거나 이 커뮤니티 페이지를 사용하여 만들 수 있습니다.
- 초점 문제 해결 시도
- 설정 추가 옵션
- 비활성화된 스니펫, snippet_str, 목록 상자 nlines
- #snippet 요구 사항 없이 스크립트 창 끝에 스니펫을 추가할 수 있음
- 스니펫의 일부 값을 미리 채울 수 있는 더 복잡한 구문을 생각할 수 있습니다.
- #snippet !param1 !param2 (또는 이와 유사한 것)
- 스크립트의 변수에서 값을 평가할 수도 있습니까? 다른 구문이 필요합니까 아니면 이미 있습니까? 피쳐 크리프 ?
- 스크립트 편집기 옆에 스니펫 목록을 삽입할 수 있음
- 미리 작성된 스니펫 추가
- 스니펫에 설명을 추가할 가능성 추가