Created
March 28, 2025 09:01
-
-
Save dacr/e4c859c5d95746f58ed8a715eb02c1dc to your computer and use it in GitHub Desktop.
cats-parse graph query language experiment - hello world 3 / published by https://github.com/dacr/code-examples-manager #92da5000-0627-4ec2-b6e9-77bbbd9d0f26/d32a9a276c93f1d068cbbeb913423cb92d1f260
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// summary : cats-parse graph query language experiment - hello world 3 | |
// keywords : scala, typelevel, cats-parse, hello-world, @testable | |
// publish : gist | |
// authors : David Crosson | |
// license : Apache NON-AI License Version 2.0 (https://raw.githubusercontent.com/non-ai-licenses/non-ai-licenses/main/NON-AI-APACHE2) | |
// id : 92da5000-0627-4ec2-b6e9-77bbbd9d0f26 | |
// created-on : 2025-03-13T14:22:01+01:00 | |
// managed-by : https://github.com/dacr/code-examples-manager | |
// run-with : scala-cli $file | |
// --------------------- | |
//> using scala "3.6.4" | |
//> using dep "org.typelevel::cats-parse:1.1.0" | |
//> using dep "com.lihaoyi::pprint:0.9.0" | |
// --------------------- | |
import cats.parse.{Parser0, Parser} | |
import cats.parse.Rfc5234.{lwsp, alpha} | |
case class Who(name: String) | |
val helloToken = Parser.ignoreCase("hello").surroundedBy(lwsp) | |
val helloParser: Parser0[Option[Who]] = for { | |
_ <- helloToken | |
name <- alpha.rep.string.? | |
_ <- lwsp | |
} yield name.map(Who.apply) | |
val results = List( | |
"hello david", | |
" hello joe ", | |
" hello ", | |
"hello" | |
).map(s => helloParser.parseAll(s)) | |
pprint.pprintln(results) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment