{"id":25131852,"url":"https://github.com/csgn/pipo","last_synced_at":"2025-06-23T16:10:34.610Z","repository":{"id":275965193,"uuid":"927352380","full_name":"csgn/pipo","owner":"csgn","description":"Config Parser","archived":false,"fork":false,"pushed_at":"2025-02-06T19:24:43.000Z","size":151,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-03T00:11:23.691Z","etag":null,"topics":["config-parser","parser"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csgn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-04T20:15:58.000Z","updated_at":"2025-02-06T19:24:46.000Z","dependencies_parsed_at":"2025-02-05T15:22:39.097Z","dependency_job_id":"4de5c7d7-da05-43fb-8e67-b94498cc185c","html_url":"https://github.com/csgn/pipo","commit_stats":null,"previous_names":["csgn/pipo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/csgn/pipo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csgn%2Fpipo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csgn%2Fpipo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csgn%2Fpipo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csgn%2Fpipo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csgn","download_url":"https://codeload.github.com/csgn/pipo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csgn%2Fpipo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261510008,"owners_count":23169686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["config-parser","parser"],"created_at":"2025-02-08T14:15:39.754Z","updated_at":"2025-06-23T16:10:34.565Z","avatar_url":"https://github.com/csgn.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pipo\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"/docs/icon.jpg\" width=\"256\" height=\"256\" /\u003e\n\u003c/p\u003e\n\n# Grammar\n```ebnf\ngrammar = { field } ;\nfield = namespace , newline, variables ;\nnamespace = \"[\" , lit , \"]\", newline ;\nvariables = { variable } ;\nvariable = key, '=', value, newline\nkey = lit ;\nvalue = lit ;\nlit = letter , { letter | digit | \"_\" } ;\n\ncharacter = letter | digit | symbol | \"_\" ;\n\nletter = \"A\" | \"B\" | \"C\" | \"D\" | \"E\" | \"F\" | \"G\"\n       | \"H\" | \"I\" | \"J\" | \"K\" | \"L\" | \"M\" | \"N\"\n       | \"O\" | \"P\" | \"Q\" | \"R\" | \"S\" | \"T\" | \"U\"\n       | \"V\" | \"W\" | \"X\" | \"Y\" | \"Z\" | \"a\" | \"b\"\n       | \"c\" | \"d\" | \"e\" | \"f\" | \"g\" | \"h\" | \"i\"\n       | \"j\" | \"k\" | \"l\" | \"m\" | \"n\" | \"o\" | \"p\"\n       | \"q\" | \"r\" | \"s\" | \"t\" | \"u\" | \"v\" | \"w\"\n       | \"x\" | \"y\" | \"z\" ;\n       \ndigit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\" ;\n\nsymbol = \"[\" | \"]\" | \"{\" | \"}\" | \"(\" | \")\" | \"\u003c\" | \"\u003e\"\n       | \"'\" | '\"' | \"=\" | \"|\" | \".\" | \",\" | \";\" ;\n\nnewline = \"\\n\" ;\n```\n\n# Example\n```\n# Source\n[namespace_1]\nkey1=value1\nkey2=value2\n\n# AST\nPipoGrammar(\n    List(\n        PipoField(\n            PipoNamespace(\n                PipoLit(namespace_1),\n                List(\n                    PipoVariable(\n                        PipoKey(\n                            PipoLit(key1)\n                        ),\n                        PipoValue(\n                            PipoLit(value1)\n                        )\n                    ),\n                    PipoVariable(\n                        PipoKey(\n                            PipoLit(key2)\n                        ),\n                        PipoValue(\n                            PipoLit(value2)\n                        )\n                    ),\n                    PipoVariable(\n                        PipoKey(\n                            PipoLit(key3)\n                        ),\n                        PipoValue(\n                            PipoLit(value3)\n                        )\n                    )\n                )\n            )\n        )\n    )\n)\n```\n\n# Usage\n```scala\nimport pipo.core._\n\nval input = \"\"\"[namespace_1]\n              |key1=value1\n              |key2=value2\n              |\"\"\".stripMargin\n\nval parser = Pipo()\nval Some((_, ast)) = parser.run(input)\n```\n\n# Run tests\n```sh\n$ sbt test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsgn%2Fpipo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsgn%2Fpipo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsgn%2Fpipo/lists"}