Class: Farce::ModeManager::SmartRule
- Inherits:
-
Object
- Object
- Farce::ModeManager::SmartRule
- Includes:
- Shareable::Immutable
- Defined in:
- lib/farce/mode_manager/smart_rule.rb
Overview
Class for converting values based on smart rules.
Class Method Summary collapse
-
.define(klass, mode = nil, &block) ⇒ Class
Allows you to add rules for smart wrapping of specific classes.
Methods included from Shareable
#initialize, #ractor_shareable?
Class Method Details
.define(klass, mode = nil) ⇒ Class .define(klass) {|value, mode_manager, mode| ... } ⇒ Class .define(klass) { ... } ⇒ Class
Note:
This method must be called from the main ractor.
Allows you to add rules for smart wrapping of specific classes.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/farce/mode_manager/smart_rule.rb', line 51 def self.define(klass, mode = nil, &block) SMART_RULES.define(klass) do if mode class_eval <<~RUBY, __FILE__, __LINE__ + 1 def call(value, mode_manager, _) = mode_manager.wrap(value, mode: #{mode.inspect}) RUBY end if block_given? if block.arity.zero? class_eval(&block) SMART_MODES.each { private it if method_defined?(it) } else define_method(:call, &Ractor.shareable_lambda(&block)) end end end end |