Giter VIP home page Giter VIP logo

hanging_methods's Introduction

Hanging Methods - Add a method that you can hang other methods

This is the gem for building nice looking APIs where you want to delegate method calls to another object at a later time.

See Parallizer for an example.

Installation

gem install hanging_methods

Hanging some methods

Here's an example.

require 'hanging_methods'

class Interesting
  include HangingMethods

  add_hanging_method :add
end

interesting = Interesting.new
interesting.add.a_method
interesting.add.another_method(1, 2)

puts interesting.hanging_method_invocations(:add)
# [[:a_method], [:another_method, 1, 2]]

Get notified of a hanging method

You can be notified of method being hanged and specify its result.

require 'hanging_methods'

class Interesting
  include HangingMethods

  add_hanging_method :add, after_invocation: :added

  private

  def added(method_name, arg_1, arg_2, &block)
    return "very_interesting: #{arg_1}, #{arg_2}, #{yield}"
  end
end

interesting = Interesting.new
interesting.add.a_method(1, 2) { 3 }
# returns "very_interesting: 1, 2, 3"

Credits

Hanging Methods is maintained by Michael Pearce

Copyright

Copyright (c) 2013 Michael Pearce. See LICENSE.txt for further details.

hanging_methods's People

Watchers

Michael Pearce avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.