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("\]\}",")")}\""