Str

case class Str

Encapsulates a string with associated ANSI colors and text decorations.

This is your primary data-type when you are dealing with colored fansi strings.

Contains some basic string methods, as well as some ansi methods to e.g. apply particular colors or other decorations to particular sections of the fansi.Str. render flattens it out into a java.lang.String with all the colors present as ANSI escapes.

Avoids using Scala collections operations in favor of util.Arrays, giving 20% (on ++) to

1000% (on splitAt, subString and Str.parse) speedups

Companion:
object
trait Product
trait Equals
class Object
trait Matchable
class Any

Value members

Concrete methods

def ++(other: Str): Str

Concatenates two fansi.Strs, preserving the colors in each one and avoiding any interference between them

Concatenates two fansi.Strs, preserving the colors in each one and avoiding any interference between them

override def equals(other: Any): Boolean

Compares the receiver object (this) with the argument object (that) for equivalence.

Compares the receiver object (this) with the argument object (that) for equivalence.

Any implementation of this method should be an equivalence relation:

  • It is reflexive: for any instance x of type Any, x.equals(x) should return true.
  • It is symmetric: for any instances x and y of type Any, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any instances x, y, and z of type Any if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is usually necessary to override hashCode to ensure that objects which are "equal" (o1.equals(o2) returns true) hash to the same scala.Int. (o1.hashCode.equals(o2.hashCode)).

Value parameters:
that

the object to compare against this object for equality.

Returns:

true if the receiver object is equivalent to the argument; false otherwise.

Definition Classes
Equals -> Any
def getChar(i: Int): Char

Retrieve the character of this string at the given character index

Retrieve the character of this string at the given character index

Returns a copy of the character array backing this fansi.Str, in case you want to use it to

Returns a copy of the character array backing this fansi.Str, in case you want to use it to

def getColor(i: Int): State

Retrieve the color of this string at the given character index

Retrieve the color of this string at the given character index

Returns a copy of the colors array backing this fansi.Str, in case you want to use it to

Returns a copy of the colors array backing this fansi.Str, in case you want to use it to

override def hashCode(): Int

Calculate a hash code value for the object.

Calculate a hash code value for the object.

The default hashing algorithm is platform dependent.

Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

Returns:

the hash code value for this object.

Definition Classes
Any
def length: Int

The plain-text length of this fansi.Str, in UTF-16 characters (same as .length on a java.lang.String). If you want fancy UTF-8 lengths, use .plainText

The plain-text length of this fansi.Str, in UTF-16 characters (same as .length on a java.lang.String). If you want fancy UTF-8 lengths, use .plainText

def overlay(attrs: Attrs, start: Int, end: Int): Str

Overlays the desired color over the specified range of the fansi.Str.

Overlays the desired color over the specified range of the fansi.Str.

def overlayAll(overlays: Seq[(Attrs, Int, Int)]): Str

Batch version of overlay, letting you apply a bunch of Attrs onto various parts of the same string in one operation, avoiding the unnecessary copying that would happen if you applied them with overlay one by one.

Batch version of overlay, letting you apply a bunch of Attrs onto various parts of the same string in one operation, avoiding the unnecessary copying that would happen if you applied them with overlay one by one.

The input sequence of overlay-tuples is applied from left to right

Converts this fansi.Str into a java.lang.String, including all the fancy fansi colors or decorations as fansi escapes embedded within the string. "Terminates" colors at the right-most end of the resultant java.lang.String, making it safe to concat-with or embed-inside other java.lang.String without worrying about fansi colors leaking out of it.

Converts this fansi.Str into a java.lang.String, including all the fancy fansi colors or decorations as fansi escapes embedded within the string. "Terminates" colors at the right-most end of the resultant java.lang.String, making it safe to concat-with or embed-inside other java.lang.String without worrying about fansi colors leaking out of it.

def splitAt(index: Int): (Str, Str)

Splits an fansi.Str into two sub-strings, preserving the colors in each one.

Splits an fansi.Str into two sub-strings, preserving the colors in each one.

Value parameters:
index

the plain-text index of the point within the fansi.Str you want to use to split it.

def substring(start: Int, end: Int): Str

Returns an fansi.Str which is a substring of this string, and has the same colors as the original section of this string did

Returns an fansi.Str which is a substring of this string, and has the same colors as the original section of this string did

override def toString: String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Returns:

a string representation of the object.

Definition Classes
Any

Inherited methods

Inherited from:
Product

Concrete fields

lazy val plainText: String

The plain-text java.lang.String represented by this fansi.Str, without all the fansi colors or other decorations

The plain-text java.lang.String represented by this fansi.Str, without all the fansi colors or other decorations