Sha256: 6a72f9e9fd06750f34933cb4e99a51980a8d041dc685e89a847a5561a4b1022d

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

module Nele
  class GenericTranslator
    attr_reader :config, :uri

    def config
      @config ||= {}
    end

    def initialize
      validate_children()
    end
    
    def parse_uri(uri)
      URI.parse(uri.gsub(" ", "+"))
    end

    def name
      klass_name = self.class.to_s.split("::")[1]
      @name ||= klass_name.split('Translator')[0].downcase
    end

    def translate(str)
      build_request(str)
      res = connect()
      parse_response(res)
    end

    class << self
      def build_translator_class_name(name)
        klass_name = name.to_s.capitalize + "Translator"
        begin
          Nele.const_get(klass_name)
        rescue NameError
          raise(::Nele::TranslatorInvalidError, "invalid translator")
        end
      end

      def check_inheritance(klass)
        raise(::Nele::TranslatorMissingError,
          "translator should inherit from GenericTranslator"
          ) if klass.superclass != Nele::GenericTranslator
      end
    end

    private

    def validate_children
      unless self.class == Nele::GenericTranslator
        [:build_request, :connect, :parse_response, :config].each do |m|
          raise(Nele::TranslatorMissingMethodError, 
                "#{m.to_s} method is required") unless respond_to?(m)
        end
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nele-0.2.2 lib/nele/generic_translator.rb~