Sha256: 4794eb8272eea369f681e6595f97f667f793d30bd4ae5e1a75da8b2d57e99161

Contents?: true

Size: 1.68 KB

Versions: 10

Compression:

Stored size: 1.68 KB

Contents

require 'active_support'
require 'active_support/concern'

module Fortitude
  class Widget
    module Localization
      extend ActiveSupport::Concern

      module ClassMethods
        # RUBY CALLBACK
        def method_added(method_name)
          super(method_name)
          check_localized_methods!
        end

        # RUBY CALLBACK
        def method_removed(method_name)
          super(method_name)
          check_localized_methods!
        end

        # RUBY CALL
        def include(*args)
          super(*args)
          check_localized_methods!
        end

        LOCALIZED_CONTENT_PREFIX = "localized_content_"

        # INTERNAL USE ONLY
        def check_localized_methods!(original_class = self)
          currently_has = instance_methods(true).detect { |i| i =~ /^#{LOCALIZED_CONTENT_PREFIX}/i }
          if currently_has != @last_localized_methods_check_has
            @last_localized_methods_check_has = currently_has
            rebuild_run_content!(:localized_methods_presence_changed, original_class)
          end
          direct_subclasses.each { |s| s.check_localized_methods!(original_class) }
        end

        # INTERNAL USE ONLY
        def has_localized_content_methods?
          !! (instance_methods(true).detect { |i| i =~ /^#{LOCALIZED_CONTENT_PREFIX}/i })
        end
        private :has_localized_content_methods?
      end

      # PUBLIC API
      def t(key, *args)
        base = self.class.translation_base
        if base && key.to_s =~ /^\./
          super("#{base}#{key}", *args)
        else
          super(key, *args)
        end
      end

      # PUBLIC API
      def ttext(key, *args)
        tag_text t(".#{key}", *args)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
fortitude-0.0.7-java lib/fortitude/widget/localization.rb
fortitude-0.0.7 lib/fortitude/widget/localization.rb
fortitude-0.0.6-java lib/fortitude/widget/localization.rb
fortitude-0.0.6 lib/fortitude/widget/localization.rb
fortitude-0.0.5-java lib/fortitude/widget/localization.rb
fortitude-0.0.5 lib/fortitude/widget/localization.rb
fortitude-0.0.4-java lib/fortitude/widget/localization.rb
fortitude-0.0.4 lib/fortitude/widget/localization.rb
fortitude-0.0.3 lib/fortitude/widget/localization.rb
fortitude-0.0.2 lib/fortitude/widget/localization.rb