{"id":18391064,"url":"https://github.com/kasperosterbye/pharo-elucidator","last_synced_at":"2025-06-18T23:33:38.956Z","repository":{"id":108793346,"uuid":"248171979","full_name":"kasperosterbye/pharo-elucidator","owner":"kasperosterbye","description":"Tools for understanding existing code","archived":false,"fork":false,"pushed_at":"2022-02-24T13:20:24.000Z","size":258,"stargazers_count":6,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T02:38:23.184Z","etag":null,"topics":["pharo"],"latest_commit_sha":null,"homepage":null,"language":"Smalltalk","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/kasperosterbye.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-18T08:05:07.000Z","updated_at":"2022-05-23T18:45:21.000Z","dependencies_parsed_at":"2023-04-17T01:05:05.417Z","dependency_job_id":null,"html_url":"https://github.com/kasperosterbye/pharo-elucidator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kasperosterbye/pharo-elucidator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasperosterbye%2Fpharo-elucidator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasperosterbye%2Fpharo-elucidator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasperosterbye%2Fpharo-elucidator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasperosterbye%2Fpharo-elucidator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kasperosterbye","download_url":"https://codeload.github.com/kasperosterbye/pharo-elucidator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasperosterbye%2Fpharo-elucidator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260653500,"owners_count":23042641,"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":["pharo"],"created_at":"2024-11-06T01:50:30.012Z","updated_at":"2025-06-18T23:33:33.941Z","avatar_url":"https://github.com/kasperosterbye.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Elucidator for pharo\n\n\u003e [Elucidate](https://dictionary.cambridge.org/dictionary/english/elucidate)  \n\u003e verb [ I or T ]   formal.  \n\u003e UK  /iˈluː.sɪ.deɪt/\n\u003e US  /iˈluː.sə.deɪt/\n \n\u003e to explain something or make something clear:  \n\u003e - I don't understand. You'll have to elucidate.  \n\u003e - The reasons for the change in weather conditions have been elucidated by several scientists.\n\nThe elucidator is a set of tools which will try to explain and clarify projects of Pharo code.\n\nThe primary way to get elucidation is the `elucidate` method:\n\n* `aClass elucidate`\n* `anObject elucidate`\n* `'Debugger' elucidate`\n\nThe key class to examine is the [\u003cimg src=\"https://avatars1.githubusercontent.com/u/1838382?s=12\"\u003e](http://localhost:20203/browseClass/Elucidator) `Elucidator` on the class side. For example: [\u003cimg src=\"https://avatars1.githubusercontent.com/u/1838382?s=12\"\u003e](http://localhost:20203/browseMethod/Elucidator%20class/elucidateObject:range:)`Elucidator\u003e\u003e#elucidateObject:range:`.\n\n### Background\nI have had a hard time to understand what the different aspects of the pharo image do. This tool try to gather a lot of information about a given project. There is no pharo concept of a `project`, but this tool defines it as all the packages which shares a common prefix upto the first $-. It works well in practice for me. \n\nThe two above methods finds the project of a class or object, and tries to elucidate that project.\n\n## Instalation\nThe elucidator loads using this Metacello script:\n\n```smalltalk\nMetacello new\n   baseline: 'Elucidator';\n   repository: 'github://kasperosterbye/pharo-elucidator';\n   load.\n```\n\n## Eucidations\n#### Help\nThe pharo image has an (rather outdated) build in help system. This section of the elucidation returns those topics for in that help system if any exist.\n#### Examples\nIt is good custom to give examples on the class side of selected classes. But where are those examples? The elucidator finds them for you. \n\nSome examples are defined by name, others are indicated by pragmas. The elucidator finds both. \n#### Comments\nSome packages has comments, some classes has comments. The Elucidator finds all those comments for you. Often you get a good idea of what is going on by skimming over all those comments.\n\n#### Instances\nSometimes it can be useful to start your investigation by looking at classes which actually has instances in the image. The Elucidator finds the 10 classes in the image within a project with the most instances. \n\n## Design considerations\nThe design of the elucidator is driven by a few goals and considerations:\n\n1. Documentation written by humans are important, but not the only thing to consider.\n2. The architecture should allow for many different kind of elucidations: Documentation, examples, test-examples, diagrams, etc.\n3. Each elucidation consists of a information gathering, and a rendering.\n4. Each elucidation should provide extensive linking into the code, and easy navigation into the browser or playgrounds.\n\n### Using html for rendering\nThe elucidator presents its information in a webbrowser. The pharo image is set up as a webserver. This allow the links in the webbrowser to open pharo-tools, and to avoid reinventing a complete rendering mechanism inside pharo.\n\nThe individual elucidation tools seperate the information gathering from rendering, but only in methods. It will require a refactoring of the individual elucidations if one want a different rendering.\n\nHaving the information rendered in a webbrowser also accomodates for a developer with two screens, elucidation in webbrowser, and no overlap of the image.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasperosterbye%2Fpharo-elucidator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasperosterbye%2Fpharo-elucidator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasperosterbye%2Fpharo-elucidator/lists"}