OptionParserのソースコードを読む
この記事はElixir (その 2)と Phoenix Advent Calendar 2016 の 1 9日目の記事です。
背景 書籍「プログラミング Elixir」の 13 章でお世話になった OptionParser がとても便利そうだったので、中身の理解と Elixir のソースコードに慣れる目的で、ソースコードを読んでみました。 メインである parse/2 を中心に説明します。
下記に記載するソースコードは全て、公式のものを引用しています。
環境 Elixir 1.3.3
ドキュメント
ソースコード
おおまかな流れ parse/2 (外部に公開するインターフェース) do_parse/6 (実際にパースの再帰処理を行っているところ) next/4 (パース処理) ソースコード parse/2 まずはメインの parse/2 です。
parse/2 @spec parse(argv, options) :: {parsed, argv, errors} def parse(argv, opts \\ []) when is_list(argv) and is_list(opts) do do_parse(argv, compile_config(opts), [], [], [], true) end 引数の opts をcomple_config/1を通して加工してdo_parseに渡しています。 また、do_parse/6の結果をそのまま返しています。