Packages

p

zio.json

internal

package internal

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Type Members

  1. sealed abstract class ByteOption extends AnyRef
  2. case class ByteSome(value: Byte) extends ByteOption with Product with Serializable
  3. sealed abstract class DoubleOption extends AnyRef
  4. case class DoubleSome(value: Double) extends DoubleOption with Product with Serializable
  5. final class FastCharSequence extends CharSequence
  6. final class FastStringWrite extends Write
  7. sealed abstract class FloatOption extends AnyRef
  8. case class FloatSome(value: Float) extends FloatOption with Product with Serializable
  9. sealed abstract class IntOption extends AnyRef
  10. case class IntSome(value: Int) extends IntOption with Product with Serializable
  11. sealed abstract class LongOption extends AnyRef
  12. case class LongSome(value: Long) extends LongOption with Product with Serializable
  13. sealed trait RetractReader extends Reader with OneCharReader

    A Reader that can retract and replay the last char that it read.

    A Reader that can retract and replay the last char that it read.

    This is essential when parsing contents that do not have a terminator character, e.g. numbers, whilst preserving the non-significant character for further processing.

  14. sealed abstract class ShortOption extends AnyRef
  15. case class ShortSome(value: Short) extends ShortOption with Product with Serializable
  16. final class StringMatrix extends AnyRef
  17. final class WithRetractReader extends Reader with RetractReader with AutoCloseable
  18. trait Write extends AnyRef
  19. final class WriteWriter extends Write

Value Members

  1. case object ByteNone extends ByteOption with Product with Serializable
  2. case object DoubleNone extends DoubleOption with Product with Serializable
  3. case object FloatNone extends FloatOption with Product with Serializable
  4. case object IntNone extends IntOption with Product with Serializable
  5. object Lexer
  6. case object LongNone extends LongOption with Product with Serializable
  7. object SafeNumbers

    Total, fast, number parsing.

    Total, fast, number parsing.

    The Java and Scala standard libraries throw exceptions when we attempt to parse an invalid number. Unfortunately, exceptions are very expensive, and untrusted data can be maliciously constructed to DOS a server.

    This suite of functions mitigates against such attacks by building up the numbers one character at a time, which has been shown through extensive benchmarking to be orders of magnitude faster than exception-throwing stdlib parsers, for valid and invalid inputs. This approach, proposed by alexknvl, was also benchmarked against regexp-based pre-validation.

    Note that although the behaviour is identical to the Java stdlib when given the canonical form of a primitive (i.e. the .toString) of a number there may be differences in behaviour for non-canonical forms. e.g. the Java stdlib may reject "1.0" when parsed as an BigInteger but we may parse it as a 1, although "1.1" would be rejected. Parsing of BigDecimal preserves the trailing zeros on the right but not on the left, e.g. "000.00001000" will be "1.000e-5", which is useful in cases where the trailing zeros denote measurement accuracy.

    BigInteger, BigDecimal, Float and Double have a configurable bit limit on the size of the significand, to avoid OOM style attacks, which is 128 bits by default.

    Results are contained in a specialisation of Option that avoids boxing.

  8. case object ShortNone extends ShortOption with Product with Serializable
  9. object UnsafeNumbers

Ungrouped