{"id":16733147,"url":"https://github.com/quchen/show-prettyprint","last_synced_at":"2025-03-21T21:31:28.293Z","repository":{"id":56877943,"uuid":"73498727","full_name":"quchen/show-prettyprint","owner":"quchen","description":"Robust prettyprinter for output of auto-generated Show instances","archived":false,"fork":false,"pushed_at":"2019-12-13T16:22:36.000Z","size":45,"stargazers_count":18,"open_issues_count":3,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-09T23:01:23.866Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quchen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-11T17:45:26.000Z","updated_at":"2020-07-15T11:34:53.000Z","dependencies_parsed_at":"2022-08-20T11:40:33.189Z","dependency_job_id":null,"html_url":"https://github.com/quchen/show-prettyprint","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fshow-prettyprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fshow-prettyprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fshow-prettyprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fshow-prettyprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quchen","download_url":"https://codeload.github.com/quchen/show-prettyprint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244874260,"owners_count":20524576,"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":[],"created_at":"2024-10-12T23:48:48.935Z","updated_at":"2025-03-21T21:31:27.153Z","avatar_url":"https://github.com/quchen.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![](https://travis-ci.org/quchen/show-prettyprint.svg?branch=master)](https://travis-ci.org/quchen/show-prettyprint)\n\nPrettyprint `Show` output\n=========================\n\nOutput of nested data structures by `Show` instances is often very hard to read.\nThis package offers a simple function to insert line breaks and indentation into\nthat ouput so that the semantics are unchanged, but makes it *much* easier to\nread.\n\nThe package does not rely on a parser for actual Haskell; instead, it merely\nreacts on parentheses, commas and the like. This makes it fairly robust even in\nthe face of invalid `Show` instances, that may not produce valid Haskell code.\n\n\n\n## Examples\n\n### Artificial\n\n```haskell\nHello Foo (\"(Bar\", Haha) (Baz (A { foo = C, bar = D, qux = (E,\"He)llo World!\",G,\n    H,[A,B,c,d,e,Fghi]) } ) (B,C) [Baz A1 B2, (Baz A3 (B4)), (Baz A5 (B6)), (Baz\n    (A7) B8)]) (Foo) (Bar) (Baz (A) (B))\n\n==\u003e\n\n\nHello Foo (\"(Bar\",Haha)\n          (Baz (A {foo = C\n                  ,bar = D\n                  ,qux = (E,\"He)llo World!\",G,H,[A,B,c,d,e,Fghi])})\n               (B,C)\n               [Baz A1 B2,(Baz A3 (B4)),(Baz A5 (B6)),(Baz (A7) B8)])\n          (Foo)\n          (Bar)\n          (Baz (A) (B))\n```\n\n### Inspired by a real AST\n\n```haskell\nSet  (fromList [(Name \"A string with (parenthesis\",Ann  (Entry (Quality 1 1)\n    (Ann  False) (Ann  (Map [Ann  (Bound (Ann  (Id \"lorem\"))),Ann  (Variable\n    (Ann  (Id \"ipsum\")))])))),(Name \"string\",Ann  (Entry (Quality 1 1) (Ann\n    True) (Ann  (Internal (Ann  (Reduce (Ann  (Id \"dolor\")) (Ann  (Id \"sit\")))))\n    ))),(Name \"Another } here\",Ann  (Entry (Quality 1 1) (Ann  (Or [Ann  (Not\n    (Ann  (Is (Ann  Flagged) (Ann  Type) (Ann  (Multi [Ann  (Literal (Ann  One))\n    ]))))),Ann  (Is (Ann  Flagged) (Ann  Type) (Ann  (Multi [Ann  (Literal (Ann\n    Three))]))),Ann  (Is (Ann  Flagged) (Ann  Type) (Ann  (Multi [Ann  (Literal\n    (Ann  Two))])))])) (Ann  (Internal (Ann  (Concat (Ann  (Id \"amet\"))))))))])\n\n==\u003e\n\nSet (fromList [(Name \"A string with (parenthesis\"\n               ,Ann (Entry (Quality 1 1)\n                           (Ann False)\n                           (Ann (Map [Ann (Bound (Ann (Id \"lorem\")))\n                                     ,Ann (Variable (Ann (Id \"ipsum\")))]))))\n              ,(Name \"string\"\n               ,Ann (Entry (Quality 1 1)\n                           (Ann True)\n                           (Ann (Internal (Ann (Reduce (Ann (Id \"dolor\"))\n                                                       (Ann (Id \"sit\"))))))))\n              ,(Name \"Another } here\"\n               ,Ann (Entry (Quality 1 1)\n                           (Ann (Or [Ann (Not (Ann (Is (Ann Flagged)\n                                                       (Ann Type)\n                                                       (Ann (Multi [Ann (Literal (Ann One))])))))\n                                    ,Ann (Is (Ann Flagged)\n                                             (Ann Type)\n                                             (Ann (Multi [Ann (Literal (Ann Three))])))\n                                    ,Ann (Is (Ann Flagged)\n                                             (Ann Type)\n                                             (Ann (Multi [Ann (Literal (Ann Two))])))]))\n                           (Ann (Internal (Ann (Concat (Ann (Id \"amet\"))))))))])\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquchen%2Fshow-prettyprint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquchen%2Fshow-prettyprint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquchen%2Fshow-prettyprint/lists"}