Module: ImportCode
- Defined in:
- lib/import_code.rb
Constant Summary collapse
- DEFAULT_UNCLUDE =
不是按键编码的KEY
["FileFormat","Remotecontroldescripe","Device","Brand","Model","Button'scounts"]
- DEFAULT_NOIMPORT =
不进行导入的对应KEY
["FileFormat","Remotecontroldescripe","Button'scounts"]
- METHOD_NAME =
"method_name"- DEFAULT_CODENAME =
用于将按键编码中的KEY的中文转为英文表示
{"机顶盒电源"=>"power","静音"=>"voice_quiet","菜单"=>"menu", "上"=>"up","下"=>"down","左"=>"left","右"=>"right", "音量+"=>'voice_up',"音量-"=>"voice_down", "频道+"=>"channel_up","频道-"=>"channel_down","上一页"=>"previous_page", "下一页"=>"next_page","返回"=>"return","快进"=>"fast_forward", "快退"=>"rew","播放/暂停"=>"play","停止播放"=>"stop","回看"=>"look_back", "删除"=>"delete","TV/AV"=>"tv_av","-/--"=>"switch","确认"=>"sure","确定"=>"sure", "电源"=>"POWER","退出"=>"BACK","翻页+"=>"PREVIOUS_PAGE","翻页-"=>"NEXT_PAGE","信号源"=>"tv_av", "切换"=>"SWITCH"}
- DEFAULT_VALUE =
需要将属性值进行转换的
{ "电视"=>"tv","机顶盒"=>"stb","itv"=>"stb","遥控器"=>"tv","ITV"=>"stb"}
- BRAND =
"Brand"- MODEL =
"model"
Instance Attribute Summary collapse
-
#file_path_array ⇒ Object
To change this template use File | Settings | File Templates.
-
#protocol_hash ⇒ Object
Returns the value of attribute protocol_hash.
-
#remote_code_array ⇒ Object
Returns the value of attribute remote_code_array.
-
#statistics ⇒ Object
Returns the value of attribute statistics.
Class Method Summary collapse
-
.disposeProtocolCode(codes, brand) ⇒ Object
对按键的编码进行了处理(按协议码进行的处理).
-
.get_error_msg(error, options = {}) ⇒ Object
获取错误信息用于抛出错误.
-
.getFileNames(dir_path) ⇒ Object
遍历文件夹获取全部的文件名.
-
.getHashRemoteCode(file_path) ⇒ Object
从文件中读入编码并转换为hash的格式来处理.
-
.getProtocolList(file_path) ⇒ Object
获取协议码对应协议(忽视品牌直接按协议码进行的处理).
- .getRemoteCodeArray(dir_path) ⇒ Object
-
.importRemoteCode(file_msg) ⇒ Object
导入遥控编码.
-
.isBrand?(key) ⇒ Boolean
判断是不是品牌对应的KEY.
-
.isProcolCode?(key) ⇒ Boolean
判断是否是按键编码对应的KEY.
- .statisticsProtocol(protocol_name) ⇒ Object
Instance Method Summary collapse
Instance Attribute Details
#file_path_array ⇒ Object
To change this template use File | Settings | File Templates.
5 6 7 |
# File 'lib/import_code.rb', line 5 def file_path_array @file_path_array end |
#protocol_hash ⇒ Object
Returns the value of attribute protocol_hash.
7 8 9 |
# File 'lib/import_code.rb', line 7 def protocol_hash @protocol_hash end |
#remote_code_array ⇒ Object
Returns the value of attribute remote_code_array.
6 7 8 |
# File 'lib/import_code.rb', line 6 def remote_code_array @remote_code_array end |
#statistics ⇒ Object
Returns the value of attribute statistics.
8 9 10 |
# File 'lib/import_code.rb', line 8 def statistics @statistics end |
Class Method Details
.disposeProtocolCode(codes, brand) ⇒ Object
对按键的编码进行了处理(按协议码进行的处理)
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/import_code.rb', line 203 def self.disposeProtocolCode(codes,brand) protocol = "" begin codelist = codes.split(" ") protocol_name = codelist[0] statisticsProtocol(@protocol_hash[protocol_name]) protocol = @protocol_hash[protocol_name] if @protocol_hash[protocol_name] code = "" 1.upto(codelist.size-1).each do |index| code =code + codelist[index] code =code + ":" unless index == codelist.size-1 end rescue => err raise ArgumentError, get_error_msg(err,{METHOD_NAME => "disposeProtocolCode"}) end {protocol_name:protocol,code:code} end |
.get_error_msg(error, options = {}) ⇒ Object
获取错误信息用于抛出错误
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/import_code.rb', line 45 def self.get_error_msg(error,={}) ret = "" ret = ret + "ClassName: import_remotecontrol gem " if ["method_name"] ret = ret + "MethodName: #{options["method_name"]} " end if error ret = ret + "Error Msg: #{error.to_s}" end ret end |
.getFileNames(dir_path) ⇒ Object
遍历文件夹获取全部的文件名
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/import_code.rb', line 58 def self.getFileNames(dir_path) @file_path_array = [] begin Find.find(dir_path).each do |path| if FileTest.directory?(path) Dir.foreach(path) do |file_path| if(file_path != "."&&file_path!= "..") if FileTest.directory?("#{path}/#{file_path}") self.getFileNames("#{path}/#{file_path}") else if(file_path.eql?("protocol")) getProtocolList("#{path}/#{file_path}") else @file_path_array << {"file_path"=>"#{path}/#{file_path}","file_name"=>"#{file_path}"} end end end end end end rescue => err raise ArgumentError, get_error_msg(err,{METHOD_NAME => "getFileNames"}) end p "File_path: #{@file_path_array}" @file_path_array end |
.getHashRemoteCode(file_path) ⇒ Object
从文件中读入编码并转换为hash的格式来处理
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/import_code.rb', line 125 def self.getHashRemoteCode(file_path) begin ret = {} brand = "" remote_code_line = File.read(file_path) remote_code_line.split("\r\n").each do |code| i = code.split("=") if i.count>=2 i[0] = "" unless i[0] key = i[0].gsub(" ","") if isBrand?(key) brand = i[1] end if DEFAULT_VALUE.has_key?(i[1]) i[1] = DEFAULT_VALUE[i[1]] end if i if i[0] if(i[0].split(",").count > 1) key = i[0].split(",")[1] if DEFAULT_CODENAME.has_key?(key) key = DEFAULT_CODENAME[key] end unless isProcolCode?(key) ret.merge!({key => i[1]}) unless DEFAULT_NOIMPORT.include?(key) else #codehash = disposeProtocolCode(i[1],brand) ret.merge!({key=>i[1]}) unless DEFAULT_NOIMPORT.include?(key) end else ret.merge!({key=>i[1]}) unless DEFAULT_NOIMPORT.include?(key) end end end _key ="" _value = -1 @statistics.each do |key,value| if(_value < value) _key = key _value = value end end ret.merge!({"statistics"=>_key}) end end rescue => err raise ArgumentError, get_error_msg(err,{METHOD_NAME => "getHashRemoteCode"}) end ret end |
.getProtocolList(file_path) ⇒ Object
获取协议码对应协议(忽视品牌直接按协议码进行的处理)
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/import_code.rb', line 178 def self.getProtocolList(file_path) @protocol_hash = {} begin protocol_lines = File.read(file_path) protocol_lines.split("\n").each do |protocol_line| protocol = protocol_line.split(":") if protocol.count ==2 protocol<<" " end unless @protocol_hash.has_key?(protocol[1]) @protocol_hash.merge!({protocol[1]=>protocol[2]}) if protocol[2]!=nil&&protocol[2]!="" else unless @protocol_hash[protocol[1]]==nil||@protocol_hash[protocol[1]]=="" @protocol_hash[protocol[1]]=protocol[2] if protocol[2]!=""&&protocol[2]!=nil end end end rescue => err raise ArgumentError, get_error_msg(err,{METHOD_NAME => "getProtocolList"}) end p @protocol_hash @protocol_hash end |
.getRemoteCodeArray(dir_path) ⇒ Object
258 259 260 261 262 263 264 265 266 267 268 269 270 |
# File 'lib/import_code.rb', line 258 def self.getRemoteCodeArray(dir_path) @remote_code_array = [] @statistics = {} if FileTest.directory?(dir_path) filenames = getFileNames(dir_path) filenames.each do |file_msg| p "File_Path : #{file_msg["file_path"]}" @statistics = {} @remote_code_array<<importRemoteCode(file_msg) end end @remote_code_array end |
.importRemoteCode(file_msg) ⇒ Object
导入遥控编码
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
# File 'lib/import_code.rb', line 236 def self.importRemoteCode(file_msg) remote_code_hash = {} begin if file_msg file_path = nil file_path = file_msg["file_path"] file_name = nil file_name = file_msg["file_name"] if file_path remote_code_hash.merge!(getHashRemoteCode(file_path)) else end end rescue => err raise ArgumentError, get_error_msg(err,{METHOD_NAME => "importRemoteCode"}) end remote_code_hash end |
.isBrand?(key) ⇒ Boolean
判断是不是品牌对应的KEY
120 121 122 |
# File 'lib/import_code.rb', line 120 def self.isBrand?(key) key.eql?("Brand") end |
.isProcolCode?(key) ⇒ Boolean
判断是否是按键编码对应的KEY
115 116 117 |
# File 'lib/import_code.rb', line 115 def self.isProcolCode?(key) !DEFAULT_UNCLUDE.include?(key) end |
.statisticsProtocol(protocol_name) ⇒ Object
222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'lib/import_code.rb', line 222 def self.statisticsProtocol(protocol_name) begin unless @statistics.has_key?(protocol_name) @statistics.merge!({protocol_name=>1}) else @statistics[protocol_name]=@statistics[protocol_name]+1 end rescue => err raise ArgumentError, get_error_msg(err,{METHOD_NAME => "statisticsProtocol"}) end @statistics end |
Instance Method Details
#initialize ⇒ Object
10 11 12 13 14 15 |
# File 'lib/import_code.rb', line 10 def initialize self.file_path_array=[] self.remote_code_array=[] self.protocol_hash={} self.statistics = {} end |