Module: Interfacable
- Defined in:
- lib/interfacable.rb,
lib/interfacable/version.rb,
lib/interfacable/error_formatter.rb,
lib/interfacable/implementation_check.rb
Overview
Ruby interfaces yeah
Defined Under Namespace
Classes: Error, ErrorFormatter, ImplementationCheck
Constant Summary collapse
- VERSION =
'0.1.1'
Instance Method Summary collapse
-
#implements(*interfaces) ⇒ Object
rubocop:enable Lint/InheritException.
Instance Method Details
#implements(*interfaces) ⇒ Object
rubocop:enable Lint/InheritException
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/interfacable.rb', line 13 def implements(*interfaces) (@interfaces ||= []).push(*interfaces) # rubocop:disable Naming/MemoizedInstanceVariableName @interfacable_trace ||= TracePoint.trace(:end) do |t| # simplecov does not see inside this block # :nocov: # rubocop:enable Naming/MemoizedInstanceVariableName if self == t.self unless (errors = ImplementationCheck.new(self).perform(@interfaces)).empty? = ErrorFormatter.new(self).format_errors(errors) raise(Error, ) end t.disable end # :nocov: end end |