{"id":16710703,"url":"https://github.com/overminddl1/ex_spirit","last_synced_at":"2025-03-21T20:33:09.313Z","repository":{"id":62429465,"uuid":"81148277","full_name":"OvermindDL1/ex_spirit","owner":"OvermindDL1","description":null,"archived":false,"fork":false,"pushed_at":"2018-03-07T15:29:31.000Z","size":88,"stargazers_count":27,"open_issues_count":8,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T04:51:48.114Z","etag":null,"topics":["elixir","elixir-lang","elixir-library","elixir-programming-language","parser","parser-combinators","parser-library"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OvermindDL1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-07T00:29:30.000Z","updated_at":"2024-07-20T06:33:13.000Z","dependencies_parsed_at":"2022-11-01T20:01:56.689Z","dependency_job_id":null,"html_url":"https://github.com/OvermindDL1/ex_spirit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvermindDL1%2Fex_spirit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvermindDL1%2Fex_spirit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvermindDL1%2Fex_spirit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OvermindDL1%2Fex_spirit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OvermindDL1","download_url":"https://codeload.github.com/OvermindDL1/ex_spirit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244866179,"owners_count":20523476,"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":["elixir","elixir-lang","elixir-library","elixir-programming-language","parser","parser-combinators","parser-library"],"created_at":"2024-10-12T20:09:21.626Z","updated_at":"2025-03-21T20:33:09.016Z","avatar_url":"https://github.com/OvermindDL1.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExSpirit\n\nSpirit-style PEG-like parsing library for Elixir.\n\nPlease see `ExSpirit.Parser` for details about the parser.\n\n## Installation\n\nAvailable in [hex.pm](https://hex.pm/packages/ex_spirit).\n\nAdd to dependencies with:\n\n```elixir\ndef deps do\n  [{:ex_spirit, \"~\u003e 0.1\"}]\nend\n```\n\nFull docs can be found at: \u003chttps://hexdocs.pm/ex_spirit\u003e\n\n## Examples\n\nSee the examples directory for examples and run them with `mix run examples/\u003cfilename\u003e`.\n\nCurrent examples are:\n\n### number_adder.exs\n\nTakes a list of simple integers of base 10, separated by commas, with optional spaces between them, adds them together, and returns them (all within the parser), requires at least one number.\n\nExample Run:\n\n```text\n$ mix run examples/number_adder.exs\nInput simple number separated by comma's and optionally spaces and press enter:\n\n\u003cunknown\u003e:1:1: Parse error: Parsing uint with radix of 10 had 0 digits but 1 minimum digits were required\n        RuleStack: [added_number]\n        Input:\n\n$ mix run examples/number_adder.exs\nd\nInput simple number separated by comma's and optionally spaces and press enter:\n\u003cunknown\u003e:1:1: Parse error: Parsing uint with radix of 10 had 0 digits but 1 minimum digits were required\n        RuleStack: [added_number]\n        Input: d\n\n$ mix run examples/number_adder.exs\nInput simple number separated by comma's and optionally spaces and press enter:\n42\nResult: 42\n\n$ mix run examples/number_adder.exs\nInput simple number separated by comma's and optionally spaces and press enter:\n1,2,3 , 4,   5    ,6 , 7\nResult: 28\n\n$ mix run examples/number_adder.exs\nInput simple number separated by comma's and optionally spaces and press enter:\n1 ,\nResult: 1\nLeftover: \" ,\\n\"\n```\n\n### roman_numerals.exs\n\nTakes a typed in roman numeral from stdin and an enter, parses out the number up to the thousands position and reports back any errors and remaining leftovers.\n\nExample Run:\n\n```text\n$ mix run examples/roman_numerals.exs\nInput Roman Numerals and press enter:\nMDMXXIV\nResult: 1924\n\n$ mix run examples/roman_numerals.exs\nInput Roman Numerals and press enter:\nzzzz\nResult: 0\nLeftover: \"zzzz\\n\"\n\n$ mix run examples/roman_numerals.exs\nInput Roman Numerals and press enter:\nXVIzzz\nResult: 16\nLeftover: \"zzz\\n\"\n```\n\n### simple_xml.exs\n\nA simple xml parser, no attributes, just nodes and text.\n\nExample Run:\n\n```text\n$ mix run examples/simple_xml.exs\nInput a single line of xml-like syntax:\n\u003ctest1\u003eSome text\u003ctest2\u003eHi\u003c/test2\u003e and more\u003c/test1\u003e\nResult: {\"test1\", [\"Some text\", {\"test2\", [\"Hi\"]}, \" and more\"]}\n\n$ mix run examples/simple_xml.exs\nInput a single line of xml-like syntax:\n\u003ca-tag\u003eHow about an improperly terminated tag\u003c/b-tag\u003e\n\u003cunknown\u003e:1:48: Expectation Failure: literal `a-tag` did not match the input\n        RuleStack: [tag, node_]\n        Input: b-tag\u003e\n\n$ mix run examples/simple_xml.exs\nInput a single line of xml-like syntax:\n\u003c\n\u003cunknown\u003e:1:1: Parse error: Repeating over a parser failed due to not reaching the minimum amount of 1 with only a repeat count of 0\n        RuleStack: [text, node_]\n        Input: \u003c\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverminddl1%2Fex_spirit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foverminddl1%2Fex_spirit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverminddl1%2Fex_spirit/lists"}