Module: Protocol
- Included in:
- EmbeddingModelProtocol, SimilarityEngineProtocol, VocabularyProtocol
- Defined in:
- lib/kotoshu/embeddings/protocol.rb
Overview
Protocol - Ruby interface/contract system
Provides a simple way to define interfaces with required and optional methods.
Instance Method Summary collapse
-
#assert_implemented_by!(klass) ⇒ Object
Assert compliance.
-
#compliance_errors(klass) ⇒ Object
Check compliance.
-
#optional_methods(*names) ⇒ Object
Define optional methods.
-
#required_methods(*names) ⇒ Object
Define required methods.
Instance Method Details
#assert_implemented_by!(klass) ⇒ Object
Assert compliance
34 35 36 37 |
# File 'lib/kotoshu/embeddings/protocol.rb', line 34 def assert_implemented_by!(klass) errors = compliance_errors(klass) raise "Missing methods: #{errors.join(', ')}" unless errors.empty? end |
#compliance_errors(klass) ⇒ Object
Check compliance
29 30 31 |
# File 'lib/kotoshu/embeddings/protocol.rb', line 29 def compliance_errors(klass) required_methods.select { |m| !klass.respond_to?(m) } end |
#optional_methods(*names) ⇒ Object
Define optional methods
14 15 16 |
# File 'lib/kotoshu/embeddings/protocol.rb', line 14 def optional_methods @optional_methods ||= Set.new end |
#required_methods(*names) ⇒ Object
Define required methods
9 10 11 |
# File 'lib/kotoshu/embeddings/protocol.rb', line 9 def required_methods @required_methods ||= Set.new end |