def prepare_line(expr, column)
set_expr_and_postfix!(expr, column){|c|
withop_re = /^.{#{c-1}}[#{OPERATOR_CHARS}]+/
if expr =~ withop_re
withop_re
else
/^.{#{c}}[\w#{OPERATOR_CHARS}]*/
end
}
recv = expr
return(__prepare_line :recv => expr.eval_string, :meth => expr.meth) if expr.eval_string
case expr
when /^(?:::)?([A-Z].*)(?:::|\.)(.*)$/
__prepare_line :klass => $1, :meth_or_constant => $2
when /^(?:::)?[A-Z]/
__prepare_line :klass => expr
when /\.([^.]*)$/
__prepare_line :recv => Regexp.last_match.pre_match, :meth => $1
when /^(.+)(\[\]=?)$/
__prepare_line :recv => $1, :meth => $2
when /[#{OPERATOR_CHARS}]+$/
__prepare_line :recv => Regexp.last_match.pre_match, :meth => $&
else
__prepare_line :recv => "self", :meth => expr
end
end