Sha256: abc26beff79d4839b7a8abbcb37cfe9b9f6921fd87fa515c43bba60d638005c7

Contents?: true

Size: 1.88 KB

Versions: 4

Compression:

Stored size: 1.88 KB

Contents

# Copyright: Copyright (c) 2004  Nicolas Despres. All rights reserved.
# Author: Nicolas Despres  <polrop@lrde.epita.fr>.
# License: Gnu General Public License.

# $LastChangedBy: polrop $
# $Id: druby.rb 140 2005-01-29 15:05:09Z polrop $


require 'uri'


module URI

  class DRuby < Generic

    SCHEME = 'druby'
    DEFAULT_HOST = 'localhost'
    DEFAULT_PORT = 0
    DEFAULT_QUERY = ''
    COMPONENT = [ :scheme, :host, :port ].freeze

    def self.build(args)
      if args.is_a?(Array)
        args << DEFAULT_HOST if args.size < 1
        args << DEFAULT_PORT if args.size < 2
      elsif args.is_a?(Hash)
        args[:host] = DEFAULT_HOST if args[:host].nil?
        args[:port] = DEFAULT_PORT if args[:port].nil?
      end
      return super(Util::make_components_hash(self, args))
    end

    #FIXME: find a way to always print the port even if it is the default one.

  end # class DRuby

  @@schemes[DRuby::SCHEME.upcase] = DRuby

end # module URI


if defined? TEST_MODE or __FILE__ == $0


require 'test/unit/ui/yaml/testrunner'


module URI

  class DRubyTest < ::Test::Unit::TestCase

    def test_classic
      uri = URI.parse('druby://www.foo.com:42000')
      assert(uri.is_a?(DRuby))
      assert_equal('druby', uri.scheme)
      assert_nil(uri.user)
      assert_nil(uri.password)
      assert_nil(uri.userinfo)
      assert_equal('www.foo.com', uri.host)
      assert_equal(42000, uri.port)
      assert_equal('druby://www.foo.com:42000', uri.to_s)
    end

    def test_build
      assert_equal('druby://localhost', DRuby.build([]).to_s)
      assert_equal('druby://www.foo.com:52000',
                   DRuby.build(['www.foo.com', 52000 ]).to_s)
    end

    def test_query
      uri = DRuby.build(['www.foo.com', 52000 ])
      uri.query = 'toto=tata&foo=bar'
      assert_equal('druby://www.foo.com:52000?toto=tata&foo=bar', uri.to_s)
    end

  end # class DRubyTest

end # module URI


end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
ttk-0.1.576 ruby_ex/uri/druby.rb
ttk-0.1.579 ruby_ex/uri/druby.rb
ttk-0.1.580 ruby_ex/uri/druby.rb
vcs-0.2.148 ruby_ex/uri/druby.rb