Sha256: b827a3db8c9c1285205a8724b0784c6b776c14ceec3667c60d1263bd6d18dee2

Contents?: true

Size: 1.58 KB

Versions: 3

Compression:

Stored size: 1.58 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 53986 2007-01-14T15:03:21.549822Z ertai  $


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 if defined? @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.4.6.1 lib/uttk/strategies/Import.rb
uttk-0.4.5.0 lib/uttk/strategies/Import.rb
uttk-0.4.6.2 lib/uttk/strategies/Import.rb