TEXT_LINE/MULTI_TEXT_LINE

Los objetos de estas clases contienen una línea de texto para editar. Tienen almacenamiento interno para el texto, y un juego de operaciones para modificarlo. Además, proveen la maquinaria interna necesaria para manejar "marcas" (TEXT_MARK). Ver la documentación de TEXT_MARK para más detalles sobre esto.

Cada objeto de estas clase almacena un renglón de texto. El texto se pasa como un string en el momento de la creación, y puede accederse a través del atributo `text'.

Edición

El texto puede cambiarse por otro con la operación `set_text', o extenderse con `append_text'. Además, puede editarse caracter a caracter a través de las operaciones `remove', `insert_character' y `put_character'. Todas ellas trabajan con una posición numérica. No hay iteradores sobre estas clases, pero puede usarse un concepto más fuerte que es el Editor.

Notificación de cambios

La rutina `on_modification', que no hace nada, está para ser redefinida en descendientes. Esta rutina es llamada cada vez que el texto es modificado.

Texto multilínea

La clase MULTI_TEXT_LINE no es para ser instanciada directamente, sino que usualmente pertenece a un TEXT. Aunque uno normalmente no la instancia, se opera seguido con ella a través del TEXT, o de un editor posicionado sobre ella.

Contexto de la línea

Dado que una MULTI_TEXT_LINE usualmente no esta sola, tiene algunos queries para tener información de su contexto. `next' y `previous' son referencias a las líneas siguiente y anterior, si existe, `number' es la posición de la línea en el texto general, y `full_text' es el texto completo donde está la línea (un TEXT).

Edición

Además de las operaciones de TEXT_LINE, MULTI_TEXT_LINE tiene una operación `split', que parte la línea actual en dos (lo que aumenta en uno la cantidad de lineas del texto); `merge', que une la línea con la siguiente (disminuyendo en uno la cantidad de lineas del texto), y `delete', que borra el contenido de la línea y sube todas las líneas inferiores.