Sha256: 93854f657da3548b0e5f7f1eab5c754ab6d67f0db94eff27fcc2eeef467a7d8d

Contents?: true

Size: 1.34 KB

Versions: 10

Compression:

Stored size: 1.34 KB

Contents

module Lolita
  module Configuration
    module Factory
      
      def temp_object?
        @create_temp_object||=false
        @create_temp_object
      end

      def add(dbi,*args,&block)
        @create_temp_object=true
        name =  nil
        if self == Lolita::Configuration::Tab
          if args && args.first
            name = args.first
          else
            raise ArgumentError, "Define tab with type."
          end
        else
          begin
            temp_object=self.const_get(:Base).new(dbi,*args,&block)
            name =temp_object.type
          rescue Exception => e
            raise e
          ensure
            @create_temp_object=false
          end
        end
        factory(name).new(dbi,*args,&block)
      end


      protected

      def factory(name)
        begin
          self.const_get(:"#{to_class(name)}")
        rescue NameError
          error_class=Lolita::ConfigurationClassNotFound
          raise error_class, "Can't find #{self}::#{to_class(name)}. Should be in /configuration/#{factory_name}/#{name}.rb"
        end
      end

      def to_class(name)
        name.to_s.downcase.gsub(/_id$/, "").gsub(/(^\w|_\w)/) do |m|
          m.gsub("_","").upcase
        end
      end

      def factory_name
        @factory_name||=self.to_s.split("::").last.downcase
        @factory_name
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
lolita-3.1.18 lib/lolita/configuration/factory.rb
lolita-3.1.17 lib/lolita/configuration/factory.rb
lolita-3.1.16 lib/lolita/configuration/factory.rb
lolita-3.1.15 lib/lolita/configuration/factory.rb
lolita-3.1.14 lib/lolita/configuration/factory.rb
lolita-3.1.13 lib/lolita/configuration/factory.rb
lolita-3.1.12 lib/lolita/configuration/factory.rb
lolita-3.1.11 lib/lolita/configuration/factory.rb
lolita-3.1.9 lib/lolita/configuration/factory.rb
lolita-3.1.8 lib/lolita/configuration/factory.rb