Rubysierung is an implementation of Soft Typing in Ruby
Add this line to your application's Gemfile:
# ruby >= 2.1.0
# You can only use Rubysierung in a file context, see issue #5 and #7.
gem 'rubysierung'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rubysierung
Have a look at all available [Types] (https://github.com/doodzik/rubysierung/blob/master/lib/rubysierung/types.rb#L3-L19)
require 'rubysierung'
# define a custom types
class Strict::CustomType;end
class CustomType;end
class Strict::CustomTypeX;end
class CustomTypeX;end
class Example
extend Rubysierung
# if the type doesnt match Rubisierung will raise an Error messages
# add custom Types
# if you don't specify a Strict Type the standard type is being set for it
# [TypeClass, StandardConversionMethodAsSymbol, StrictConversionMethodSymbol]
@__add_type[CustomType, :to_s, :to_str]
@__add_type[CustomTypeX, :to_s]
# define foo to respond to :to_s and bar to :to_i
def one(foo: String, bar: Integer)
[foo, bar]
end
# you can still define empty/default parameters
def self.two(foo:, bar: 'hello World')
[foo, bar]
end
# use a custom type
def self.three(foo:, bar: CustomType)
[foo, bar]
end
# define foo to respond to :to_str (strict type)
def self.four(foo: Strict::String, bar: Integer)
[foo, bar]
end
# with default parameters
def self.five(foo: String||'I am a default :)', bar: Integer||42)
[foo, bar]
end
end
def one(foo:, bar:)
sFoo = foo.to_s
iBar = bar.to_i
[sFoo, iBar]
end
- Fork it ( https://github.com/doodzik/rubysierung/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request