Sha256: 69e116ed000f289507eaa4db9030c174e8e8bf00758c7f79355ec588d7d46974

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

require 'rubygems'
require 'imw/utils'
require 'imw/error'
require 'imw/uri'

module IMW

  autoload :Recordizer,      'imw/recordizer'
  autoload :Resource,        'imw/resource'
  autoload :Schemes,         'imw/schemes'
  autoload :Formats,         'imw/formats'
  autoload :Parsers,         'imw/parsers'

  def self.open obj, options={}, &block
    if obj.is_a?(IMW::Resource)
      resource = obj
    else
      options[:use_modules]  ||= (options[:as]      || [])
      options[:skip_modules] ||= (options[:without] || [])
      resource = IMW::Resource.new(obj, options)
    end
  end

  class Resource

    attr_reader :uri

    def initialize(uri, mode='r')
      raise FileModeError.new("'#{mode}' is not a valid access mode") unless valid_modes.include? mode
      @uri = Uri.new(uri)
    end

    def self.open(uri, mode='r', &blk)
      resource = Resource.new(uri, mode)
      if block_given?
        yield resource
      else
        return resource
      end
    end

    def self.exists? resource
      true
    end

    private
    def valid_modes
      %w[ r w a ]
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
imw-0.3.0 lib/imw.rb