Last active
February 3, 2026 20:25
-
-
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/9b08b55ce9d5e5ea734b34e50455104bbfeb8321
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 License Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0.txt) | |
| // 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