{"id":16753307,"url":"https://github.com/ysthakur/paml","last_synced_at":"2025-03-16T05:40:24.133Z","repository":{"id":172848600,"uuid":"645119725","full_name":"ysthakur/paml","owner":"ysthakur","description":"Possibly A Markup Language","archived":false,"fork":false,"pushed_at":"2023-06-09T00:23:02.000Z","size":23,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T18:11:20.888Z","etag":null,"topics":["most-definitely-not-a-markup-language","serialization-format"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/ysthakur.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":"2023-05-25T01:07:12.000Z","updated_at":"2023-07-24T23:12:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"3620832e-1f88-4c42-b006-4e0a84c0c98a","html_url":"https://github.com/ysthakur/paml","commit_stats":null,"previous_names":["ysthakur/paml"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysthakur%2Fpaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysthakur%2Fpaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysthakur%2Fpaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysthakur%2Fpaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ysthakur","download_url":"https://codeload.github.com/ysthakur/paml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830922,"owners_count":20354850,"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":["most-definitely-not-a-markup-language","serialization-format"],"created_at":"2024-10-13T02:49:47.242Z","updated_at":"2025-03-16T05:40:24.107Z","avatar_url":"https://github.com/ysthakur.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PAML\n\nPossibly A Markup Language. Probably not.\n\nThis is a rip-off of JSON and YAML. The implementation is in the [rust](/rust) folder (using serde).\nLarge chunks of it were copied from the serde documentation. Currently incomplete (floats, negative numers, and raw strings can't be parsed)\n\nPAML has 6 built-in data types:\n\n- Booleans: `true` and `false`\n- Numbers\n- `null` (may be unnecessary?)\n- Strings (3 kinds)\n    - Quoted (either `\"foo\"` or `'foo'`)\n    - To end of line (`\\`foo bar baz\\n...` is the same as `\"foo bar baz\"\\n...`)\n        - These may be too much, might just remove them\n    - Unquoted words (any sequence of non-whitespace characters that doesn't include `{}[]`)\n - Lists (space-separated): `[item1 item2 item3]`\n - Maps (also space-separated): `{ k1 v1 k2 v2 }`\n\nTODO maybe treat all scalars as strings and let the deserializing thingy convert them to booleans or numbers?\n\nComments use `#`. Types can be specified using `~` (e.g. `~double 2`)\n\nNo idea how to formally specify a language so here's an example:\n\n```\n{\n  people [\n    {\n      name Alice\n      age 100\n      \"favorite command\" `rm -rf / # This 'comment' is actually included in the string\n      human true\n    }\n    {\n      name Bob\n      age 200\n      \"favorite command\" ls\n      human false\n    }\n  ]\n}\n```\n\nThe [Cargo.toml](/rust/Cargo.toml) for this project would look something like this:\n\n```paml\n{\n  package {\n    name paml # Quotes are optional here\n    version \"0.1.0\" # Would be recognized as a string rather than a number even without the quotes\n    license MIT\n    edition \"2021\" # Quotes are necessary here to show it's a string, not a number\n  }\n  \n  dependencies {\n    serde { version \"1.0\" features [derive] }\n    # todo possibly allow commas so ^ can be { version \"1.0\", features [derive] }, which is less confusing\n  }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fysthakur%2Fpaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fysthakur%2Fpaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fysthakur%2Fpaml/lists"}