Sha256: 49118101fde5c92e3810a5e3ee96b19ea70d24fd345f6f336c11855ad4801e70

Contents?: true

Size: 870 Bytes

Versions: 1

Compression:

Stored size: 870 Bytes

Contents

module LostInTranslations
  module Ruby

    module ClassMethods

      def define_translation_methods
        translation_fields.each do |field|
          next if instance_methods.include?(Ruby.original_field_name(field))

          class_eval do
            alias_method Ruby.original_field_name(field), field.to_sym
          end
        end

        LostInTranslations.define_translation_methods self, *translation_fields
      end

    end

    def self.included(base_class)
      base_class.send(:include, Base)
      base_class.extend ClassMethods
    end

    def call_original_field(object, field)
      method_name = Ruby.original_field_name(field)

      return object.send(field) unless object.respond_to?(method_name)

      object.send(method_name)
    end

    def self.original_field_name(field)
      "original_field_#{field}".to_sym
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lost_in_translations-1.4.0 lib/lost_in_translations/ruby.rb