{"id":15951727,"url":"https://github.com/peteruhnak/pharo-changes-builder","last_synced_at":"2025-09-16T10:08:11.060Z","repository":{"id":93122029,"uuid":"88377311","full_name":"peteruhnak/pharo-changes-builder","owner":"peteruhnak","description":"A small wrapper library to simplify common RBRefactoring operations when generating code.","archived":false,"fork":false,"pushed_at":"2018-10-09T20:04:14.000Z","size":254,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-17T08:35:04.028Z","etag":null,"topics":["code-generation","pharo","refactorings"],"latest_commit_sha":null,"homepage":null,"language":"Smalltalk","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/peteruhnak.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":"2017-04-15T22:22:18.000Z","updated_at":"2020-08-06T06:41:14.000Z","dependencies_parsed_at":"2023-06-05T00:30:16.109Z","dependency_job_id":null,"html_url":"https://github.com/peteruhnak/pharo-changes-builder","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":"0.27586206896551724","last_synced_commit":"3733836d90bc23748ea2ea18516c543180c52c58"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/peteruhnak/pharo-changes-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteruhnak%2Fpharo-changes-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteruhnak%2Fpharo-changes-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteruhnak%2Fpharo-changes-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteruhnak%2Fpharo-changes-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peteruhnak","download_url":"https://codeload.github.com/peteruhnak/pharo-changes-builder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteruhnak%2Fpharo-changes-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275399943,"owners_count":25457791,"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","status":"online","status_checked_at":"2025-09-16T02:00:10.229Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["code-generation","pharo","refactorings"],"created_at":"2024-10-07T13:03:55.116Z","updated_at":"2025-09-16T10:08:11.013Z","avatar_url":"https://github.com/peteruhnak.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Changes Builder\n[![Build Status](https://travis-ci.org/peteruhnak/pharo-changes-builder.svg?branch=master)](https://travis-ci.org/peteruhnak/pharo-changes-builder) [![Coverage Status](https://coveralls.io/repos/github/peteruhnak/pharo-changes-builder/badge.svg?branch=master)](https://coveralls.io/github/peteruhnak/pharo-changes-builder?branch=master)\n\nA small wrapper library to simplify common RBRefactoring operations when generating code.\n\nThe main pupose is to prepare all code that you want to generate before hand and represent them as RBRefactorings, so you can review them before you accidentally break your system. ;)\n\nOn top of the generation, this library also fixes couple RBRefactoring issues, where RBRefactoring would show (and try to execute) a change that doesn't actually change anything. We filter this out, so you see only actual changes.\n\n\n## Installation\n\n```smalltalk\nMetacello new\n\tbaseline: 'ChangesBuilder';\n\trepository: 'github://peteruhnak/pharo-changes-builder/repository';\n\tload.\n```\n\n## Usage Example\n\n```smalltalk\nexample\n| cls getter setter init changeSet |\ncls := CBClass new.\ncls name: 'Square'.\n\"package name, default 'Unclassified'\"\ncls package: 'Geometric-Shapes'.\n\"the superclass of Square, default is Object\"\ncls parent: 'Object'.\n\n\"add an instance variable\"\ncls addInstVarNamed: 'size'.\n\n\"getter: is a convenience method that will generate a basic accessor in 'accessing' protocl\"\ngetter := CBMethod new\n\tgetter: 'size'.\n\"dtto for setter\"\nsetter := CBMethod new\n\tsetter: 'size' argument: 'Number' comment: 'specify a new size'.\n\"'hand'-written source is also possible\"\ninit := CBMethod new\n\tsource: 'initialize\n\tsize := 0';\n\tprotocol: 'initialization'.\n\ncls addMethod: getter.\ncls addMethod: setter.\ncls addMethod: init.\n\nchangeSet := CBChangeSet new.\nchangeSet addClass: cls.\n\n\"ChangesBrowser can also be used, but it throws error on empty changeset\"\n^ (CBChangesBrowser changes: changeSet refactoringChanges) open.\n```\n\n![](docs/example-changes.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeteruhnak%2Fpharo-changes-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeteruhnak%2Fpharo-changes-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeteruhnak%2Fpharo-changes-builder/lists"}