snusnu / procto Goto Github PK
View Code? Open in Web Editor NEWTurns your ruby object into a method object
License: MIT License
Turns your ruby object into a method object
License: MIT License
Copied over from slack:
require 'procto'
class Shouter
include Procto.call
def initialize(text)
@text = text
end
def call
@text.upcase
end
end
names = %w[John Dan Marcus]
names.map(&Shouter.method(:call)) # => ["JOHN", "DAN", "MARCUS"]
class Shouter
def self.to_proc
public_method(:call).to_proc
end
end
names.map(&Shouter) # => ["JOHN", "DAN", "MARCUS"]
โ procto git:(master) bundle
Updating https://github.com/rom-rb/devtools.git
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies...
Bundler could not find compatible versions for gem "bundler":
In Gemfile:
bundler (~> 1.6.1) ruby
Current Bundler version:
bundler (1.10.6)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
Could not find gem 'bundler (~> 1.6.1) ruby in any of the sources
I frequently use method objects like these:
class Greeter
private_class_method :new
def self.call(text)
new(text).call
end
def initialize(text)
@text = text
end
def call
"Hello #{@text}"
end
end
I add the private_class_method :new
to avoid to another developers that does not understand the pattern instantiate the object manually.
What do you think about it?
Love this gem! I'm wondering what the name means and whether you could explain it in the main README.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.