Sha256: 6417900b5ebd008de6269d10c3314e433909326a0b36d1838039b11db249c1a8

Contents?: true

Size: 1.5 KB

Versions: 15

Compression:

Stored size: 1.5 KB

Contents

require 'lolita-translation/builder/active_record_builder'
require 'lolita-translation/builder/mongoid_builder'
require 'lolita-translation/utils'

module Lolita
  module Translation

    # Create ORM class for translations. For Post class it will create PostTranslation class, 
    # for News it will create NewsTranslation and so on
    class TranslationClassBuilder

      attr_reader :klass

      def initialize(base_class, configuration = nil) 
        @klass          = base_class
        @configuration  = configuration
        detect_builder_class
      end

      def builder_available?
        !!@builder_class
      end

      def builder
        @builder ||= @builder_class && @builder_class.new(klass, @configuration)
      end

      def build_class
        if builder
          builder.build
          builder.klass
        else
          raise Lolita::Translation::NoBuilderForClassError.new(klass)
        end
      end

      def override_attributes(attributes)
        if builder 
          builder.override_klass_attributes(attributes)
        else
          raise Lolita::Translation::NoBuilderForClassError.new(klass)
        end
      end

      private

      def detect_builder_class
        @builder_class ||= if Lolita::Translation::Utils.active_record_class?(klass)
          Lolita::Translation::Builder::ActiveRecordBuilder
        elsif Lolita::Translation::Utils.mongoid_class?(klass)
          Lolita::Translation::Builder::MongoidBuilder
        else
          nil
        end 
      end
    end

  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
lolita-translation-0.8.4 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.8.3 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.8.2 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.8.1 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.8.0 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.7.4 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.7.3 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.7.2 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.7.1 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.7.0 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.6.3 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.6.2 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.6.1 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.6.0 lib/lolita-translation/translation_class_builder.rb
lolita-translation-0.5.0 lib/lolita-translation/translation_class_builder.rb