{"id":13424524,"url":"https://github.com/segecey/hoop","last_synced_at":"2025-03-15T18:35:17.878Z","repository":{"id":34026440,"uuid":"37785150","full_name":"segecey/hoop","owner":"segecey","description":"Building native OSX apps.","archived":true,"fork":false,"pushed_at":"2018-03-19T07:17:44.000Z","size":615,"stargazers_count":196,"open_issues_count":4,"forks_count":9,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-02-07T15:02:00.739Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Crystal","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/segecey.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}},"created_at":"2015-06-20T20:41:17.000Z","updated_at":"2024-10-13T08:24:57.000Z","dependencies_parsed_at":"2022-07-14T01:50:39.610Z","dependency_job_id":null,"html_url":"https://github.com/segecey/hoop","commit_stats":null,"previous_names":["0x73/hoop"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/segecey%2Fhoop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/segecey%2Fhoop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/segecey%2Fhoop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/segecey%2Fhoop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/segecey","download_url":"https://codeload.github.com/segecey/hoop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243775868,"owners_count":20346279,"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-07-31T00:00:55.590Z","updated_at":"2025-03-15T18:35:12.857Z","avatar_url":"https://github.com/segecey.png","language":"Crystal","funding_links":[],"categories":["Crystal"],"sub_categories":[],"readme":"## hoop\n\n## How to try ?\n\n```shell\ngit clone git@github.com:0x73/hoop.git\nshards install\ncrystal run example/webview_example.cr\n```\n\n## Bundled Application\n```bash\ncd example/bundled_application \u0026\u0026 sh build.sh \u0026\u0026 open Hoop.app\n```\n\n## Basic example\n\n```crystal\n# app.cr\n\nrequire \"src/hoop\"\ninclude Hoop\n\nNSAutoreleasePool.new\nNSApp.activation_policy = LibAppKit::NSApplicationActivationPolicy::Regular\nappName = \"Hello, World !\".to_objc\n\nwindow = NSWindow.new(NSRect.new(0, 0, 700, 700).to_objc, LibAppKit::NSWindowMask::Titled, LibAppKit::NSBackingStoreType::Buffered, false)\nwindow.set_background_color = NSColor.white_color.to_objc\nwindow.cascade_top_left_from_point NSPoint.new(20, 20).to_objc\nwindow.title = appName\nwindow.make_key_and_order_front nil.to_objc\n\nb = NSButton.new(NSRect.new(50, 50, 600, 100).to_objc)\nb.set_title = \"MAKE REQUEST\"\n\nclass Foo \u003c NSObject\n  export_class\n  def bar\n\turl = NSURL.url_with_string \"https://jsonplaceholder.typicode.com/posts/2\"\n\treq = NSURLRequest.request_with_url url.to_objc\n\tres = NSURLResponse.new\n\n\tdata = NSURLConnection.send_synchronous_request req.to_objc, res.to_objc, nil.to_objc\n\tns_log data\n\n\tresult = NSJSONSerialization.json_object_with_data data.to_objc, LibCF::NSJSONReadingOptions::KNilOptions, nil.to_objc\n\tns_log result\n\n\tuserId = result.object_for_key(\"userId\")\n\tid = result.object_for_key(\"id\")\n\ttitle = result.object_for_key(\"title\")\n\tbody = result.object_for_key(\"body\")\n\n\tns_log \"#{userId.as(NSNumber).intValue}\"\n\tns_log \"#{id.as(NSNumber).intValue}\"\n\tns_log \"#{title.as(NSString)}\"\n\tns_log \"#{body}\"\n\n    alert = NSAlert.new\n    alert.set_message_text = \"User Id: #{userId.as(NSNumber).intValue} - Id: #{id.as(NSNumber).intValue} - Title: #{title} - Body: #{body}\"\n    alert.run_modal\n  end\n  export \"bar\"\nend\n\nb.target = Foo.new.to_objc\nb.action = \"bar\"\n\nwindow.content_view \u003c\u003c b.to_objc\nns_log \"app launched\"\n\nNSApp.activate_ignoring_other_apps = true\nNSApp.run\n\n```\n\n```shell\n$ crystal app.cr\n```\n\n## Contributing\n\n1. Fork it ( https://github.com/hoopcr/hoop/fork )\n2. Create your feature branch (git checkout -b my-new-feature)\n3. Commit your changes (git commit -am 'Add some feature')\n4. Push to the branch (git push origin my-new-feature)\n5. Create a new Pull Request\n\n## Authors\n\n- Sedat G. Çiftçi [@0x73](https://github.com/0x73)\n- Serdar Doğruyol [@sdogruyol](https://github.com/sdogruyol)\n\n## Thanks\n\nThanks to Manas for their awesome work on [Crocoa](https://github.com/manastech/crocoa).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsegecey%2Fhoop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsegecey%2Fhoop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsegecey%2Fhoop/lists"}