summaryrefslogtreecommitdiff
path: root/ruby_1_8_5/lib/webrick/httpversion.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_5/lib/webrick/httpversion.rb')
-rw-r--r--ruby_1_8_5/lib/webrick/httpversion.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/ruby_1_8_5/lib/webrick/httpversion.rb b/ruby_1_8_5/lib/webrick/httpversion.rb
new file mode 100644
index 0000000000..86907a26bd
--- /dev/null
+++ b/ruby_1_8_5/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