class Aio::Text::Warning

Attributes

warning_info[R]

Public Class Methods

new() click to toggle source
# File lib/aio/core/text/warning.rb, line 7
def initialize
  @warning_info = {
    :serious  => {},
    :ordinary => {},
    :compare        => Aio::Text::Compare.new,
  }
end

Public Instance Methods

clear() click to toggle source
# File lib/aio/core/text/warning.rb, line 15
def clear
  @warning_info.each_pair { |_, v| v.clear }
end
compare_number() click to toggle source
# File lib/aio/core/text/warning.rb, line 138
def compare_number
  warning_info_compare.size
end
filter?(level, sym) click to toggle source

与Aio::Config::Warning联动,如果里面有sym 的信息,则过滤

# File lib/aio/core/text/warning.rb, line 167
def filter?(level, sym)
  case level
  when :serious
    warn = Aio::Config::Warning::Serious
  when :ordinary
    warn = Aio::Config::Warning::Ordinary
  end
  warn.include?(sym) ? false : true
end
has_warning?() click to toggle source

判断是否有警告信息

# File lib/aio/core/text/warning.rb, line 110
def has_warning?
  return true unless warning_info_serious.empty?
  return true unless warning_info_ordinary.empty?
  return true unless warning_info_compare.empty?
  return false
end
has_warning_compare?() click to toggle source
# File lib/aio/core/text/warning.rb, line 125
def has_warning_compare?
  warning_info_compare.empty? ? false : true
end
has_warning_ordinary?() click to toggle source
# File lib/aio/core/text/warning.rb, line 121
def has_warning_ordinary?
  warning_info_ordinary.empty? ? false : true
end
has_warning_serious?() click to toggle source
# File lib/aio/core/text/warning.rb, line 117
def has_warning_serious?
  warning_info_serious.empty? ? false : true
end
include_warning?(warn) click to toggle source

判断是否有指定的警告信息 不对compare 进行判断,因为compare 的格式还没有统一

# File lib/aio/core/text/warning.rb, line 148
def include_warning?(warn)
  warn = warn[0].to_sym if warn.class == ::Array
  return true if include_warning_serious?(warn)
  return true if include_warning_ordinary?(warn)
  #return true if include_warning_compare?(warn)
  return false
end
include_warning_ordinary?(warn) click to toggle source
# File lib/aio/core/text/warning.rb, line 161
def include_warning_ordinary?(warn)
  warn = warn[0].to_sym if warn.class == ::Array
  warning_info_ordinary.has_key?(warn) ? true : false
end
include_warning_serious?(warn) click to toggle source
# File lib/aio/core/text/warning.rb, line 156
def include_warning_serious?(warn)
  warn = warn[0].to_sym if warn.class == ::Array
  warning_info_serious.has_key?(warn) ? true : false
end
ordinary_number() click to toggle source
# File lib/aio/core/text/warning.rb, line 134
def ordinary_number
  warning_info_ordinary.size
end
serious_number() click to toggle source

警告数量

# File lib/aio/core/text/warning.rb, line 130
def serious_number
  warning_info_serious.size
end
total_number() click to toggle source
# File lib/aio/core/text/warning.rb, line 142
def total_number
  serious_number + ordinary_number + compare_number
end
warning(info, sym, level, mod, force=nil) click to toggle source

判断是否需要添加警告 info = iface sym = :errors mod = CMD模块self force 是否直接添加到warning_info中

如果是否,这相当于update
# File lib/aio/core/text/warning.rb, line 25
def warning(info, sym, level, mod, force=nil)
  benchmark = mod.benchmark[sym]
  var = info[sym]

  # 支持有多个条件的基准值, 只要有一个符合标准就通过
  if force.nil?
    cond_num = benchmark.size - 1
    i = 1
    res = []
    cond_num.times do 
      case benchmark[i]
      when String
        var = var.to_s
      when Integer
        var = var.to_i
      when Float
        var = var.to_f
      end 
      # 还有种情况是正则的方式

      var = var 
      ben = benchmark[i]

      res << case benchmark[0]
      when "=="
        var == ben 
      when "=~"
        var.match(Regexp.new(ben)) ? true : false
      when "!="
        var != ben 
      when ">" 
        var > ben 
      when ">="
        var >= ben 
      when "<" 
        var < ben 
      when "<="
        var <= ben 
      end

      i += 1
    end
    # 当 force 为假的时候,说明不需要加入到warning中,所以 res 为真
  elsif force == false
    res = [true]

    # 当 force 为真的时候,说明需要加入到warning中,所以 res 为假
  elsif force == true
    res = [false]
  end

  unless res.include?(true)
    if filter?(level, sym)
      @warning_info[level][sym] ||= []
      @warning_info[level][sym] << info     
      #pp "#{mod.ext_info[:device_name]} : #{level} : #{sym}"
    end
  end
end
warning_compare(info) click to toggle source
# File lib/aio/core/text/warning.rb, line 93
def warning_compare(info)
  @warning_info[:compare] << info
end
warning_info_compare() click to toggle source
# File lib/aio/core/text/warning.rb, line 105
def warning_info_compare
  @warning_info[:compare]
end
warning_info_ordinary() click to toggle source
# File lib/aio/core/text/warning.rb, line 101
def warning_info_ordinary
  @warning_info[:ordinary]
end
warning_info_serious() click to toggle source
# File lib/aio/core/text/warning.rb, line 97
def warning_info_serious
  @warning_info[:serious]
end
warning_ordinary(info, sym, mod, force=nil) click to toggle source
# File lib/aio/core/text/warning.rb, line 89
def warning_ordinary(info, sym, mod, force=nil)
  warning(info, sym, :ordinary, mod, force)
end
warning_serious(info, sym, mod, force=nil) click to toggle source
# File lib/aio/core/text/warning.rb, line 85
def warning_serious(info, sym, mod, force=nil)
  warning(info, sym, :serious, mod, force)
end