It would help if you'd post your script, what answers you
expected, and what answers you got.
Thanks for answering. Here it goes:
#!/usr/bin/env ruby
class OrangeTree
MSG_GROW = "Type \"year\" to grow your tree."
MSG_PICK = "Type a number to pick some more fruit. "
EXIT_TXT = "Something went wrong."
def initialize # we have one tree, does it need a name?
@heightInches = 0 # at year zero
@age = 0
@fruit = 0 # inches, work out feet and inches later
puts "Congratulations, you planted an orange tree. In a few years
it will start bearing fruit. #{@age} " # Age only for debugging.
Can take it out.
puts MSG_GROW
end
def ageOneYear
@heightInches = @heightInches +1
puts 'Height: ' + @height.to_s
@age += 1
# @age = @age + 1
puts "Got to ageOneYear. Age: #{@age}"
case( @age )
when (1..3) : puts("Your #{@age} year old tree is too young to
bear fruit yet. #{MSG_GROW}" )
when (4..29) : puts(" Age: #{@age}. Place holder until get 1..3
working." )
when (30) : puts("Your tree was very fruitful, but it
reached old age and died.")
else puts( " Something went wrong. #{EXIT_TXT}" )
end
end # def ageOneYear
def height
# returns the height end
def pick_an_orange
puts 'Got to pick_an_orange, but haven\'t defined yet'
# reduce this year count by one
end
end # class OrangeTree
# here we go countLoop = 0
tree = OrangeTree.new # assume we need to initialize it. Does it
need a name?
while countLoop < 100
countLoop += 1
puts "countLoop = #{countLoop}" # debugging.
if gets.to_s=='year' puts 'In the gets.to_s if clause' #
debugging. tree.ageOneYear
end
gets case when 'year' : tree.ageOneYear # , y as shortcut?
when (1..100) : tree.pick_an_orange
else puts('Don\'t be greedy, don\'t try to pick more than 100
oranges')
end
end # while
TextMate response. I answered 'year' to each request for input:
RubyMate r6354 running Ruby r1.8.6 (/usr/local/bin/ruby)
Congratulations, you planted an orange tree. In a few years it will
start bearing fruit. 0 Type "year" to grow your tree.
countLoop = 1
Height: Got to ageOneYear. Age: 1
Your 1 year old tree is too young to bear fruit yet. Type "year" to
grow your tree.
countLoop = 2
Height: Got to ageOneYear. Age: 2
Your 2 year old tree is too young to bear fruit yet. Type "year" to
grow your tree.
countLoop = 3
Height: Got to ageOneYear. Age: 3
Your 3 year old tree is too young to bear fruit yet. Type "year" to
grow your tree.
countLoop = 4
Height: Got to ageOneYear. Age: 4
Age: 4. Place holder until get 1..3 working.
NoMethodError: undefined method `+' for nil:NilClass
method gets
in stdin_dialog.rb at line 6
method gets
in stdin_dialog.rb at line 13
at top level
in OrangeTree.post.rb at line 58
==END TextMate response
Terminal response. All 'year' are my responses. I stopped after two
none reponses.
new-host-2:~ xxxxxx$ ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [powerpc-darwin8.9.0]
new-host-2:~ xxxxxx$ ruby "/Volumes/share/Greg/Ruby++/
OrangeTree.post.rb"
Congratulations, you planted an orange tree. In a few years it will
start bearing fruit. 0 Type "year" to grow your tree.
countLoop = 1
year
Height: Got to ageOneYear. Age: 1
Your 1 year old tree is too young to bear fruit yet. Type "year" to
grow your tree.
year
year
===End Terminal
BBEdit output. I only Cmd-R to run the script. I was never asked
for input.
Congratulations, you planted an orange tree. In a few years it will
start bearing fruit. 0 Type "year" to grow your tree.
countLoop = 1
Height: Got to ageOneYear. Age: 1
Your 1 year old tree is too young to bear fruit yet. Type "year" to
grow your tree.
countLoop = 2
Height: Got to ageOneYear. Age: 2
Your 2 year old tree is too young to bear fruit yet. Type "year" to
grow your tree.
countLoop = 3
Height: Got to ageOneYear. Age: 3
Your 3 year old tree is too young to bear fruit yet. Type "year" to
grow your tree.
countLoop = 4
Height: Got to ageOneYear. Age: 4
Age: 4. Place holder until get 1..3 working.
countLoop = 5
Height: Got to ageOneYear. Age: 5
Age: 5. Place holder until get 1..3 working.
<SNIP-SNIP>
countLoop = 100
Height: Got to ageOneYear. Age: 100
Something went wrong. Something went wrong.
===END BBEdit
TextMate was close, but I expected values for @heightInches to
increase with each iteration.
I would like it to work in BBEdit, but realize BareBones support
for this is weak. But at least Terminal should get it right. I own
BBEdit, so am reluctant to buy TextMate, particularly since it has
significant features I would like missing.
Thanks for any help.
I hope this isn't a double posting. My original was via Usenet,
then I found the Google Groups and tried to post there, but I am
not sure I am a member there. This version may be somewhat
different as I had to recreate it after realizing Google Groups
wasn't working for me.