Sha256: ec5814d957c67c917f51dfaa60a79c6c8a2479ba304fc40054391e4268ffe4b6

Contents?: true

Size: 1.56 KB

Versions: 3

Compression:

Stored size: 1.56 KB

Contents

# Author::    Nicolas Pouillard  <ertai@lrde.epita.fr>.
# Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
# License::   LGPL
# $Id: /w/fey/uttk/trunk/lib/uttk/strategies/Import.rb 22102 2006-02-21T23:03:39.538964Z pouillar  $


module Uttk

  module Strategies

    # I can import a strategy from on another file. Just tell me which file
    # using my _import_ attribute and which loader to use using my _loader_
    # attribute.
    class Import < Proxy
      include Concrete

      def prologue
        super
        unless @import.exist?
          raise ArgumentError, "the import file must exits (#@import)"
        end
        unless @loader.nil?
          @save_loader = @symtbl[:loader]
          @symtbl[:loader] = @loader
        end
        @old_pwd = @symtbl[:pwd]
        create(@import) do |t|
          t.symtbl[:loader] = @symtbl[:loader]
        end
      end
      protected :prologue

      def epilogue
        @symtbl[:loader] = @save_loader unless @loader.nil?
        @symtbl[:pwd] = @old_pwd
        super
      end
      protected :epilogue

      def import= ( aPath )
        @import = aPath
        @import = Pathname.new(aPath) unless aPath.is_a? Pathname
      end

      def loader= ( aLoader )
        if aLoader.is_a? Loaders::Loader
          @loader = aLoader
        else
          @loader = Loaders.const_get(aLoader).new
        end
      end

      attribute :import, 'the file to import', :mandatory
      attribute :loader, 'loader to use for the imported file'

    end # class Import

  end # module Strategies

end # module Uttk

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
uttk-0.3.6.1 lib/uttk/strategies/Import.rb
uttk-0.3.1.2 lib/uttk/strategies/Import.rb
uttk-0.3.5.0 lib/uttk/strategies/Import.rb