{"id":15603899,"url":"https://github.com/leesheppard/toy_robot","last_synced_at":"2026-04-27T23:36:05.001Z","repository":{"id":243176185,"uuid":"811658309","full_name":"leesheppard/toy_robot","owner":"leesheppard","description":"The toy robot test.","archived":false,"fork":false,"pushed_at":"2024-06-09T12:04:13.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T13:51:20.263Z","etag":null,"topics":["ci","github-actions","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":false,"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/leesheppard.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":"2024-06-07T03:30:01.000Z","updated_at":"2024-06-09T12:04:16.000Z","dependencies_parsed_at":"2024-12-06T22:33:56.783Z","dependency_job_id":"692768ce-76d5-4552-be49-28dc99b35540","html_url":"https://github.com/leesheppard/toy_robot","commit_stats":{"total_commits":22,"total_committers":1,"mean_commits":22.0,"dds":0.0,"last_synced_commit":"f75c6189e2cfa7df76b954db2c160505882bc15c"},"previous_names":["leesheppard/toy_robot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/leesheppard/toy_robot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leesheppard%2Ftoy_robot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leesheppard%2Ftoy_robot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leesheppard%2Ftoy_robot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leesheppard%2Ftoy_robot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leesheppard","download_url":"https://codeload.github.com/leesheppard/toy_robot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leesheppard%2Ftoy_robot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32360114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ci","github-actions","ruby"],"created_at":"2024-10-03T03:21:51.956Z","updated_at":"2026-04-27T23:36:04.961Z","avatar_url":"https://github.com/leesheppard.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![forthebadge](https://forthebadge.com/images/badges/made-with-ruby.svg)](https://forthebadge.com)\n\n# ToyRobot\n\nA simulation of a toy robot moving on a square tabletop, of dimensions 5 units x 5 units.\n\n* There are no other obstructions on the table surface.\n* The robot is free to roam around the surface of the table, but must be prevented from falling to destruction. Any movement that would result in the robot falling from the table must be prevented, however further valid movement commands must still\n  be allowed.\n\n[![Tests for Robot](https://github.com/leesheppard/toy_robot/actions/workflows/tests.yml/badge.svg)](https://github.com/leesheppard/toy_robot/actions/workflows/tests.yml)\n\nFull specifications [here](#specification).\n\nThis project was written using ruby `3.3.0`. Tests are run against version `3.0` and `3.3`.\n\n## Installation\n\nInstall the gem and add to the application's Gemfile by executing:\n\n```bash\ngit clone https://github.com/leesheppard/toy_robot.git\ncd toy_robot\nbundle install\n```\n\n### Usage\n\n```bash\nbundle exec exe/toy_robot commands.txt\n```\n\nSimplified into a shorter command:\n\n```bash\nrake run\n```\n\n## Testing\n\nCode quality and verification is tested using [RSpec](http://rspec.info/).\n\nRun spec tests:\n\n```bash\nbundle exec rspec\n```\n\n## Specification\n\n* The application is a simulation of a toy robot moving on a square tabletop, of dimensions 5 units x 5 units.\n* There are no other obstructions on the table surface.\n* The robot is free to roam around the surface of the table.\n* Any movement that would result in the robot falling from the table is prevented, however further valid movement commands are still allowed.\n\nThe application reads a file using a name passed in the command line, the following commands are valid:\n\n`PLACE X,Y,F`  \n`MOVE`  \n`LEFT`  \n`RIGHT`  \n`REPORT`\n\nHere are some rules for these commands:\n\n* `PLACE` will put the toy robot on the table in position `X,Y` and facing `NORTH`, `SOUTH`, `EAST` or `WEST`.\n* The origin (`0,0`) is the `SOUTH WEST` most corner.\n* All commands are ignored until a valid `PLACE` is made.\n* `MOVE` will move the toy robot one unit forward in the direction it is currently facing.\n* `LEFT` and `RIGHT` rotates the robot 90 degrees in the specified direction without changing the position of the robot.\n* `REPORT` announces the `X,Y` and `F` of the robot.\n\nThe file is assumed to have `ASCII encoding`. It is assumed that the `PLACE` command has only one space, that is `PLACE 1, 2, NORTH` is an invalid command. All commands must be in upcase, all lower and mixed case commands will be ignored.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleesheppard%2Ftoy_robot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleesheppard%2Ftoy_robot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleesheppard%2Ftoy_robot/lists"}