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
- Grouped
- Alphabetic
- By Inheritance
- Extractor
- VersionSpecificExtractor
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (Extractor[Expr, Type, A], B)
- 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
- 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
- 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
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- 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
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- 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
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- def contramap[Z](contrafn: (Z) => A): Extractor[Expr, Type, Z]
Returns an extractor which invokes this extractor after mapping the input value using
contrafn
- def ensuring(cond: (Extractor[Expr, Type, A]) => Boolean, msg: => Any): Extractor[Expr, Type, A]
- def ensuring(cond: (Extractor[Expr, Type, A]) => Boolean): Extractor[Expr, Type, A]
- def ensuring(cond: Boolean, msg: => Any): Extractor[Expr, Type, A]
- def ensuring(cond: Boolean): Extractor[Expr, Type, A]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- 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
- 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
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hide: Extractor[Expr, Type, A]
Returns a parser which invokes this parser, but does not show the expected value in failure messages
- val impl: internal.Extractor[Expr, Type, A]
- Attributes
- protected[stringContextParserCombinator]
- Definition Classes
- Extractor → VersionSpecificExtractor
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def opaque(description: String): Extractor[Expr, Type, A]
Returns a extractor which invokes this parser, but has the given description upon failure
- 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
- 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
- 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
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- 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})
, wherea
is some value this extractor will accept, except this discards all match groups - final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- 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
- 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
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)
- 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 ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.
- 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.
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
'sinterpolate
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
'sextractor
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
'sinterpolate
andextractor
methods.