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

jaskell.parsec.ChIn.scala Maven / Gradle / Ivy

package jaskell.parsec

import scala.util.{Try, Success}

case class ChIn(val content: String, val caseSensitive: Boolean = false) extends Parsec[Char, Char]:
  val contentSet: Set[Char] = if (caseSensitive) content.toSet else content.toLowerCase.toSet

  def apply(s: State[Char]): Try[Char] = s.next() flatMap { c =>
      if (caseSensitive) {
        if (contentSet contains c) {
          return Success(c)
        }
      } else {
        if (contentSet contains c.toLower) {
          return Success(c)
        }
      }
      s.trap(s"expect any char in $content (case sensitive $caseSensitive) but get $c")
    }
  




© 2015 - 2025 Weber Informatics LLC | Privacy Policy