Last active
February 3, 2026 20:18
-
-
Save dacr/b0db75bc4382f3c71263ff83a7131612 to your computer and use it in GitHub Desktop.
cats-parse graph query language experiment - hello world 2 / published by https://github.com/dacr/code-examples-manager #896d5781-e750-48af-802b-6fd6a109ecb5/844c69900abd30321c43b6e9db14a7f3f012f1bc
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 2 | |
| // 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 : 896d5781-e750-48af-802b-6fd6a109ecb5 | |
| // created-on : 2025-03-13T14:11:45+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]] = | |
| (lwsp *> helloToken *> lwsp *> alpha.rep.string.? <* lwsp) | |
| .map(name => 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