[//000000001]: # (textutil::tabify \- Text and string utilities, macro processing)
[//000000002]: # (Generated from file 'tabify\.man' by tcllib/doctools with format 'markdown')
[//000000003]: # (textutil::tabify\(n\) 0\.7 tcllib "Text and string utilities, macro processing")
[ Main Table Of Contents | Table Of Contents | Keyword Index | Categories | Modules | Applications ]
# NAME
textutil::tabify \- Procedures to \(un\)tabify strings
# Table Of Contents
- [Table Of Contents](#toc)
- [Synopsis](#synopsis)
- [Description](#section1)
- [Bugs, Ideas, Feedback](#section2)
- [See Also](#seealso)
- [Keywords](#keywords)
- [Category](#category)
# SYNOPSIS
package require Tcl 8\.2
package require textutil::tabify ?0\.7?
[__::textutil::tabify::tabify__ *string* ?*num*?](#1)
[__::textutil::tabify::tabify2__ *string* ?*num*?](#2)
[__::textutil::tabify::untabify__ *string* ?*num*?](#3)
[__::textutil::tabify::untabify2__ *string* ?*num*?](#4)
# DESCRIPTION
The package __textutil::tabify__ provides commands that convert between
tabulation and ordinary whitespace in strings\.
The complete set of procedures is described below\.
- __::textutil::tabify::tabify__ *string* ?*num*?
Tabify the *string* by replacing any substring of *num* space chars by a
tabulation and return the result as a new string\. *num* defaults to 8\.
- __::textutil::tabify::tabify2__ *string* ?*num*?
Similar to __::textutil::tabify__ this command tabifies the *string*
and returns the result as a new string\. A different algorithm is used
however\. Instead of replacing any substring of *num* spaces this command
works more like an editor\. *num* defaults to 8\.
Each line of the text in *string* is treated as if there are tabstops
every *num* columns\. Only sequences of space characters containing more
than one space character and found immediately before a tabstop are replaced
with tabs\.
- __::textutil::tabify::untabify__ *string* ?*num*?
Untabify the *string* by replacing any tabulation char by a substring of
*num* space chars and return the result as a new string\. *num* defaults
to 8\.
- __::textutil::tabify::untabify2__ *string* ?*num*?
Untabify the *string* by replacing any tabulation char by a substring of
at most *num* space chars and return the result as a new string\. Unlike
__textutil::tabify::untabify__ each tab is not replaced by a fixed
number of space characters\. The command overlays each line in the *string*
with tabstops every *num* columns instead and replaces tabs with just
enough space characters to reach the next tabstop\. This is the complement of
the actions taken by __::textutil::tabify::tabify2__\. *num* defaults
to 8\.
There is one asymmetry though: A tab can be replaced with a single space,
but not the other way around\.
# Bugs, Ideas, Feedback
This document, and the package it describes, will undoubtedly contain bugs and
other problems\. Please report such in the category *textutil* of the [Tcllib
Trackers](http://core\.tcl\.tk/tcllib/reportlist)\. Please also report any ideas
for enhancements you may have for either package and/or documentation\.
When proposing code changes, please provide *unified diffs*, i\.e the output of
__diff \-u__\.
Note further that *attachments* are strongly preferred over inlined patches\.
Attachments can be made by going to the __Edit__ form of the ticket
immediately after its creation, and then using the left\-most button in the
secondary navigation bar\.
# SEE ALSO
regexp\(n\), split\(n\), string\(n\)
# KEYWORDS
[formatting](\.\./\.\./\.\./\.\./index\.md\#formatting),
[string](\.\./\.\./\.\./\.\./index\.md\#string),
[tabstops](\.\./\.\./\.\./\.\./index\.md\#tabstops)
# CATEGORY
Text processing