Reputation: 389
I have a function returning a string of interpolated ruby values.
def test_field_name
"#{self.test_field.test.name} #{self.result.position if self.result.sequence.results.count > 1} - #{self.test_field.name}"
end
I can't figure out how to wrap the self.result.position
in parentheses if it exists, but leave the parentheses out when it doesn't.
I'd like the two possible outputs to be:
TestName - TestFieldName
or
TestName (2) - TestFieldName
Upvotes: 1
Views: 604
Reputation: 1129
Do you really need to do this in a single line?
You could do something like the following:
def test_field_name
arr = [self.test_field.test.name]
arr << "(#{self.result.position})" if self.result.sequence.results.count > 1
arr << "- #{self.test_field.name}"
arr.join(' ')
end
But if you really want to do it in a single line, a solution could be:
def test_field_name
"#{self.test_field.test.name}#{(' (' + self.result.position + ')') if self.result.sequence.results.count > 1} - #{self.test_field.name}"
end
Upvotes: 1
Reputation: 2575
Add another method to encapsulate the logic with an if...else
branch.
def test_field_name
"#{self.test_field.test.name} #{self.result_position}- #{self.test_field.name}"
end
def result_position
self.result.sequence.results.count > 1 ? "(#{self.result.position}) " : ""
end
Upvotes: 0