GnuSmalltalkUsersGuide:BaseChapter 083
- Getopt
Getopt
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: Object
범주: 언어-데이터 타입
- 해당 클래스는 주로 인스턴스화되지 않는다. 클래스 메서드는 스몰토크로부터 명령행을 파싱하는 방법을 제공한다.
Getopt 클래스: 인스턴스 생성
parse: args with: pattern do: actionBlock
패턴에 명시된 구문에 따라 args 내의 명령행 인자를 파싱하라. 발견되는 명령행 옵션마다 2 인자 블록 actionBlock이 평가되고 옵션명과 인자를 전달한다. 파일명(혹은 옵션이 아닌 다른 명령행 인자)의 경우 블록의 첫 번째 인자가 nil이 될 것이다. 인자가 없는 옵션의 경우 혹은 선택적 인자(optional argument)가 명시되지 않은 옵션의 경우, 블록의 두 번째 인자가 nil이 될 것이다. 짧은 옵션의 경우 옵션명은 문자 객체로서, 긴 옵션의 경우 문자열로서 전달될 것이다.
오류가 발견되면 nil이 리턴된다. 패턴의 구문에 관한 상세한 정보는 #parse:with:do:ifError:를 참고한다.
parse: args with: pattern do: actionBlock ifError: errorBlock
패턴에 명시된 구문에 따라 args 내의 명령행 인자를 파싱하라. 발견되는 명령행 옵션마다 2 인자 블록 actionBlock이 평가되고 옵션명과 인자를 전달한다. 파일명(혹은 옵션이 아닌 다른 명령행 인자)의 경우 블록의 첫 번째 인자가 nil이 될 것이다. 인자가 없는 옵션의 경우 혹은 선택적 인자(optional argument)가 명시되지 않은 옵션의 경우, 블록의 두 번째 인자가 nil이 될 것이다. 짧은 옵션의 경우 옵션명은 문자 객체로서, 긴 옵션의 경우 문자열로서 전달될 것이다.
오류가 발견되면 파싱이 중단되고, errorBlock이 평가되어 리턴된 값을 응답한다.
패턴의 여백으로 구분된 부분('단어(word)')마다 명령행 옵션을 명시한다. 단어가 콜론으로 끝나면 옵션은 의무 인자(mandatory argument)를 가질 것이다. 단어가 두 개의 콜론으로 끝나면 옵션은 선택적 인자(optional argument)를 가질 것이다. 콜론 앞에 다수의 옵션명('-l'과 같은 짧은 이름 또는 '-long'과 같은 긴 이름)을 명시 가능하다. 옵션을 actionBlock으로 전달하기 전에 이름은 마지막 이름으로 정규화될 것이다.
긴 옵션의 접두사는 actionBlock으로 전달하기 전에 전체 이름으로 정규화되고 유일한 이름을 가지는 한 허용된다. 뿐만 아니라 옵션의 전체명이 더 긴 옵션의 접두사라 하더라도 허용된다.
의무 인자는 다음 인자 또는 동일한 인자에서 나타날 수 있다 (긴 옵션에 대한 인자의 경우 =로 구분). 선택적 인자는 같은 인자에서 표시되어야 한다.