{"id":17384498,"url":"https://github.com/jakubriegel/abacus","last_synced_at":"2025-03-27T21:18:27.176Z","repository":{"id":53037691,"uuid":"346414230","full_name":"jakubriegel/abacus","owner":"jakubriegel","description":"Table data editor with the support of formulas","archived":false,"fork":false,"pushed_at":"2021-04-08T21:31:04.000Z","size":467,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-01T23:42:02.453Z","etag":null,"topics":["abacus","cells","formulas","java-swing","language-parser","recursion","spreadsheet"],"latest_commit_sha":null,"homepage":"","language":"Java","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/jakubriegel.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}},"created_at":"2021-03-10T16:09:14.000Z","updated_at":"2023-08-28T23:55:55.000Z","dependencies_parsed_at":"2022-08-24T00:40:08.802Z","dependency_job_id":null,"html_url":"https://github.com/jakubriegel/abacus","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/jakubriegel%2Fabacus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubriegel%2Fabacus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubriegel%2Fabacus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubriegel%2Fabacus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakubriegel","download_url":"https://codeload.github.com/jakubriegel/abacus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245924500,"owners_count":20694731,"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":["abacus","cells","formulas","java-swing","language-parser","recursion","spreadsheet"],"created_at":"2024-10-16T07:45:41.653Z","updated_at":"2025-03-27T21:18:27.109Z","avatar_url":"https://github.com/jakubriegel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# abacus\n## About\nTable data editor with the support of formulas.\n\n![abacus-screen](docs/abacus-screen.png)\n\n## Highlights\n- graphical UI\n- cells edition\n- formulas with custom language\n- endless scroll\n- basic cell and text formatting\n\n## Formula language\n### Supported expressions\nThe language supports following expressions:\n* number value, ie. `1`, `-12.34`\n* text value, ie. `abc`\n* logic value: `true` or `false`\n* formulas, ie. `=add(1, 2)`\n\n### Formulas syntax\nFormulas start with `=` followed by formula name and arguments. Simple formula call looks as follows:\n```\n=add(1, 2) # 3\n```\n\nTo use text value as argument wrap in with `''`:\n```\n=length('abc ') # 4\n```\n\nOther cell can be referenced with its address:\n```\n=add(1, B5) # 1 + value of B5\n```\n\nFormulas can take other formulas as arguments:\n```\n=abs(add(-10, length('abc'))) # 7\n```\n\n### Available formulas\n#### Math\n**Basic**:\n* abs(number) -\u003e number\n* add(vararg number) -\u003e number\n* ceil(number) -\u003e number\n* div(number, number) -\u003e number\n* divide(vararg number) -\u003e number\n* floor(number) -\u003e number\n* mod(number, number) -\u003e number\n* multiply(vararg number) -\u003e number\n* subtract(vararg number) -\u003e number\n\n**Stats**:\n* max(vararg number) -\u003e number\n* mean(vararg number) -\u003e number\n* min(vararg number) -\u003e number\n* std(vararg number) -\u003e number\n\n#### Text\n* length(text) -\u003e number\n* lower(text) -\u003e text\n* sub(text, number, number) -\u003e text\n* upper(text) -\u003e text\n\n#### Logic\n* compare(vararg any) -\u003e logic\n* if(logic, any, any) -\u003e any\n\n## Running it\n\u003e Note that the app was tested only on Windows.\n\nRequirements:\n- Java 15\n- physical display\n\nSteps:\n1. Checkout the code\n2. Type `./gradlew run`\n\n## Possible enhancements\n**Features:**\n- cell range reference\n- working side menu (ie. saving, undo/redo, search)\n- syntax highlighting\n- event based user behaviour metrics\n\n**Technical:**\n- split app into three modules\n- integration tests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubriegel%2Fabacus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubriegel%2Fabacus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubriegel%2Fabacus/lists"}