{"id":15561032,"url":"https://github.com/doodzik/rubysierung","last_synced_at":"2025-04-23T21:46:00.916Z","repository":{"id":22448002,"uuid":"25786385","full_name":"doodzik/rubysierung","owner":"doodzik","description":"Rubysierung is the type system Ruby deserves","archived":false,"fork":false,"pushed_at":"2015-07-27T01:44:27.000Z","size":389,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T03:51:08.116Z","etag":null,"topics":["ruby","ruby-types","softtyping","typesystem"],"latest_commit_sha":null,"homepage":"http://dudzik.co","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/doodzik.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2014-10-26T18:51:49.000Z","updated_at":"2022-10-05T01:00:29.000Z","dependencies_parsed_at":"2022-08-20T14:00:12.067Z","dependency_job_id":null,"html_url":"https://github.com/doodzik/rubysierung","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodzik%2Frubysierung","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodzik%2Frubysierung/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodzik%2Frubysierung/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodzik%2Frubysierung/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doodzik","download_url":"https://codeload.github.com/doodzik/rubysierung/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250417962,"owners_count":21427334,"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":["ruby","ruby-types","softtyping","typesystem"],"created_at":"2024-10-02T16:04:58.513Z","updated_at":"2025-04-23T21:46:00.879Z","avatar_url":"https://github.com/doodzik.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Stories in Ready](https://badge.waffle.io/doodzik/rubysierung.png?label=ready\u0026title=Ready)](https://waffle.io/doodzik/rubysierung)\n# Rubysierung\n\n[![Build Status](https://travis-ci.org/doodzik/rubysierung.svg?branch=master)](https://travis-ci.org/doodzik/rubysierung)\n\n[![doodzik/rubysierung API Documentation](https://www.omniref.com/github/doodzik/rubysierung.png)](https://www.omniref.com/github/doodzik/rubysierung/HEAD)\n\nRubysierung is an implementation of Soft Typing in Ruby\n\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\n# ruby \u003e= 2.1.0\n# You can only use Rubysierung in a file context, see issue #5 and #7.\ngem 'rubysierung'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install rubysierung\n\n## Usage\n\n## Have a look at all available [Types] (https://github.com/doodzik/rubysierung/blob/master/lib/rubysierung/types.rb#L3-L19)\n\n```ruby\nrequire 'rubysierung'\n\n# define a custom types\nclass Strict::CustomType;end\nclass CustomType;end\n\nclass Strict::CustomTypeX;end\nclass CustomTypeX;end\n\nclass Example\n  extend Rubysierung\n\n  # if the type doesnt match Rubisierung will raise an Error messages\n\n  # add custom Types\n  # if you don't specify a Strict Type the standard type is being set for it\n  # [TypeClass, StandardConversionMethodAsSymbol, StrictConversionMethodSymbol]\n  @__add_type[CustomType, :to_s, :to_str]\n  @__add_type[CustomTypeX, :to_s]\n\n  # define foo to respond to :to_s and bar to :to_i\n  def one(foo: String, bar: Integer)\n    [foo, bar]\n  end\n\n  # you can still define empty/default parameters\n  def self.two(foo:, bar: 'hello World')\n    [foo, bar]\n  end\n\n  # use a custom type\n  def self.three(foo:, bar: CustomType)\n    [foo, bar]\n  end\n\n  # define foo to respond to :to_str (strict type)\n  def self.four(foo: Strict::String, bar: Integer)\n    [foo, bar]\n  end\n\n  # with default parameters\n  def self.five(foo: String||'I am a default :)', bar: Integer||42)\n    [foo, bar]\n  end\nend\n```\n\n## what it would look like normally\n```ruby\ndef one(foo:, bar:)\n  sFoo = foo.to_s\n  iBar = bar.to_i\n  [sFoo, iBar]\nend\n```\n\n## Other Typing implementations\n\n[contracts.ruby](https://github.com/egonSchiele/contracts.ruby)\n\n[typo](https://github.com/hannestyden/typo/blob/master/typo.rb)\n\n## Contributing\n\n1. Fork it ( https://github.com/doodzik/rubysierung/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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoodzik%2Frubysierung","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoodzik%2Frubysierung","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoodzik%2Frubysierung/lists"}