![JAR search and dependency download from the Maven repository](/logo.png)
org.kynthus.hatalib.argparse.concept.Setup.scala Maven / Gradle / Ivy
The newest version!
package org.kynthus.hatalib.argparse.concept
import scalaz.Optional
import scopt.{OParserSetup, RenderingMode}
import scala.annotation.implicitNotFound
import scala.language.higherKinds
/**
* 特定の型がパーサの動作設定を保持できることを表します。
*
* このトレイトは型クラスとなっており、例えば[[scala.Predef.Map]]を設定値保持用とするには、
* 例に示すような型クラスインスタンスを定義します。
*
* @tparam Derived パーサの動作設定を保持する型
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
@implicitNotFound("Cannot add parser's setup convert ${Derived}.")
trait Setup[Derived] extends Any {
/**
* 追加後に返すべきパーサの動作設定を保持する型です。
*
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
type Result
/**
* パーサの動作設定を行います。
*
* @param derived パーサの動作設定を持つ値
* @param setup パーサの動作設定
* @return パーサの動作設定を行った結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def apply(derived: => Derived, setup: OParserSetup): this.Result
/**
* パーサの出力形式を設定します。
*
* @param derived パーサの動作設定を持つ値
* @param mode 出力形式
* @return パーサの出力形式を設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def renderingMode(derived: => Derived, mode: RenderingMode): this.Result
/**
* 未知のオプションをエラー扱いとするか設定します。
*
* @param derived パーサの動作設定を持つ値
* @param isError エラー扱いとする場合は`true`、しない場合は`false`
* @return 未知のオプションをエラー扱いとするか設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def errorOnUnknownArgument(derived: => Derived, isError: Boolean): this.Result
/**
* 解析失敗時にコマンドの使用方法を表示するか設定します。
*
* @param derived パーサの動作設定を持つ値
* @param isShow `true`を持つ有効値の場合は表示し、それ以外の場合は表示しない
* @tparam UnusedCategory 型パラメータを持ち、値を持たない可能性を表現可能な型
* @return 解析失敗時にコマンドの使用方法を表示するか設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def showUsageOnError[UnusedCategory[_] : Optional]
(derived: => Derived, isShow: UnusedCategory[Boolean]): this.Result
/**
* 解析結果のうち正常なメッセージをどう扱うか設定します。
*
* @param derived パーサの動作設定を持つ値
* @param display メッセージに対する処理
* @tparam Unused メッセージに対する処理の結果得られる型(最終的に[[scala.Unit]]となり破棄)
* @return 正常なメッセージの扱いについて設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def displayToOut[Unused](derived: => Derived, display: String => Unused): this.Result
/**
* 解析結果のうちエラーメッセージをどう扱うか設定します。
*
* @param derived パーサの動作設定を持つ値
* @param display メッセージに対する処理
* @tparam Unused メッセージに対する処理の結果得られる型(最終的に[[scala.Unit]]となり破棄)
* @return エラーメッセージの扱いについて設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def displayToErr[Unused](derived: => Derived, display: String => Unused): this.Result
/**
* エラー発生時のレポートの処理方法を設定します。
*
* @param derived パーサの動作設定を持つ値
* @param report レポート処理
* @tparam Unused レポート処理後に得られる型(最終的に[[scala.Unit]]となり破棄)
* @return エラー発生時のレポートの処理方法を設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def reportError[Unused](derived: => Derived, report: String => Unused): this.Result
/**
* 警告発生時のレポートの処理方法を設定します。
*
* @param derived パーサの動作設定を持つ値
* @param report レポート処理
* @tparam Unused レポート処理後に得られる型(最終的に[[scala.Unit]]となり破棄)
* @return 警告発生時のレポートの処理方法を設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def reportWarning[Unused](derived: => Derived, report: String => Unused): this.Result
/**
* ヘルプおよびバージョン情報表示後にどう終了するかを設定します。
*
* @param derived パーサの動作設定を持つ値
* @param terminator ヘルプおよびバージョン情報表示後に呼ばれる終了処理
* @tparam UnusedResult 終了処理後に得られる型(最終的に[[scala.Unit]]となり破棄)
* @return 終了処理を設定した結果
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
def terminate[UnusedResult]
(derived: => Derived, terminator: Either[String, Unit] => UnusedResult): this.Result
}
/**
* パーサの動作設定に関連する機能を定義します。
*
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
object Setup extends AnyRef {
/**
* 動作設定後の型をコンパイル時に取得します。
*
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
@implicitNotFound("Cannot add parser's setup convert ${Derived}.")
final type Aux[Derived, Output] = Setup[Derived] {type Result = Output}
/**
* 現在のスコープに含まれる[[Setup.Aux]]の型クラスインスタンスを取得します。
*
* @param base スコープに含まれる型クラスインスタンス
* @tparam Derived パーサの動作設定を保持する型
* @tparam Output パーサの動作設定後の型
* @return スコープに含まれる型クラスインスタンス
* @author Kynthus Auoeau
* @since 1.0.0
* @version 1.0.0
*/
final def apply[Derived, Output]
(implicit base: this.Aux[Derived, Output]):
this.Aux[Derived, Output] = base
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy