Sha256: f1dcc53b9306c580bd4ce2c8ad0904be8959e781a8338b5d08fd09db839c32b0
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
require 'transproc/version' require 'transproc/function' require 'transproc/functions' require 'transproc/composer' require 'transproc/error' require 'transproc/registry' module Transproc module_function # Register a new function # # @example # Transproc.register(:to_json, -> v { v.to_json }) # # Transproc(:map_array, Transproc(:to_json)) # # # @return [Function] # # @api public def register(*args, &block) name, fn = *args if functions.include?(name) raise FunctionAlreadyRegisteredError, "Function #{name} is already defined" end functions[name] = fn || block end # Get registered function with provided name # # @param [Symbol] name The name of the registered function # # @api private def [](name) functions.fetch(name) { raise FunctionNotFoundError, "No registered function for #{name}" } end # Function registry # # @api private def functions @_functions ||= {} end end require 'transproc/array' require 'transproc/hash' # Access registered functions # # @example # Transproc(:map_array, Transproc(:to_string)) # # Transproc(:to_string) >> Transproc(-> v { v.upcase }) # # @param [Symbol,Proc] fn The name of the registered function or an anonymous proc # @param [Array] args Optional addition args that a given function may need # # @return [Function] # # @api public def Transproc(fn, *args) case fn when Proc then Transproc::Function.new(fn, args: args) when Symbol fun = Transproc[fn] case fun when Transproc::Function, Transproc::Composite then fun else Transproc::Function.new(fun, args: args) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
transproc-0.2.4 | lib/transproc.rb |