Packages

  • package root

    A library for writing custom string interpolation implementations via parser combinators

    A library for writing custom string interpolation implementations via parser combinators

    ## Entry Points

    If the string context should create an object: Create leaf parsers using the methods in the Interpolator companion object, combine and manipulate them with the methods in Interpolator, then interpolate using the final Interpolator's interpolate method.

    If the string context should create an extractor: Create leaf parsers using the methods in the Extractor companion object, combine and manipulate them with the methods in Extractor, then interpolate using the final Extractor's extractor method.

    If the string context should do both: Create leaf parsers using the methods in the Parser companion object, combine and manipulate them with the methods in Parser, then interpolate using the final Parser's interpolate and extractor methods.

    Definition Classes
    root
  • package name
    Definition Classes
    root
  • package rayrobdod
    Definition Classes
    name
  • package stringContextParserCombinator

    A library for implementing custom string interpolation implementations using Parser Combinators

    A library for implementing custom string interpolation implementations using Parser Combinators

    Definition Classes
    rayrobdod
  • package typeclass

    Implicit values used by branch combinators that allow combinations of input types to have more ergonomic return types.

    Implicit values used by branch combinators that allow combinations of input types to have more ergonomic return types.

    Each of the typeclasses defined in this package fit into a matrix, where one dimension is which type of parser the typeclass is used with and the other dimension is the method that uses an instance of the type

    method

    Covariant (Interpolator)

    Contravariant (Extractor)

    Invariant (Parser)

    andThen

    Sequenced

    ContraSequenced

    BiSequenced

    orElse

    Eithered

    ContraEithered

    BiEithered

    repeat

    Repeated

    ContraRepeated

    BiRepeated

    optionally

    Optionally

    ContraOptionally

    BiOptionally

    mapToExpr

    ToExprMapping

    N/A

    N/A

    Thus, if you are only working with interpolators, then you'll only need to work with the unprefixed typeclasses.

    Each of these traits has a companion object that defines a generic instance of the trait, and a few instances for more specific types. For instance, each typeclass includes a instance that will avoid wrapping scala.Unit values in a collection or tuple.

    Defining custom instances of these types is supported. Making custom given instances can significantly reduce the number of explicit map calls required when writing a parser, however the usual advice with given instances applies: keep types specific, or keep the scope of a given instance to the minimum viable to prevent given instances from becoming confusing.

    Definition Classes
    stringContextParserCombinator
  • CodePoint
  • Extractor
  • Interpolator
  • LiftFunction
  • ParseException
  • Parser
  • PartialExprFunction
  • RepeatStrategy
  • Unapply

final class Extractor[Expr[_], Type[_], -A] extends VersionSpecificExtractor[Expr, Type, A]

Parses an interpolated string expression into some extractor

Expr

the macro-level expression type

Type

the macro-level type type

A

the type of the parsed result

Linear Supertypes
VersionSpecificExtractor[Expr, Type, A], AnyRef, Any
Ordering
  1. Grouped
  2. Alphabetic
  3. By Inheritance
Inherited
  1. Extractor
  2. VersionSpecificExtractor
  3. AnyRef
  4. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toany2stringadd[Extractor[Expr, Type, A]] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (Extractor[Expr, Type, A], B)
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toArrowAssoc[Extractor[Expr, Type, A]] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. def <|>[B, Z](rhs: Extractor[Expr, Type, B])(implicit ev: ContraEithered[Expr, A, B, Z]): Extractor[Expr, Type, Z]

    An alias for #orElse

    An alias for #orElse

    Since

    0.1.1

  6. def <~(rhs: Extractor[Expr, Type, Unit]): Extractor[Expr, Type, A]

    Returns a parser which invokes this parser, and upon success invokes the other parser, discarding the Unit result from the other parser

    Returns a parser which invokes this parser, and upon success invokes the other parser, discarding the Unit result from the other parser

    Since

    0.1.1

  7. def <~>[B, Z](rhs: Extractor[Expr, Type, B])(implicit ev: ContraSequenced[A, B, Z]): Extractor[Expr, Type, Z]

    An alias for #andThen

    An alias for #andThen

    Since

    0.1.1

  8. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def andThen[B, Z](rhs: Extractor[Expr, Type, B])(implicit ev: ContraSequenced[A, B, Z]): Extractor[Expr, Type, Z]

    Returns a parser which invokes this parser, and upon success invokes the other parser.

    Returns a parser which invokes this parser, and upon success invokes the other parser.

    Z

    the result parser's parsed value type

    rhs

    the parser to call after this one

    ev

    A descriptor of how to combine two values into one value

  10. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  11. def attempt: Extractor[Expr, Type, A]

    Returns a parser which invokes this parser, but treats the result of a failed parse as if it does not consume input

  12. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
  13. def contramap[Z](contrafn: (Z) => A): Extractor[Expr, Type, Z]

    Returns an extractor which invokes this extractor after mapping the input value using contrafn

  14. def ensuring(cond: (Extractor[Expr, Type, A]) => Boolean, msg: => Any): Extractor[Expr, Type, A]
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toEnsuring[Extractor[Expr, Type, A]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  15. def ensuring(cond: (Extractor[Expr, Type, A]) => Boolean): Extractor[Expr, Type, A]
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toEnsuring[Extractor[Expr, Type, A]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  16. def ensuring(cond: Boolean, msg: => Any): Extractor[Expr, Type, A]
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toEnsuring[Extractor[Expr, Type, A]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  17. def ensuring(cond: Boolean): Extractor[Expr, Type, A]
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toEnsuring[Extractor[Expr, Type, A]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  18. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  19. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  20. final def extract(sc: StringContext, scrutinee: A)(implicit ev: =:=[Id[Any], Expr[Any]], ev2: =:=[ClassTag[Any], Type[Any]]): Option[Seq[Any]]

    Extract subexpressions from the given value according to the given StringContext

  21. final def extractor[UnexprA](c: Context)(extensionClassName: String)(value: scala.reflect.macros.blackbox.Context.Expr[UnexprA])(implicit ev: <:<[scala.reflect.macros.blackbox.Context.Expr[UnexprA], A], ev2: =:=[scala.reflect.macros.blackbox.Context.Expr[_], Expr[_]], ev3: =:=[scala.reflect.macros.blackbox.Context.TypeTag[_], Type[_]], ttUnexprA: scala.reflect.macros.blackbox.Context.TypeTag[UnexprA]): scala.reflect.macros.blackbox.Context.Expr[Any]

    Build an extractor that will extract values from a value of type A based on the provided StringContext

    Build an extractor that will extract values from a value of type A based on the provided StringContext

    Definition Classes
    VersionSpecificExtractor
  22. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  23. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  24. def hide: Extractor[Expr, Type, A]

    Returns a parser which invokes this parser, but does not show the expected value in failure messages

  25. val impl: internal.Extractor[Expr, Type, A]
    Attributes
    protected[stringContextParserCombinator]
    Definition Classes
    Extractor → VersionSpecificExtractor
  26. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  27. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  28. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  29. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  30. def opaque(description: String): Extractor[Expr, Type, A]

    Returns a extractor which invokes this parser, but has the given description upon failure

  31. def optionally[Z](strategy: RepeatStrategy = RepeatStrategy.Possessive)(implicit ev: ContraOptionally[Expr, A, Z]): Extractor[Expr, Type, Z]

    Returns a parser which invokes this parser and provides a value whether this parser succeeded or failed

    Returns a parser which invokes this parser and provides a value whether this parser succeeded or failed

    Z

    the result parser's parsed value type

    strategy

    whether the optionally will attempt to match as much or as little as possible, and whether it will backtrack. Default is RepeatStrategy.Possessive

    ev

    A descriptor of how to mark present or absent values

  32. def orElse[B, Z](rhs: Extractor[Expr, Type, B])(implicit ev: ContraEithered[Expr, A, B, Z]): Extractor[Expr, Type, Z]

    Returns a parser which invokes this parser, and then: * If this parser run succeeded, return this internal's success * If this parser failed and consumed input, return this parser's failure * If this parser failed but did not consume input, run the other parser and return the other parser's result

    Returns a parser which invokes this parser, and then: * If this parser run succeeded, return this internal's success * If this parser failed and consumed input, return this parser's failure * If this parser failed but did not consume input, run the other parser and return the other parser's result

    Z

    the result parser's parsed value type

    rhs

    the parser to call after this one

    ev

    A descriptor of how to treat either value as one value

  33. def repeat[Z](min: Int = 0, max: Int = Integer.MAX_VALUE, delimiter: Extractor[Expr, Type, Unit] = new Extractor[Expr, Type, Unit](new internal.Pass), strategy: RepeatStrategy = RepeatStrategy.Possessive)(implicit ev: ContraRepeated[Expr, A, Z]): Extractor[Expr, Type, Z]

    Returns a parser which invokes this parser repeatedly and returns the aggregated result

    Returns a parser which invokes this parser repeatedly and returns the aggregated result

    Z

    the result parser's parsed value type

    min

    the minimum number of repeats to be considered successful

    max

    the maximum number of repeats to consume

    delimiter

    a parser describing separators between each repeat. Defaults to a parser that always succeeds and consumes no input.

    strategy

    whether the repeat will attempt to match as much or as little as possible, and whether it will backtrack. Default is RepeatStrategy.Possessive

    ev

    A descriptor of how to combine the repeated values into one value

  34. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  35. def toString(): String
    Definition Classes
    AnyRef → Any
  36. def void: Extractor[Expr, Type, Unit]

    Returns an extractor which runs this parser but ignores the input

    Returns an extractor which runs this parser but ignores the input

    Approximately equivalent to this.contramap({_ => a}), where a is some value this extractor will accept, except this discards all match groups

  37. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  38. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  39. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  40. def widenWith[Z](contrafn: PartialExprFunction[Expr, Z, A]): Extractor[Expr, Type, Z]

    Returns an extractor which invokes the contrafn, then * If the Expr is true, passes the value to this extractor * If the Expr is false, fails the match

  41. def ~>[B](rhs: Extractor[Expr, Type, B])(implicit ev: <:<[Unit, A]): Extractor[Expr, Type, B]

    Returns a parser which invokes this parser, and upon success invokes the other parser, discarding the Unit result from this parser

    Returns a parser which invokes this parser, and upon success invokes the other parser, discarding the Unit result from this parser

    Since

    0.1.1

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

  2. def formatted(fmtstr: String): String
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toStringFormat[Extractor[Expr, Type, A]] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.12.16) Use formatString.format(value) instead of value.formatted(formatString), or use the f"" string interpolator. In Java 15 and later, formatted resolves to the new method in String which has reversed parameters.

  3. def [B](y: B): (Extractor[Expr, Type, A], B)
    Implicit
    This member is added by an implicit conversion from Extractor[Expr, Type, A] toArrowAssoc[Extractor[Expr, Type, A]] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use -> instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.

Inherited from VersionSpecificExtractor[Expr, Type, A]

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd fromExtractor[Expr, Type, A] to any2stringadd[Extractor[Expr, Type, A]]

Inherited by implicit conversion StringFormat fromExtractor[Expr, Type, A] to StringFormat[Extractor[Expr, Type, A]]

Inherited by implicit conversion Ensuring fromExtractor[Expr, Type, A] to Ensuring[Extractor[Expr, Type, A]]

Inherited by implicit conversion ArrowAssoc fromExtractor[Expr, Type, A] to ArrowAssoc[Extractor[Expr, Type, A]]

parse

Ungrouped

Result Changing Combinators

Sequencing Combinators

Branching Combinators

Repeating Combinators

Error Enriching Combinators

Other Combinators