Hey Chaps,
So far so good. I’ve a menu as shown below. So far by following the
“pick axe” I’ve been able to “hard code” all of my instance variables.
I’d like a user to enter his/her details and let his entry specify that
variable? Make sense?
#!/usr/bin/ruby
Thu Jan 5 20:41:45 GMT 2006
defining a new class for inspectors
class Inpsector
def welcome_inspector
puts “Welcome to the inspector screen”
puts “~~~~~~~ ~~ ~~~ ~~~~~~~~~ ~~~~~~”
print “0:- Inspectors, ready to enter your details?\nq:- quit!\n”
# all we want to do here is collect the inspector’s details
end
def initialize(fname, sname, company, dept, team, empno, mobileno)
# these are the instance variables @fname = fname @sname = sname @company = company @dept = dept @team = team @empno = empno @mobileno = mobileno
end
def insp_choice
print "enter your choice (0,q) : "
ip = $stdin.gets
if ip.chomp! =~ /^[0q]/
case ip
when “0”
print “Entering details capturing session\n”
when “q”
print “about to quit!\n”
end
else
print “poor choice!\n”
end
end
def to_s
“Inpsector: #@fname #@sname #@company, #@dept, #@team, #@empno,
#@mobileno\n”
end
end
todo:- replace this “hard-coded” way of enteringinstance variables
Hey Chaps,
So far so good. I’ve a menu as shown below. So far by following the
“pick axe” I’ve been able to “hard code” all of my instance
variables. I’d like a user to enter his/her details and let his
entry specify that variable? Make sense?
Can’t you just get keyboard input and initialize the object with that?
Hey Chaps,
So far so good. I’ve a menu as shown below. So far by following the
“pick axe” I’ve been able to “hard code” all of my instance
variables. I’d like a user to enter his/her details and let his
entry specify that variable? Make sense?
Some idea, in code:
class Inspector
WELCOME = <<-END_WELCOME.gsub(/^\s+/, “”).chomp
Welcome to the inspector screen
~~~~~~~ ~~ ~~~ ~~~~~~~~~ ~~~~~~
0:- Inspectors, ready to enter your details?
q:- quit!
enter your choice (0,q) :
END_WELCOME
DETAILS = %w{fname sname company dept team empno mobileno}
def initialize
DETAILS.each { |var| instance_variable_set("@#{var}", nil) }
end
def enter?( input )
case input
when “0”
true
else
false
end
end
def build
DETAILS.each do |var|
answer = yield var
instance_variable_set("@#{var}", answer) unless answer.empty?
end
end
end
if FILE == $0
inspector = Inspector.new
p inspector
print Inspector::WELCOME
if inspector.enter? $stdin.gets.to_s.chomp
puts “Entering details capturing session”
inspector.build do |var|
print "#{var}: "
$stdin.gets.to_s.chomp
end
else
puts “about to quit!”
end
p inspector
end
Hopefully that gets you going.
James Edward G. II
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.