Замените полные типы псевдонимами типов в Scaladoc

У меня есть черта с 4 параметрами типа: Decoder[E, D, F, T] (где E описывает закодированный тип, D декодированный тип, F тип отказа и T является фантомным типом, используемым для маркировки экземпляров декодера).

Каждый проект, который определяет пользовательский Decoder экземпляры также определяют псевдоним типа для них. Например: CellDecoder[Int] это псевдоним типа для Decoder[String, Int, DecodeError, csv.type],

Есть дополнительная черта, DecoderCompanion[E, F, T], который определяет полезные методы для кастома Decoder сопутствующий объект экземпляра. Так, например, CellDecoder сопутствующий объект будет расширяться DecoderCompanion[String, DecodeError, csv.type],

Чтобы получить конкретный пример, вот как это может выглядеть:

trait DecoderCompanion[E, F, T] {
  def apply[F](implicit dec: Decoder[E, D, F, T]): Decoder[E, D, F, T] = dec
}

object CellDecoder extends DecoderCompanion[String, DecodeResult, csv.type]

При создании документа API для CellDecoder, scaladoc не поймет, что он должен заменить все экземпляры Decoder[String, D, DecodeResult, csv.type] от CellDecoder[D], Читатели ожидают CellDecoder.apply дать CellDecoderне Decoder - тип, о котором они могут даже не знать, существует.

Я понимаю, почему или, по крайней мере, почему это не будет поведением по умолчанию. Мне было интересно, есть ли способ, как в виде флага скальдока, так и на уровне типа, изменить это поведение?

1 ответ

Есть - но вам это может не понравиться:-)

Он включает в себя использование печально известной функции "варианта использования" Scaladoc. Например, см. Метод List # mapConserve и его исходную документацию. Обратите внимание на @usecase тег? Вот что говорит Scaladoc: показывать данный тип "варианта использования" в главном обзоре и скрывать фактический тип в области "Полная подпись".

Другие вопросы по тегам