pattern matching for ruby
Switch branches/tags
Nothing to show
Clone or download
Latest commit 2895617 Jul 27, 2015
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib change version Nov 20, 2014
test CallBaecker is now internally added && travis-ci auto deploy Nov 20, 2014
.gitignore init Oct 25, 2014
.travis.yml fix travis Nov 20, 2014
Gemfile init Oct 25, 2014
LICENSE.txt init Oct 25, 2014
README.md Update README.md Jul 27, 2015
Rakefile init Oct 25, 2014
defp.gemspec CallBaecker is now internally added && travis-ci auto deploy Nov 20, 2014

README.md

Defp

Build Status

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.

Installation

Add this line to your application's Gemfile:

gem 'defp'

And then execute:

$ bundle

Or install it yourself as:

$ gem install defp

Usage

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