Sha256: 205c5e3b9a727e07dd998060f9c56d077bbf508466ecdc0cddeaa52d23bfd0bc

Contents?: true

Size: 1.11 KB

Versions: 8

Compression:

Stored size: 1.11 KB

Contents

module Pione
  module URIScheme
    # BasicScheme is a URI scheme for PIONE.
    class BasicScheme < ::URI::Generic
      # Returns true always because classes inheriting BasicScheme are supported
      # by PIONE system.
      # @api private
      def pione?
        true
      end

      # Returns true if the scheme acts as storage.
      # @return [Boolean]
      #   true if the scheme acts as storage
      def storage?
        self.class.instance_variable_get(:@storage)
      end
    end

    # Returns a new scheme. Use this method for inheriting BasicScheme if you
    # create new scheme.
    # @return [Class]
    def BasicScheme(name, opts={})
      klass = Class.new(BasicScheme)

      def klass.inherited(scheme)
        name = self.instance_variable_get(:@scheme_name)
        URI.install_scheme(name.upcase, scheme)
        scheme.instance_variable_set(:@storage, @storage)
      end

      klass.instance_variable_set(:@scheme_name, name.upcase)
      storage_flag = opts[:storage] || false
      klass.instance_variable_set(:@storage, storage_flag)

      return klass
    end
    module_function :BasicScheme
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/uri-scheme/basic-scheme.rb
pione-0.2.1 lib/pione/uri-scheme/basic-scheme.rb
pione-0.2.0 lib/pione/uri-scheme/basic-scheme.rb
pione-0.1.4 lib/pione/uri-scheme/basic-scheme.rb
pione-0.1.3 lib/pione/uri-scheme/basic-scheme.rb
pione-0.1.2 lib/pione/uri-scheme/basic-scheme.rb
pione-0.1.1 lib/pione/uri-scheme/basic-scheme.rb
pione-0.1.0 lib/pione/uri-scheme/basic-scheme.rb