Kinx 라이브러리 - Getopt

모두들 안녕!

스크립트 언어Kinx는 "Looks like JavaScript, Feels like Ruby, Stable like AC/DC(?)"의 개념으로 게시됩니다.

이번에는 Getopt입니다. 간단하지만 유용합니다.
  • 참고
  • 첫 번째 동기 ...
  • Kinx, 나는 C 계열의 구문을 가진 스크립팅 언어를 원했습니다.

  • 리포지토리 ... https://github.com/Kray-G/kinx
  • pull 요청을 기다리고 있습니다.



  • 긴 옵션 스타일을 사용할 수도 있습니다.

    Getopt - System.getopt



    사용하는 방법



    아래의 예를 보십시오. while 조건 부분에 넣고 인수의 배열, 옵션 문자열 및 long 옵션에 대한 개체를 지정합니다. 긴 옵션에 대한 개체 지정을 생략할 수 있습니다.

    var opt, add, check;
    while (opt = System.getopt($$, "a:df", { add: 'a', delete: 'd', help: null, "do-check": '=' })) {
        switch (opt.type) {
        case 'a':               // Returns 'a' when a user specified '--add'.
            add = opt.arg;      // ':' means the option has an argument.
            System.println('-a with "%{add}"');
            break;
        case 'd':               // Returns 'd' when a user specified '--delete'.
            System.println('-d');
            break;
        case 'f':               // This means that a user specified '-f'.
            System.println('-f');
            break;
        case 'help':            // This means that a user specified '--help'.
            System.println('--help');
            break;
        case 'do-check':        // This means that a user specified '--do-check'
            check = opt.arg;    // '=' means the option has an argument.
            System.println('--do-check with "%{check}"');
            break;
        case '-':               // This means that the argument is not an option.
            list.push(opt.arg);
            break;
        }
    }
    
    // Displaying arguments which is not an option.
    System.println("Program options: ", list);
    


    옵션 문자열에 대한 세부 정보입니다.


  • 옵션을 인수로 지정했지만 옵션에 대한 인수가 없으면 ArgumentException이 발생합니다.
  • 인수가 없는 옵션일 경우 -df 대신 -d -t 와 같이 하나의 옵션 내에서 옵션을 결합할 수 있습니다.
  • 인수가 있는 옵션인 경우 -aARG 와 같이 옵션과 인수를 결합할 수 있습니다. 이것은 -a ARG 와 같다는 것을 의미합니다.
  • 위의 메커니즘으로 -d -a ARG-da ARG 또는 -daARG로 쓸 수 있습니다.

  • 긴 옵션에 대한 세부 정보입니다.


  • 옵션 문자열의 옵션 문자로 긴 옵션을 지정한 경우 인수 스타일은 옵션 문자열 매개변수 다음에 옵니다.
  • 옵션을 인수로 지정했지만 옵션에 대한 인수가 없으면 ArgumentException이 발생합니다.
  • 긴 옵션에 대한 인수가 --long-option=argument 스타일로 지정됩니다. 긴 옵션인 경우 빈 인수도 허용됩니다.

  • 예제를 실행합니다.



    다음은 일부 경우의 예입니다.

    $ ./kinx examples/option.kx -d -a arg
    -d
    -a with "arg"
    Program options: ["examples/option.kx"]
    
    $ ./kinx examples/option.kx -da arg
    -d
    -a with "arg"
    Program options: ["examples/option.kx"]
    
    $ ./kinx examples/option.kx -daarg
    -d
    -a with "arg"
    Program options: ["examples/option.kx"]
    
    $ ./kinx examples/option.kx --help something
    --help
    Program options: ["examples/option.kx", "something"]
    
    $ ./kinx examples/option.kx --do-check=
    --do-check with ""
    Program options: ["examples/option.kx"]
    
    $ ./kinx examples/option.kx --do-check=abc
    --do-check with "abc"
    Program options: ["examples/option.kx"]
    
    $ ./kinx examples/option.kx -a
    Uncaught exception: No one catch the exception.
    ArgumentException: Needs an argument for -a
    Stack Trace Information:
            at <main-block>(examples/option.kx:2)
    
    $ ./kinx examples/option.kx --unknown
    Uncaught exception: No one catch the exception.
    ArgumentException: Unknown option: --unknown
    Stack Trace Information:
            at <main-block>(examples/option.kx:2)
    


    결론



    논증을 분석하는 스타일은 많고, getopt는 오랜 역사를 가지고 있다. 그러나 getopt는 여전히 활성 상태입니다. C 프로그래머에서 가장 적합하다는 관점에서 사용하는 것이 더 쉽다고 생각합니다.

    도움말을 표시하려면 boost::program_options도 유용합니다. 그러나 getopt는 최소이지만 거의 모든 목적에 매우 간단하고 유용합니다. 앞으로 더 유용한 방법을 지원할 수 있습니다.

    다음에 뵙겠습니다.

    좋은 웹페이지 즐겨찾기