diff options
author | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-07-23 16:51:36 +0000 |
---|---|---|
committer | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-07-23 16:51:36 +0000 |
commit | 4d12fc26102759b94cb060d6c83566011a033b7b (patch) | |
tree | 0a0d7cc4e66db930a7f74fd1466338979dae91c2 /lib/webrick/httpversion.rb | |
parent | 9c6cb448b6faee085ffd4133718c651c2c9de85d (diff) | |
download | ruby-4d12fc26102759b94cb060d6c83566011a033b7b.tar.gz ruby-4d12fc26102759b94cb060d6c83566011a033b7b.tar.xz ruby-4d12fc26102759b94cb060d6c83566011a033b7b.zip |
* lib/webrick: imported.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/webrick/httpversion.rb')
-rw-r--r-- | lib/webrick/httpversion.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/webrick/httpversion.rb b/lib/webrick/httpversion.rb new file mode 100644 index 000000000..86907a26b --- /dev/null +++ b/lib/webrick/httpversion.rb @@ -0,0 +1,49 @@ +# +# HTTPVersion.rb -- presentation of HTTP version +# +# Author: IPR -- Internet Programming with Ruby -- writers +# Copyright (c) 2002 Internet Programming with Ruby writers. All rights +# reserved. +# +# $IPR: httpversion.rb,v 1.5 2002/09/21 12:23:37 gotoyuzo Exp $ + +module WEBrick + class HTTPVersion + include Comparable + + attr_accessor :major, :minor + + def self.convert(version) + version.is_a?(self) ? version : new(version) + end + + def initialize(version) + case version + when HTTPVersion + @major, @minor = version.major, version.minor + when String + if /^(\d+)\.(\d+)$/ =~ version + @major, @minor = $1.to_i, $2.to_i + end + end + if @major.nil? || @minor.nil? + raise ArgumentError, + format("cannot convert %s into %s", version.class, self.class) + end + end + + def <=>(other) + unless other.is_a?(self.class) + other = self.class.new(other) + end + if (ret = @major <=> other.major) == 0 + return @minor <=> other.minor + end + return ret + end + + def to_s + format("%d.%d", @major, @minor) + end + end +end |