{"id":13503642,"url":"https://github.com/youchan/hyalite","last_synced_at":"2025-04-06T21:15:18.758Z","repository":{"id":2863597,"uuid":"41934175","full_name":"youchan/hyalite","owner":"youchan","description":"A Ruby implemented Virtual DOM in Opal","archived":false,"fork":false,"pushed_at":"2022-05-27T16:43:55.000Z","size":164,"stargazers_count":137,"open_issues_count":5,"forks_count":1,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-06T10:34:32.235Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/youchan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-04T19:29:02.000Z","updated_at":"2024-04-30T10:12:40.000Z","dependencies_parsed_at":"2022-08-20T11:50:45.093Z","dependency_job_id":null,"html_url":"https://github.com/youchan/hyalite","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youchan%2Fhyalite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youchan%2Fhyalite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youchan%2Fhyalite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youchan%2Fhyalite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/youchan","download_url":"https://codeload.github.com/youchan/hyalite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247550690,"owners_count":20956987,"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-31T23:00:42.149Z","updated_at":"2025-04-06T21:15:18.729Z","avatar_url":"https://github.com/youchan.png","language":"Ruby","readme":"Hyalite\n====\n\n[![Build Status](https://travis-ci.org/youchan/hyalite.svg?branch=master)](https://travis-ci.org/youchan/hyalite)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/youchan/hyalite?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n\nThis is ruby virtual DOM implementation using opal. It is inspired by react.js.\n\nExample\n----\n\n```ruby\nrequire 'hyalite'\n\nclass ExampleView\n  include Hyalite::Component\n\n  state :count, 0\n\n  def component_did_mount\n    interval = Proc.new do\n      @state.count += 1\n    end\n\n    `setInterval(interval, 5000)`\n  end\n\n  def render\n    div({class: 'example'},\n      h2(nil, @props[:title]),\n      h3(nil, \"count = #{@state.count}\")\n    )\n  end\nend\n\n$document.ready do\n  Hyalite.render(Hyalite.create_element(ExampleView, {title: \"Hyalite counter example\"}), $document['.container'])\nend\n```\n\nHow to execute this example is the following.\n\n```\n\u003e cd example\n\u003e rackup\n```\n\nOpen url `http://localhost:9292`.\n","funding_links":[],"categories":["Uncategorized","Day 1"],"sub_categories":["Uncategorized","Isomorphic web programming in Ruby"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyouchan%2Fhyalite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyouchan%2Fhyalite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyouchan%2Fhyalite/lists"}