class MorseCode::Base

Attributes

namespace[R]
word[R]

Public Class Methods

inherited(subclass) click to toggle source
# File lib/morse_code/base.rb, line 7
def self.inherited(subclass)
  @@subclasses ||= []
  @@subclasses << subclass
end
new(word = '', namespace = '') click to toggle source
# File lib/morse_code/base.rb, line 14
def initialize(word = '', namespace = '')
  @word = word
  @namespace = namespace
end

Public Instance Methods

call() click to toggle source
# File lib/morse_code/base.rb, line 23
def call
  return supported_class.new(word).call if supported_class
  word
end
supported?() click to toggle source
# File lib/morse_code/base.rb, line 19
def supported?
  raise MorseCode::NotImplementedError, 'Subclass must override supported? method'
end
supported_class() click to toggle source
# File lib/morse_code/base.rb, line 28
def supported_class
  supported_classes.detect { |clazz| clazz.name.start_with?(namespace) }
end
supported_classes() click to toggle source
# File lib/morse_code/base.rb, line 32
def supported_classes
  supported_classes = Array(@@subclasses).select { |subclass| subclass.new(word).supported? }
  puts "[WARING] Not Classs can support this #{word}!" if supported_classes.empty?
  supported_classes
end