mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 13:04:13 +02:00
* lib/net/imap.rb: Fix undefined variable usage & refactor/DRY
code. Patch by @aledovsky. [Fixes GH-770] * test/net/test_imap.rb: related test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f9e3213f01
commit
a0b80a4410
3 changed files with 94 additions and 8 deletions
|
@ -1256,9 +1256,7 @@ module Net
|
|||
when nil
|
||||
when String
|
||||
when Integer
|
||||
if data < 0 || data >= 4294967296
|
||||
raise DataFormatError, num.to_s
|
||||
end
|
||||
NumValidator.ensure_number(data)
|
||||
when Array
|
||||
data.each do |i|
|
||||
validate_data(i)
|
||||
|
@ -1572,7 +1570,7 @@ module Net
|
|||
case data
|
||||
when "*"
|
||||
when Integer
|
||||
ensure_nz_number(data)
|
||||
NumValidator.ensure_nz_number(data)
|
||||
when Range
|
||||
when Array
|
||||
data.each do |i|
|
||||
|
@ -1586,11 +1584,42 @@ module Net
|
|||
raise DataFormatError, data.inspect
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def ensure_nz_number(num)
|
||||
if num < -1 || num == 0 || num >= 4294967296
|
||||
msg = "nz_number must be non-zero unsigned 32-bit integer: " +
|
||||
num.inspect
|
||||
# Common validators of number and nz_number types
|
||||
module NumValidator # :nodoc
|
||||
class << self
|
||||
# Check is passed argument valid 'number' in RFC 3501 terminology
|
||||
def valid_number?(num)
|
||||
# [RFC 3501]
|
||||
# number = 1*DIGIT
|
||||
# ; Unsigned 32-bit integer
|
||||
# ; (0 <= n < 4,294,967,296)
|
||||
num >= 0 && num < 4294967296
|
||||
end
|
||||
|
||||
# Check is passed argument valid 'nz_number' in RFC 3501 terminology
|
||||
def valid_nz_number?(num)
|
||||
# [RFC 3501]
|
||||
# nz-number = digit-nz *DIGIT
|
||||
# ; Non-zero unsigned 32-bit integer
|
||||
# ; (0 < n < 4,294,967,296)
|
||||
num != 0 && valid_number?(num)
|
||||
end
|
||||
|
||||
# Ensure argument is 'number' or raise DataFormatError
|
||||
def ensure_number(num)
|
||||
return if valid_number?(num)
|
||||
|
||||
msg = "number must be unsigned 32-bit integer: #{num}"
|
||||
raise DataFormatError, msg
|
||||
end
|
||||
|
||||
# Ensure argument is 'nz_number' or raise DataFormatError
|
||||
def ensure_nz_number(num)
|
||||
return if valid_nz_number?(num)
|
||||
|
||||
msg = "nz_number must be non-zero unsigned 32-bit integer: #{num}"
|
||||
raise DataFormatError, msg
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue