Class: Aio::Text::Warning

Inherits:
Object
  • Object
show all
Defined in:
lib/aio/core/text/warning.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWarning

Returns a new instance of Warning.



7
8
9
10
11
12
13
# File 'lib/aio/core/text/warning.rb', line 7

def initialize
  @warning_info = {
    :serious  => {},
    :ordinary => {},
    :compare 	=> Aio::Text::Compare.new,
  }
end

Instance Attribute Details

#warning_infoObject (readonly)

Returns the value of attribute warning_info.



5
6
7
# File 'lib/aio/core/text/warning.rb', line 5

def warning_info
  @warning_info
end

Instance Method Details

#clearObject



15
16
17
# File 'lib/aio/core/text/warning.rb', line 15

def clear
  @warning_info.each_pair { |_, v| v.clear }
end

#compare_numberObject



138
139
140
# File 'lib/aio/core/text/warning.rb', line 138

def compare_number
  warning_info_compare.size
end

#filter?(level, sym) ⇒ Boolean

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

Returns:

  • (Boolean)


167
168
169
170
171
172
173
174
175
# 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?Boolean

判断是否有警告信息

Returns:

  • (Boolean)


110
111
112
113
114
115
# 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?Boolean

Returns:

  • (Boolean)


125
126
127
# File 'lib/aio/core/text/warning.rb', line 125

def has_warning_compare?
  warning_info_compare.empty? ? false : true
end

#has_warning_ordinary?Boolean

Returns:

  • (Boolean)


121
122
123
# File 'lib/aio/core/text/warning.rb', line 121

def has_warning_ordinary?
  warning_info_ordinary.empty? ? false : true
end

#has_warning_serious?Boolean

Returns:

  • (Boolean)


117
118
119
# File 'lib/aio/core/text/warning.rb', line 117

def has_warning_serious?
  warning_info_serious.empty? ? false : true
end

#include_warning?(warn) ⇒ Boolean

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

Returns:

  • (Boolean)


148
149
150
151
152
153
154
# 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) ⇒ Boolean

Returns:

  • (Boolean)


161
162
163
164
# 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) ⇒ Boolean

Returns:

  • (Boolean)


156
157
158
159
# 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_numberObject



134
135
136
# File 'lib/aio/core/text/warning.rb', line 134

def ordinary_number
  warning_info_ordinary.size
end

#serious_numberObject

警告数量



130
131
132
# File 'lib/aio/core/text/warning.rb', line 130

def serious_number
  warning_info_serious.size
end

#total_numberObject



142
143
144
# 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) ⇒ Object

判断是否需要添加警告info = iface sym = :errors mod = CMD模块self force 是否直接添加到warning_info中 如果是否,这相当于update



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 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) ⇒ Object



93
94
95
# File 'lib/aio/core/text/warning.rb', line 93

def warning_compare(info)
  @warning_info[:compare] << info
end

#warning_info_compareObject



105
106
107
# File 'lib/aio/core/text/warning.rb', line 105

def warning_info_compare
  @warning_info[:compare]
end

#warning_info_ordinaryObject



101
102
103
# File 'lib/aio/core/text/warning.rb', line 101

def warning_info_ordinary
  @warning_info[:ordinary]
end

#warning_info_seriousObject



97
98
99
# File 'lib/aio/core/text/warning.rb', line 97

def warning_info_serious
  @warning_info[:serious]
end

#warning_ordinary(info, sym, mod, force = nil) ⇒ Object



89
90
91
# 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) ⇒ Object



85
86
87
# File 'lib/aio/core/text/warning.rb', line 85

def warning_serious(info, sym, mod, force=nil)
  warning(info, sym, :serious, mod, force)
end