module Utils::Editor::SourceLocationExtension
def source_location
def source_location filename = nil linenumber = nil if respond_to?(:to_str) if (string = to_str) =~ FILE_LINENUMBER_REGEXP filename = $1 linenumber = $2.to_i [ $1, linenumber ] else filename = string end else filename = to_s end array = linenumber ? [ filename, linenumber ] : [ filename, 1 ] array_singleton_class = class << array; self; end array_singleton_class.instance_eval do define_method(:filename) { filename } define_method(:linenumber) { linenumber } define_method(:to_s) { [ filename, linenumber ].compact * ':' } end array end