NAME
Text::FindIndent - Heuristically determine the indent style
SYNOPSIS
use Text::FindIndent;
my $indentation_type = Text::FindIndent->parse($text);
if ($indentation_type =~ /^s(\d+)/) {
print "Indentation with $1 spaces\n";
}
elsif ($indentation_type =~ /^t(\d+)/) {
print "Indentation with tabs, a tab should indent by $1 characters\n";
}
elsif ($indentation_type =~ /^m(\d+)/) {
print "Indentation with $1 characters in tab/space mixed mode\n";
}
else {
print "Indentation style unknown\n";
}
DESCRIPTION
This is an experimental distribution that attempts to intuit the
underlying indent "policy" for a text file (most likely a source code
file).
METHODS
parse
The class method "parse" tries to determine the indentation style of the
given piece of text (which must start at a new line and can be passed in
either as a string or as a reference to a scalar containing the string).
Returns a letter followed by a number. If the letter is "s", then the
text is most likely indented with spaces. The number indicates the
number of spaces used for indentation. A "t" indicates tabs. The number
after the "t" indicates the number characters each level of indentation
corresponds to. A "u" indicates that the indenation style could not be
determined. Finally, an "m" followed by a number means that this many
characters are used for each indentation level, but the indentation is
an arbitrary number of tabs followed by 0-7 spaces. This can happen if
your editor is stupid enough to do smart indentation/whitespace
compression. (I.e. replaces all indentations many tabs as possible but
leaves the rest as spaces.)
The function supports parsing of "vim" *modelines*. Those settings
override the heuristics. The modeline's options that are recognized are
"sts"/"softtabstob", "et"/"noet"/"expandtabs"/"noexpandtabs", and
"ts"/"tabstop".
Similarly, parsing of "emacs" *Local Variables* is somewhat supported.
"parse" use explicit settings to override the heuristics but uses style
settings only as a fallback. The following options are recognized:
"tab-width", "indent-tabs-mode", "c-basic-offset", and "style".
SUPPORT
Bugs should be reported via the CPAN bug tracker at
<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Text-FindIndent>
For other issues, contact the author.
AUTHOR
Adam Kennedy <adamk@cpan.org>, Steffen Mueller <smueller@cpan.org>
COPYRIGHT
Copyright 2008 Adam Kennedy,
Copyright 2008 Steffen Mueller.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included
with this module.