본문 바로가기
Programming/JavaScript

Keyboard Maestro 공백 제거 코드 붙여넣기 스크립트

by NAMP 2019. 8. 15.

클립보드로 복사한 문자열에서 공백을 제거하는 스크립트를 작성합니다.

Actions 에서 sciprt로 검색하면 사용 가능한 스크립트를 확인할 수 있습니다. 그중에서 javascript로 스크립트를 작성하였습니다.

기본 스크립트

클립보드를 다루는 방법은 아래 코드를 통해 확인할 수 있습니다.

// --- SET CURRENT APP VARIABLE NEEDED FOR DIALOGS & StandardAdditions.osax ---
var app = Application.currentApplication()
app.includeStandardAdditions = true

//--- GET A REFERENCE TO THE KM ENGINE ---
var kme = Application("Keyboard Maestro Engine");

//--- GET A KM VARIABLE ---
var myVar = kme.getvariable('My KM Var');

//--- SET A KM VARIABLE ---
//    - Using explicit text
kme.setvariable('My Other KM Var', { to: "Set by JXA" });

//    - Using a JavaScript Variable
var scriptResults = "Text Determined by the script"
kme.setvariable('My Other KM Var', { to: scriptResults });

//--- GET TEXT ON CLIPBOARD ---
var clipboardStr = app.theClipboard()
console.log("clipboardStr: " + clipboardStr)

var someDataStr = "Example text to put on clipboard"

//--- COPY TO CLIPBOARD ---
//      Verify using KM Clipboard History Viewer
app.setTheClipboardTo(someDataStr)

공백 제거 스크립트

첫줄을 제외하고, 가장 적은 공백수를 찾아서, 일괄적으로 공백을 제거하여 결과를 클립보드로 복사하는 코드입니다.

// --- SET CURRENT APP VARIABLE NEEDED FOR DIALOGS & StandardAdditions.osax ---
var app = Application.currentApplication()
app.includeStandardAdditions = true

//--- GET TEXT ON CLIPBOARD ---
var clipboardStr = app.theClipboard()
console.log("clipboardStr: " + clipboardStr)


lines = clipboardStr.split(/[\r\n]/)

var exceptFirst = false
var minLen = 99999

for (var i=0; i < lines.length; i++){
    line = lines[i]
    if (line.length <= 0)
        continue

    spaceLen = line.match(/^\s*/)[0].length

    if (i == 0 && spaceLen == 0){
        exceptFirst = true
        continue
    }

    if (spaceLen < minLen){
        minLen = spaceLen
    }
}


var result = ""

for (var i=0; i < lines.length; i++){
    line = lines[i]

    if (i == 0 && exceptFirst == true) {
                result = line + "\n"
                continue            
        }

    result += line.substring( minLen, line.length ) + "\n"

}

app.setTheClipboardTo(result)

적용

직접 스크립트를 작성하여도 되고, 스크립트 파일을 불러들여서 사용할 수도 있습니다.

참고

댓글