lib/nera_addsim/make_simulator.rb in nera-0.0.2 vs lib/nera_addsim/make_simulator.rb in nera-0.0.3

- old
+ new

@@ -5,10 +5,11 @@ class CUI_Simulator_Adder #-------------- create simulator script -------------------- def script_body(sim_info) params=[] sim_info[:params].each do | param | + next if param[0] == "seed" params << " [#{param[0]},#{param[1]},#{param[2]}]" end params_str = params.join(",\n\t\t") str = <<"BODY" class #{sim_info[:name]} < NERA::Simulator @@ -30,17 +31,20 @@ array = [] type = [Integer, Float, String] while true $stdout.puts $stdout.puts "+++Input parameter name+++" + $stdout.puts " If you need a seed of random number, please just input \"seed\"" name = Readline.readline(">").chomp.strip break if name =~ /^[a-z]/ or name =~ /^[A-Z]/ $stdout.puts "Input is not valid" $stdout.puts $stdout.puts "Input the simulator name again." end - array << ":#{name}" + return ["seed",nil,nil] if name == "seed" + #array << ":#{name}" + array << name.to_sym.inspect $stdout.puts num = Dialog.select_one(type, "++Select parameter type+++") array << type[num] default = 0 while true @@ -51,10 +55,12 @@ $stdout.puts "Input is empty" next end if type[num] == Integer or type[num] == Float if /[-+]?(?:[0-9]+(\.[0-9]*)?|(\.[0-9]+))([eE][-+]?[0-9]+)?/ =~ default + default = "#{default.to_i}" if type[num] == Integer + default = "#{default.to_f}" if type[num] == Float break end else default = "\"#{default}\"" break @@ -82,28 +88,35 @@ menu += ["delete"] num = Dialog.select_one(menu,"Select modifying parameter") case num when 0 + if param[0] == "seed" + return ["seed",nil,nil] + end if param[1] == Integer or param[1] == Float unless /[-+]?(?:[0-9]+(\.[0-9]*)?|(\.[0-9]+))([eE][-+]?[0-9]+)?/ =~ param[2] $stdout.puts "! Default value must be #{param[1]}" next end + param[2] = "#{param[2].to_i}" if param[1] == Integer + param[2] = "#{param[2].to_f}" if param[1] == Float end return param when 1 name = nil while true $stdout.puts $stdout.puts "+++Input parameter name+++" + $stdout.puts " If you need a seed of random number, please just input \"seed\"" name = Readline.readline(">").chomp.strip break if name =~ /^[a-z]/ or name =~ /^[A-Z]/ $stdout.puts "Input is not valid" $stdout.puts $stdout.puts "Input the simulator name again." end + return ["seed",nil,nil] if name == "seed" param[0] = ":#{name}" when 2 $stdout.puts num = Dialog.select_one(type, "+++Select new parameter type+++ \n #{param[1]} ->") param[1] = type[num] @@ -113,11 +126,12 @@ $stdout.puts "+++Input new default value+++" default = Readline.readline("#{param[2]} -> ").chomp.strip # p param[1] if param[1] == Integer or param[1] == Float if /[-+]?(?:[0-9]+(\.[0-9]*)?|(\.[0-9]+))([eE][-+]?[0-9]+)?/ =~ default - param[2] = default + param[2] = "#{default.to_i}" if param[1] == Integer + param[2] = "#{default.to_f}" if param[1] == Float break end else param[2] = "\"#{default}\"" break @@ -171,11 +185,11 @@ if File.exists?(db_folder+"Simulator_classes/"+name+".rb") or File.exists?(db_folder + name ) $stdout.puts "The simulator \"#{name}\" already exists. " return nil end - $stdout.print "Would you create a new simulator \"#{name}\" ?(y/n): " + $stdout.print "Will you create a new simulator \"#{name}\" ?(y/n): " if Readline.readline("").chomp.strip == "y" sim_info[:name]=name break end $stdout.puts @@ -192,21 +206,21 @@ Dir.chdir(home) do while true path_file = Readline.readline("> ~/").chomp.strip unless File.file?(home+path_file) $stdout.puts "File \"~/#{path_file}\" is not found." - $stdout.print "Would you abort this registration\" ?(y/n): " + $stdout.print "Will you abort this registration\" ?(y/n): " return nil if Readline.readline("").chomp.strip == "y" else if (File.stat(home+path_file).mode & 2**6 ) != 2**6 $stdout.puts "File ~/#{path_file} is not executable." - $stdout.print "Would you abort this registration\" ?(y/n): " + $stdout.print "Will you abort this registration\" ?(y/n): " return nil if Readline.readline("").chomp.strip == "y" end end - $stdout.print "Would you use \"~/#{path_file}\" ?(y/n): " + $stdout.print "Will you use \"~/#{path_file}\" ?(y/n): " if Readline.readline("").chomp.strip == "y" sim_info[:path]="~/"+path_file break end $stdout.puts @@ -227,29 +241,37 @@ while true $stdout.puts "------------------------------" $stdout.puts "Execute command :" params_str = "" params.each do | name, type, default | - params_str += " (#{name.sub(':','')})" + if name == "seed" + params_str += " (seed)" + else + params_str += " (#{name.sub(':','')})" + end + end - exec = "#{path}#{params_str} (seed)" + exec = "#{path}#{params_str}" $stdout.puts " $ #{exec}" $stdout.puts "------------------------------" menu =["add"] params.each do | name, type, default | - menu += ["#{name.sub(':','')} : #{type} (default #{default})"] + if name == "seed" + menu += ["seed"] + else + menu += ["#{name.sub(':','')} : #{type} (default #{default})"] + end end menu += ["exit"] num = Dialog.select_one(menu) - # p menu[num] case menu[num] when "add" params << add_param() next when "exit" if params.length==0 - $stdout.print "Any parameters don't exist. Would you continue this registration?(y/n): " + $stdout.print "Any parameters don't exist. Will you continue this registration?(y/n): " next if Readline.readline("").chomp.strip != "y" end break else case tmp = mod_param(params[num-1]) @@ -278,12 +300,10 @@ $stdout.puts "+ Parameters : " if sim_info[:params].length == 0 $stdout.puts " No parameter" else index = 1 - cmd = [] sim_info[:params].each do |name, type, default| - cmd << name.sub(':','') $stdout.puts " #{index}-> #{name.sub(':','')} : #{type} (default #{default}) " index += 1 end end $stdout.puts "+ Command : \"#{sim_info[:exec].gsub( "\#\{seed\}","(seed)").gsub("\#\{@param\[:","(").gsub("\]\}",")")}\""