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

com.github.mdr.ascii.layout.ToStringVertexRenderingStrategy.scala Maven / Gradle / Ivy

package com.github.mdr.ascii.layout

import com.github.mdr.ascii.Dimension

object ToStringVertexRenderingStrategy extends VertexRenderingStrategy[Any] {

  def getPreferredSize(v: Any): Dimension = {
    val lines = splitLines(v.toString)
    Dimension(lines.size, lines.map(_.size).max)
  }

  def getText(v: Any, allocatedSize: Dimension): List[String] =
    splitLines(v.toString).take(allocatedSize.height).map { line ⇒
      val discrepancy = allocatedSize.width - line.size
      val padding = " " * (discrepancy / 2)
      padding + line
    }

  private def splitLines(s: String): List[String] =
    s.split("(\r)?\n").toList match {
      case Nil | List("") ⇒ Nil
      case xs             ⇒ xs
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy