module Fear::Extractor
@api private
Constants
- BUILD_EXTRACTOR
- EXTRACTOR_NOT_FOUND
- ExtractorNotFound
Public Class Methods
find_extractor(klass)
click to toggle source
@param klass [Class, String] @api private
# File lib/fear/extractor.rb, line 39 def find_extractor(klass) @registry.call_or_else(klass, &EXTRACTOR_NOT_FOUND) end
register_extractor(*args)
click to toggle source
Register extractor for given class @!method register_extractor
(*names, extractor)
@param names [<Class, String>, Class, String] name of a class. You can also pass alias for the name @param extractor [Proc<any => Fear::Option>] proc taking any argument and returned Option of extracted value('s)
@example
register_extractor(Fear::Some, Fear.case(Fear::Some) { |some| some.get }.lift) register_extractor(User, Fear.case(User) { |user|} [user.id, user.email] , )
@example registering an alias. Alias should be CamelCased string
register_extractor(Fear::Some, 'Some', Fear.case(Fear::Some) { |some| some.get }.lift) # no you can extract Fear::Some's using Some alias m.case(Fear['Some(value : Integer)']) { |value:| value * 2 }
# File lib/fear/extractor.rb, line 60 def register_extractor(*args) *keys, extractor = *args @mutex.synchronize do keys.uniq.each do |key| @registry = BUILD_EXTRACTOR.(key, extractor).or_else(@registry) end end self end