class Aio::Module::InputStyle::Console
Public Class Methods
new()
click to toggle source
Calls superclass method
Aio::Module::InputStyle::new
# File lib/modules/input/style/console.rb, line 165 def initialize super({ :author => "Elin", :description => "这个模块用于对命令行格式的输入处理", :platform => "all", }) @machine = Machine.new end
Public Instance Methods
merge_regs(arr_regs)
click to toggle source
# File lib/modules/input/style/console.rb, line 219 def merge_regs(arr_regs) regs = Aio::Base::Toolkit::Regexp.merge(arr_regs).to_s regs.gsub!('(^', '(') ::Regexp.new(regs) end
parse() { |info, info, info| ... }
click to toggle source
# File lib/modules/input/style/console.rb, line 174 def parse dir = self.input_file dir_pn = Pathname.new(dir) # 加载所有的cmd正则表达式 @machine.regs = merge_regs(ext_info[:cmds_reg]) # 如果是单个文件的话,直接进入文件解析模式 if dir_pn.file? parse_file(dir_pn) else # 如果是文件夹的话,那么就对每个文件进行解析 Find.find(dir) do |file| fn = Pathname.new(file) parse_file(file) if fn.file? end end @machine.cmd_context.all_info.each do |info| yield info[0], info[1], info[2] end end
parse_file(file)
click to toggle source
# File lib/modules/input/style/console.rb, line 198 def parse_file(file) fo = File.open(file, "r+", :encoding => "utf-8") fo.each_line do |line| begin line = Aio::Base::Toolkit::String.safe(line) line = line.strip rescue => e print_error line + " : " + e.message end @machine.parse_line(line) end # 如果最后没有done结束,则手动结束 if @machine.state == ContextState @machine.cmd_context.done @machine.to_cmd_state end end