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

s_mach.codetools.impl.ReflectPrintTraversable.scala Maven / Gradle / Ivy

/*
                    ,i::,
               :;;;;;;;
              ;:,,::;.
            1ft1;::;1tL
              t1;::;1,
               :;::;               _____       __  ___              __
          fCLff ;:: tfLLC         / ___/      /  |/  /____ _ _____ / /_
         CLft11 :,, i1tffLi       \__ \ ____ / /|_/ // __ `// ___// __ \
         1t1i   .;;   .1tf       ___/ //___// /  / // /_/ // /__ / / / /
       CLt1i    :,:    .1tfL.   /____/     /_/  /_/ \__,_/ \___//_/ /_/
       Lft1,:;:       , 1tfL:
       ;it1i ,,,:::;;;::1tti      s_mach.codetools
         .t1i .,::;;; ;1tt        Copyright (c) 2016 S-Mach, Inc.
         Lft11ii;::;ii1tfL:       Author: [email protected]
          .L1 1tt1ttt,,Li
            ...1LLLL...
*/
package s_mach.codetools.impl

import s_mach.codetools.reflectPrint.{ReflectPrintFormat, ReflectPrint}

import scala.language.higherKinds
import scala.reflect.ClassTag

class ReflectPrintTraversable[A, M[AA] <: Traversable[AA]](implicit
  pA:ReflectPrint[A],
  mClassTag:ClassTag[M[_]]
) extends SimpleReflectPrintImpl[M[A]] {
  val className = mClassTag.runtimeClass.getSimpleName
  override def print(
    ma: M[A]
  )(implicit
    fmt: ReflectPrintFormat
  ): String = {
    if(ma.isEmpty) {
      s"$className.empty"
    } else {
      s"$className(${fmt.newSection { sectionFmt =>
        ma
          .map(a => pA.printApply(a)(sectionFmt))
          .mkString(s",${sectionFmt.newLine}")
      }})"
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy