https://github.com/doodzik/defp
pattern matching for ruby
https://github.com/doodzik/defp
defp pattern-matching ruby
Last synced: 3 months ago
JSON representation
pattern matching for ruby
- Host: GitHub
- URL: https://github.com/doodzik/defp
- Owner: doodzik
- License: mit
- Created: 2014-10-25T15:15:28.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2015-07-27T01:40:01.000Z (almost 11 years ago)
- Last Synced: 2025-04-23T22:53:49.002Z (about 1 year ago)
- Topics: defp, pattern-matching, ruby
- Language: Ruby
- Homepage: dudzik.co
- Size: 191 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Defp
[](https://travis-ci.org/doodzik/defp)
An pattern matching implementation in ruby inspired by haskell.
If you want to know about the inner workings of defp [check out this blog post](http://dudzik.co/blog/2014/10/27/i-went-on-a-journey-to-haskell-and-all-i-got-was-a-pattern-matcher-for-ruby/).
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'defp'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install defp
## Usage
```ruby
class Example
extend Defp
# With normal params
def normal_params(value1, value2)
defp ('hello', _ ) == 'foo'
defp (_, 'hello' ) == -> do
'bar'
end
'baz'
end
# With keyword arguments
def self.keyword_params(value1: ,value2:)
defp(value1: 'hello', value2: _) == 'foo' # you can specify blank vars
defp(value2: 'hello') == -> { 'bar' } # or not specifying them at all
'baz'
end
# With mixed params
def self.mixed_params(value1 = {}, value2, value3)
defp({value2: 'hello'}, 'dud', _) == 'foo'
'bar'
end
end
```
## Contributing
1. Fork it ( https://github.com/doodzik/defp/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request