Compute line(s) numbers and starting/ending columns
            from a start/end offset. All numbers start from 1.

            Not done in an efficient way

def _compute_line(source_code, start, length):
        """
            Compute line(s) numbers and starting/ending columns
            from a start/end offset. All numbers start from 1.

            Not done in an efficient way
        """
        total_length = len(source_code)
        source_code = source_code.splitlines(True)
        counter = 0
        i = 0
        lines = []
        starting_column = None
        ending_column = None
        while counter < total_length:
            # Determine the length of the line, and advance the line number
            lineLength = len(source_code[i])
            i = i + 1

            # Determine our column numbers.
            if starting_column is None and counter + lineLength > start:
                starting_column = (start - counter) + 1
            if starting_column is not None and ending_column is None and counter + lineLength > start + length:
                ending_column = ((start + length) - counter) + 1

            # Advance the current position counter, and determine line numbers.
            counter += lineLength
            if counter > start:
                lines.append(i)

            # If our advanced position for the next line is out of range, stop.
            if counter > start + length:
                break

        return (lines, starting_column, ending_column)