5.1.1.3.1. RawTextDocument

This module provides an enhancement over a standard array of characters, so called Text Buffer in this documentation. It features an API to manipulate the text buffer using line indexing and slicing.

Definition of therms used in this document:

Text Buffer

A text buffer is an object that provides the characters and implements the method __getitem__ to index or slice its content and the method __len__ to get the number of characters.

Text Document

A text document is a text buffer adapted by a RawTextDocument class featuring the line indexing and slicing.

Flat Slice

A flat slice represents an interval of character indexes. Only the sliced object know how to interpret the slice.

Line Slice

A line slice represents an interval of line indexes. The only difference with a flat slice is semantic.

Text Chunk or View

A text chunk represents a sliced text buffer.

Line

A line represents either a slice, a view or the corresponding string of characters.

class CodeReview.Diff.RawTextDocument.RawTextDocument(text_buffer)[source]

Bases: CodeReview.Diff.RawTextDocument.RawTextDocumentAbc

This class implements a Text Document.

The parameter text_buffer specifies the text buffer, cf. RawTextDocumentAbc for explanations.

light_view(slice_)[source]

Return a RawTextDocumentLightView instance for the corresponding slice.

view(slice_)[source]

Return a RawTextDocumentView instance for the corresponding slice.

class CodeReview.Diff.RawTextDocument.RawTextDocumentAbc(text_buffer, flat_slice, line_start_locations, line_separators)[source]

Bases: object

This class implements the basic function for a Text Chunk.

To get the number of characters of the chunk use the function len() and to test if the slice is empty use a Boolean evaluation of the instance.

To get the text buffer use the function str().

To get a view or light view if the light view mode is set, we can use:

text_document[slice]

The light view mode is set using the boolean attribute light_view_mode.

The parameter text_buffer specifies the text buffer. It must implement the method __getitem__ to index and slice the characters.

The parameter flat_slice specifies the flat slice corresponding to the text chunk.

The list line_start_locations contains the position of the new lines in the text chunk and the list line_separators contains the corresponding new line separators. The standard separators (\r\n, \r, \n) are supported. The list line_start_locations ends by a sentinel that corresponds to the number of characters in the text chunk and the list line_separators by an empty string. This sentinel corresponds to a virtual line at the end of the text buffer.

flat_slice()[source]

Return a copy of the flat slice corresponding to the text chunk.

flat_to_line_slice(flat_slice)[source]

Convert a flat slice to a line slice and return it.

light_view(slice_)[source]

Return a RawTextDocumentLightView instance for the corresponding slice.

Not implemented.

line_iterator(new_line_separator=True)[source]

Return an iterator on the string lines. If new_line_separator is set then the line separator is included.

line_of(location)[source]

Return the line number for the location.

line_slice_iterator(new_line_separator=True)[source]

Return an iterator on the line’s flat slices. If new_line_separator is set then the line separator is included.

line_to_flat_slice(line_slice)[source]

Convert a line slice to a flat slice and return it.

lines(new_line_separator=True)[source]

Return the list of string lines. If new_line_separator is set then the line separator is included.

substring(slice_)[source]

Return the unicode sub-string corresponding to the slice.

to_flat_slice(slice_)[source]

Ensure slice_ is a flat slice and return it.

view(slice_)[source]

Return a RawTextDocumentView instance for the corresponding slice.

Not implemented.

class CodeReview.Diff.RawTextDocument.RawTextDocumentLightView(raw_text_document, flat_slice)[source]

Bases: object

This class implements a light view on a Text Document.

A light view doesn’t feature line indexing and slicing. The memory footprint is lighter than a standard view and thus well suited for many small chunks.

To get the number of characters of the chunk use the function len() and to test if the slice is empty use a Boolean evaluation of the instance.

To get the text buffer use the function unicode().

To get a light view, we can use:

text_document[slice]

Public attributes:

flat_slice

The parameter raw_text_document specifies the text document.

The parameter flat_slice specifies the slice corresponding to the view.

substring(flat_slice)[source]

Return the sub-string corresponding to the local slice in the view.

to_document_flat_slice(flat_slice)[source]

Convert a flat slice into the view to a flat slice in the document space and return it.

view(flat_slice)[source]

Return the view corresponding to the local slice in the view.

class CodeReview.Diff.RawTextDocument.RawTextDocumentView(raw_text_document, slice_, *args)[source]

Bases: CodeReview.Diff.RawTextDocument.RawTextDocumentAbc

This class implements a view on a Text Document.

The parameter raw_text_document specifies the text document.

The parameter slice_ specifies the slice corresponding to the view, it can be either a flat ro a line slice.

The remaining parameters are those of the RawTextDocumentAbc.__init__() method.

Public attributes:

slice

is a copy of the slice passed as argument.

is_line_view()[source]

Test if it is a line slice.

substring(slice_)[source]

Return the sub-string corresponding to the local slice in the view.

to_document_flat_slice(slice_)[source]

Convert a slice into the view to a flat slice in the document space and return it.

to_document_slice(slice_)[source]

Convert a slice into the view to a slice in the document space and return it. This method tries to keep the type of slice.

view(slice_)[source]

Return the view corresponding to the local slice in the view.