Module: Protobuf::Optionable
- Defined in:
- lib/protobuf/optionable.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.inject(base_class, extend_class = true, &block) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/protobuf/optionable.rb', line 46 def self.inject(base_class, extend_class = true, &block) unless block_given? fail ArgumentError, 'missing option class block (e.g: ::Google::Protobuf::MessageOptions)' end if extend_class # Check if optionable_descriptor_class is already defined and short circuit if so. # File options are injected per module, and since a module can be defined more than once, # we will get a warning if we try to define optionable_descriptor_class twice. if base_class.respond_to?(:optionable_descriptor_class) # Don't define optionable_descriptor_class twice return if base_class.optionable_descriptor_class == block.call fail 'A class is being defined with two different descriptor classes, something is very wrong' end base_class.extend(ClassMethods) base_class.__send__(:include, self) base_class.define_singleton_method(:optionable_descriptor_class, block) else base_class.__send__(:include, ClassMethods) base_class.module_eval { define_method(:optionable_descriptor_class, block) } end end |
Instance Method Details
#get_option(name) ⇒ Object
38 39 40 |
# File 'lib/protobuf/optionable.rb', line 38 def get_option(name) self.class.get_option(name) end |
#get_option!(name) ⇒ Object
42 43 44 |
# File 'lib/protobuf/optionable.rb', line 42 def get_option!(name) self.class.get_option!(name) end |