tags:

views:

156

answers:

1

Hi there,

I'm using HighLine to write my console application and I would like to modify the HighLine::Question::in_range! function so that tab completion stayed activated but that highline do not bother checking if the words typed are in the range.

So let's say I have a tab completion list like %w{app1, app2, app3}

I'd like to be able to do that in my console:

app1 -option1 value1 -option2 value2

From what I understand from the code in HighLine it appears that I would need to pass the in_range! check, so that function needs to return true.

I don't want to modify to code source HighLine directly in its file obviously. So I'm looking for a solution to be able to modify or rewrite that function on the fly in my own code. Is there a solution to do what I'm looking for?

Thanks for your time and I hope I've asked my question clearly enough.

+3  A: 

If you want to modify the in_range? method for a particular Question object x, you can do

class << x
  def in_range?
    true
  end
end

If you want to modify it for all Question objects:

class Question
  def in_range?
    true
  end
end

However, I wonder if you really need to do that in your case. I think you can simply set above, below and in to nil in your question to trivialize the in_range? check.

Paolo Capriotti
Thanks your answer solved my problem :)
Benjamin