All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kynthus.hatalib.argparse.syntax.OParserSyntax0.scala Maven / Gradle / Ivy

The newest version!
package org.kynthus.hatalib.argparse.syntax

import scopt.{OParser, OParserBuilder}

import scala.language.implicitConversions

/**
 * scoptの([[scopt.OParserBuilder]])を生成するメソッド拡張用クラスの第1候補です。
 *
 * @author Kynthus Auoeau
 * @since 1.0.0
 * @version 1.0.0
 */
private[syntax] trait OParserSyntax0 extends Any {

  /**
   * パーサ構築用のメソッドを付与するクラスへの暗黙変換です。
   *
   * @param derived パーサのもととなる値
   * @tparam Derived パーサのもととなる型
   * @return パーサ構築用のメソッドを付与するクラスのインスタンス
   * @author Kynthus Auoeau
   * @since 1.0.0
   * @version 1.0.0
   */
  implicit final def OParserOps[Derived]
  (derived: => Derived):
  OParserSyntax0.OParserOps[Derived] =
    OParserSyntax0.OParserOps(() => derived)

}

/**
 * scoptの([[scopt.OParserBuilder]])を生成するメソッド拡張用クラスの第1候補を内部的に定義します。
 *
 * @author Kynthus Auoeau
 * @since 1.0.0
 * @version 1.0.0
 */
private object OParserSyntax0 extends AnyRef {

  /**
   * パーサ構築用のメソッドを付与するクラスです。
   *
   * @constructor パーサ構築用の拡張メソッド使用時に暗黙のうちに呼び出されます。
   * @param derived パーサのもととなる値
   * @tparam Derived パーサのもととなる型
   * @author Kynthus Auoeau
   * @since 1.0.0
   * @version 1.0.0
   */
  private[syntax] final case class OParserOps[Derived]
  (derived: () => Derived) extends AnyRef {

    /**
     * パーサを構築します。
     *
     * @return 特定の型をもとにパーサを構築した結果
     * @author Kynthus Auoeau
     * @since 1.0.0
     * @version 1.0.0
     */
    def builder: OParserBuilder[Derived] = OParser.builder

  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy