Sha256: afb5d64608f6cfd8e16c29ed13ff1582665ec942884d5f682dba3552c11558e8

Contents?: true

Size: 944 Bytes

Versions: 3

Compression:

Stored size: 944 Bytes

Contents

module Controll
  module Notify
    class Message
      class Translator
        attr_reader :caller, :key, :options

        def initialize caller, message
          @caller   = caller
          @key      = message.text
          @options  = message.options.symbolize_keys
        end

        def translate
          I18n.t i18n_key, options
        end

        protected

        def i18n_key
          [namespace_key, key].join('.')
        end

        def namespace_key
          [namespace, type].join('.').sub /^\\./, ''
        end

        def parts
          @parts ||= caller.class.name.split('::')
        end

        def namespace
          (parts.first == 'Notifiers' ? parts[1..-2] : parts[0..-2]).join('.').underscore          
        end
        
        def type
          parts.last.sub(/#{clazz_postfix}$/, '').underscore
        end

        def clazz_postfix
          'Handler'
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
controll-0.3.2 lib/controll/notify/message/translator.rb
controll-0.3.1 lib/controll/notify/message/translator.rb
controll-0.3.0 lib/controll/notify/message/translator.rb